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

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

стр.

Тип IPCPosix.1 1996Unix 98
Программный каналОбязателенОбязателен
FIFOОбязателенОбязателен
Взаимное исключение Posix_POSIX_THREADSОбязателен
Условная переменная Posix_POSIX_THREADSОбязателен
Взаимные исключения и условные переменные между процессами_POSIX_THREADS_PROCESS_SHAREDОбязателен
Блокировка чтения-записи Posix(He определен)Обязателен
Блокировка записей fcntlОбязателенОбязателен
Очередь сообщений Posix_POSIX_MESSAGE_PASSING_XOPEN_REALTIME
Семафоры Posix_POSIX_SEMAPHORES__XOPEN_REALTIME
Память с общим доступом Posix_POSIX_SHARED_MEMORY_OBJECTS_XOPEN_REALTIME
Очередь сообщений System V(He определен)Обязателен
Семафор System V(He определен)Обязателен
Память с общим доступом System V(He определен)Обязателен
Двери (doors)(He определен)(Не определен)
Удаленный вызов процедур Sun(He определен)(Не определен)
Отображение памяти mmap_POSIX_MAPPED_FILES или POSIX_SHARED_MEMORY_OBJECTSОбязателен
Сигналы реального времени (realtime signals)_POSIX_REALTIME_SIGNALS_XOPEN_REALTIME

1.5. Действие команд fork, exec и exit на объекты IPC

Нам нужно достичь понимания действия функций fork, exec и _exit на различные формы IPC, которые мы обсуждаем (последняя из перечисленных функций вызывается функцией exit). Информация по этому вопросу сведена в табл. 1.4.

Большинство функций описаны далее в тексте книги, но здесь нужно сделать несколько замечаний. Во-первых, вызов fork из многопоточного процесса (multithreaded process) приводит к беспорядку в безымянных переменных синхронизации (взаимных исключениях, условных переменных, блокировках и семафорах, хранящихся в памяти). Раздел 6.1 книги [3] содержит необходимые детали. Мы просто отметим в добавление к таблице, что если эти переменные хранятся в памяти с общим доступом и создаются с атрибутом общего доступа для процессов, они будут доступны любому процессу, который может обращаться к этой области памяти. Во-вторых, три формы IPC System V не могут быть открыты или закрыты. Из листинга 6.6 и упражнений 11.1 и 14.1 видно, что все, что нужно знать, чтобы получить доступ к этим трем формам IPC, — это идентификатор. Поэтому они доступны всем процессам, которым известен этот идентификатор, хотя для семафоров и памяти с общим доступом требуется некая особая обработка.


Таблица 1.4. Действие fork, exec и _exit на IPC

Тип IPCforkexec_exit
Неименованные и именованные каналыПорожденный процесс получает копии всех дескрипторов родительского процессаВсе открытые дескрипторы остаются открытыми, если для них не установлен бит FD_CLOEXECВсе открытые дескрипторы закрываются, данные из программного канала и FIFO удаляются после последнего закрытия
Очереди сообщений PosixПорожденный процесс получает копии всех открытых родительских процессовВсе открытые дескрипторы очередей сообщений закрываютсяВсе открытые дескрипторы очередей сообщений закрываются
Очереди сообщений System VНе действуетНе действуетНе действует
Взаимные исключения и условные переменные PosixОбщий доступ, если используется разделяемая память с атрибутом разделения между процессамиИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделенияИсчезает, если не находится в разделяемой памяти, которая остается открытой и имеет атрибут разделения
Блокировки чтения-записи PosixОбщий доступ, если используется память с общим доступом и атрибутом разделения между процессамиИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделенияИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделения
Семафоры Posix, хранящиеся в памятиОбщий доступ, если используется память с общим доступом и атрибутом разделения между процессамиИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделенияИсчезает, если не хранится в разделяемой памяти, которая остается открытой и имеет атрибут разделения
Именованные семафоры PosixВсе открытые в родительском процессе остаются открытыми в порожденномВсе открытые закрываютсяВсе открытые закрываются
Семафоры System V

стр.

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