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



13.6Индекс в общей памяти Posix, блокировка с помощью семафора Posix в памяти
А.19Измерение производительности: блокировка взаимным исключением между потоками
А.22Измерение производительности: блокировка чтения-записи между потоками
А.23Измерение производительности: блокировка между потоками с помощью семафоров Posix в памяти
А.25Измерение производительности: блокировка между потоками с помощью именованных семафоров Posix
А.28Измерение производительности: блокировка между потоками с помощью семафоров System V
А.29Измерение производительности: блокировка между потоками с помощью fcntl
А.33Измерение производительности: блокировка между процессами с помощью взаимных исключений

Упражнения

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

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

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

ГЛАВА 2

Posix IPC

2.1. Введение

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

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

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

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

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

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


Таблица 2.1. Функции Posix IPC

Очереди сообщенийСемафорыОбщая память
Заголовочный файл
Функции для создания, открытия и удаленияmq_open mq_close mq_unlinksem_open sem_close sem_unlink sem_init sem_destroyshm_open shm_unlink
Операции управленияmq_getattr mq_setattrftruncate fstat
Операции IPCmq_send mq_receive mq_notifysem_wait sem_trywait sem_post sem_getvaluemmap munmap

2.2. Имена IPC

В табл. 1.2 мы отметили, что три типа IPC стандарта Posix имеют идентификаторы (имена), соответствующие этому стандарту. Имя IPC передается в качестве первого аргумента одной из трех функций: mq_open, sem_open и shm_open, причем оно не обязательно должно соответствовать реальному файлу в файловой системе. Стандарт Posix.1 накладывает на имена IPC следующие ограничения: