Операционные системы. Замятин А.В - 89 стр.

UptoLike

Составители: 

89
4.1.4. Механизмы межпроцессного взаимодействия в ОС Unix
При решении задачи синхронизации процессов и их взаимодейст-
вия посредством различных механизмов, предоставляемых ОС, может
потребоваться использование следующих системных вызовов:
создание, завершение процесса, получение информации о про-
цессе: fork, exit, getpid, getppid и т. д.;
синхронизация процессов: signal, kill, sleep, alarm, wait, paus),
semop, semctl, semcreate и т. д.;
создание информационного канала, разделяемой памяти, оче-
реди сообщений и работа с ними: pipe, mkfifo, read, write, msgget, shmget,
msgctl, shmctl и т. д.
Механизм межпроцессного взаимодействия (Inter-Process Commu-
nication Facilities IPC) включает
средства, обеспечивающие возможность синхронизации про-
цессов при доступе к совместно используемым ресурсам, семафоры
(semaphores);
средства, обеспечивающие возможность посылки процессом
сообщений другому произвольному процессу, очереди сообщений
(message queries);
средства, обеспечивающие возможность наличия общей для
процессов памяти, сегменты разделяемой памяти (shared memory
segments);
средства, обеспечивающие возможность «общения» процессов,
как родственных, так и нет, через пайпы или каналы (pipes).
Наиболее общим понятием IPC является ключ, хранимый в обще-
системной таблице и обозначающий объект межпроцессного взаимо-
действия, доступный нескольким процессам. Обозначаемый ключом
объект может быть очередью сообщений, набором семафоров или сег-
ментом разделяемой памяти. Ключ имеет тип key-t, состав которого за-
висит от реализации и определяется в файле <sys/types.h>. Ключ ис-
пользуется для создания объекта межпроцессного взаимодействия или
получения доступа к существующему объекту.
Семафоры
Для работы с семафорами поддерживаются три системных вызова:
semget для создания и получения доступа к набору семафоров;
semop для манипулирования значениями семафоров (систем-
ный вызов, который позволяет процессам синхронизоваться на основе
использования семафоров);
semctl для выполнения разнообразных управляющих опера-
ций над набором семафоров.