Механизмы межпроцессных взаимодействий в операционной системе Unix

Традиционный подход ОС UNIX - реакция на сложности Multics Возникшие проблемы

Избыточный набор системных средств, предназначенных для обеспечения возможности взаимодействия и синхронизации процессов, которые не обязательно связаны отношением родства

Пакет средств IPC Общие свойства всех трех механизмов:

Разделяемая память

shmget создает новый сегмент разделяемой памяти или находит существующий сегмент с тем же ключом

shmat подключает сегмент с указанным дескриптором к виртуальной памяти обращающегося процесса

shmdt отключает от виртуальной памяти ранее подключенный к ней сегмент с указанным виртуальным адресом начала

shmctl служит для управления параметрами, связанными с существующим сегментом

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

shmid = shmget(key, size, flag);

size определяет желаемый размер сегмента в байтах

virtaddr = shmat(id, addr, flags); shmdt(addr); shmctl(id, cmd, shsstatbuf);

Семафоры

Обобщение классического механизма семафоров общего вида Диекстры. Целесообразность обобщения сомнительна. Обычно использовался облегченный вариант двоичных семафоров. Известен алгоритм реализации семафоров общего вида на основе двоичных.

Семафор в ОС UNIX:

Три системных вызова:

id = semget(key, count, flag); oldval = semop(id, oplist, count);
© Copyright ZooM. All Rights Reserved. Created By XVilka, 2005. Hosted by www.NAROD.ru