UNIX: взаимодействие процессов - страница 12

Шрифт
Интервал

стр.

Другим свойством каждого типа IPC является пространство имен, определяющее идентификацию объектов IPC процессами и потоками, использующими его. Некоторые объекты не имеют имен (каналы, взаимные исключения, условные переменные, блокировки чтения-записи), другие обладают именами в рамках файловой системы (каналы 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Использует popen и 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
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
А.33Измерение производительности: блокировка между процессами с помощью взаимных исключений

Упражнения

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

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


стр.

Похожие книги