Главная страница  Взаимодействие нетривиальных процессов 

1 2 3 4 5 6 7 [ 8 ] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

ках файловой системы (каналы FIFO), третьи характеризуются тем, что в главе 2 названо именами IPC стандарта Posix , а четвертые - еще одним типом имен, который описан в главе 3 (ключи или идентификаторы IPC стандарта System V). Обычно сервер создает объект IPC с некоторым именем, а клиенты используют это имя для получения доступа к объекту.

В исходных кодах, приведенных в книге, используются функции-обертки, описанные в разделе 1.6, позволяющие уменьшить объем кода, обеспечивая, тем не менее, проверку возврата ошибки для любой вызываемой функции. Имена всех функций-оберток начинаются с заглавной буквы.

Стандарты IEEE Posix - Posix. 1, определяющий основы интерфейса С в Unix, и Posix.2, определяющий основные команды, - это те стандарты, к которым движутся большинство производителей. Однако стандарты Posix в настоящее время быстро поглощаются (включаются в качестве части) и расширяются коммерческими стандартами, в частности The Open Group (Unix 98).

Таблица 1.5. Версии модели клиент-сервер

Листинг Описание

4.1 Два канала между родительским и порожденным процессами

4.5 Использует рореп и cat

4.6 Использует два канала FIFO между родительским и порожденным процессами

4.7 Два канала FIFO между независимым сервером и неродственным клиентом 4.10 Каналы FIFO между независимым последовательным сервером и несколькими

клиентами

4.12 Программный канал или FIFO: формирование записей в потоке байтов

6.7 Две очереди сообщений System V

6.12 Одна очередь сообщений System V с несколькими клиентами

6.16 Одна очередь сообщений System V для каждого клиента; клиентов несколько

15.15 Передача дескриптора через дверь

Таблица 1.6. Версии модели производитель-потребитель

Листинг Описание

7.1 Взаимное исключение, несколько производителей, один потребитель

7.5 Взаимное исключение и условная переменная, несколько производителей, один

потребитель

10.8 Именованные семафоры Posix, один производитель, один потребитель

10.11 Семафоры Posix в памяти, один производитель, один потребитель

10.12 Семафоры Posix в памяти, несколько производителей, один потребитель 10.15 Семафоры Posix в памяти, несколько производителей, несколько потребителей 10.18 Семафоры Posix в памяти, один производитель, один потребитель: несколько

буферов

Таблица 1.7. Версии программы с увеличением последовательного номера

Листинг Описание

9.1 Индекс в файле, без блокировки

9.3 Индекс в файле, блокировка с помощью fcntl

- продолжение



Упражнения

1. На рис 1.1 изображены два процесса, обращающиеся к одному файлу. Если оба процесса только дописывают данные к концу файла (возможно, длинного), какой нужен будет тип синхронизации?

2. Изучите заголовочный файл <еггпо. h> в вашей системе и выясните, как определена еггпо.

3. Дополните табл. 1.3 используемыми вами функциями, поддерживаемыми Unix-системами.

Таблица 1.7 (продолжение)

Листинг Описание

9.9 Индекс в файле, блокировка с использованием функции open

10.10 Индекс в файле, блокировка с помощью именованного семафора Posix

12.2 Индекс в общей памяти mmap, блокировка с помощью именованного семафора Posix

12.3 Индекс в общей памяти mmap, блокировка с помощью семафора Posix в памяти

12.4 Индекс в неименованной общей памяти 4.4BSD, блокировка с помощью именованного семафора Posix

12.5 Индекс в общей памяти SVR4 /dev/zero, блокировка с помощью именованного семафора Posix

13.6 Индекс в общей памяти Posix, блокировка с помощью семафора Posix в памяти А. 19 Измерение производительности: блокировка взаимным исключением между

потоками

А.22 Измерение производительности; блокировка чтения-записи между потоками

А.23 Измерение производительности: блокировка между потоками с помощью семафоров

Posix в памяти

А.25 Измерение производительности: блокировка между потоками с помощью

именованных семафоров Posix А.28 Измерение производительности: блокировка между потоками с помощью семафоров

System V

А.29 Измерение производительности: блокировка между потоками с помощью fcntl

А.ЗЗ Измерение производительности: блокировка между процессами с помощью взаимных

исключений



ГЛАВА 2

Posix IPC

2.1. Введение

Из имеющихся типов IPC следующие три могут быгь отнесены к Posix IPC, то есть к методам взаимодействия процессов, соответствующим стандарту Posix:

Ш очереди сообщений Posix (глава 5);

ш семафоры Posix (глава 10);

ш разделяемая память Posix (глава 13).

Эти три вида IPC обладают общими свойствами, и для работы с ними используются похожие функции. В этой главе речь пойдет об общих требованиях к полным именам файлов, используемых в качестве идентификаторов, о флагах, указываемых при открытии или создании объектов IPC, и о разрещениях на доступ к ним.

Полный список функций, используемых для работы с данными типами IPC, приведен в табл. 2.1.

2.2. Имена IPC

в табл. 1.2 мы отметили, что три типа IPC стандарта Posix имеют идентификаторы (имена), соответствующие этому стандарту. Имя IPC передается в качестве первого аргумента одной из трех функций: iiK open, seffl open и shffl open, причем оно не обязательно должно соответствовать реальному файлу в файловой системе. Стандарт Posix.l накладывает на имена IPC следующие ограничения;

ш Имя должно соответствовать существующим требованиям к именам файлов (не превышать в длину РАТН МАХ байтов, включая завершающий символ с кодом 0).

ш Если имя начинается со слэша (/), вызов любой из этих функций приведет к обращению к одной и той же очереди. В противном случае результат зависит от реализации.

ш Интерпретация дополнительных слэшей в имени зависит от реализации.



1 2 3 4 5 6 7 [ 8 ] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.