Здавалка
Главная | Обратная связь

Примитивы межпроцессного взаимодействия

1. Сигналы

2. Каналы

3. FIFO (именованные каналы)

4. Сообщения (очереди сообщения)

5. Семафоры

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

Сигналы

Сигналы изначально были предложены как средство уведомления об ошибках, но могут быть использованы как простейшие средства взаимодействия между процессами (синхронизация процессов) или передачи команд от одного процесса к другому.

Использование сигналов ограничено, так как сигналы очень ресурсоемкие. Отправка сигнала требует системного вызова, а его доставка, прерывание процессов получателя.

Каналы

Каналы-это среда для передачи данных. Недостаток каналов в том, что они могут быть использованы только для передачи файлов между родственными процессами. Каналы не могут использоваться в качестве межпроцессного взаимодействия между независимыми процессами.

FIFO

FIFO (первый вошел-первый вышел) очень похожи на каналы, но у них есть имена, что дает возможность использовать их для организации взаимодействия независимых процессах.

Именованные каналы работают по следующим правилам:

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

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

3. Если канал пуст и не один из процессов не открыл его на запись, при чтении из каналов будет получено 0 байтов. Если один или более процессов открыли канал для записи вызов чтения будет заблокирован для чтения.

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

5. При записи большего числа байтов чем дозволяет канл, вызов «запись» блокируется до освобождения требуемого места.

Сообщения

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

Семафоры

Используются для синхронизации процессов, а точнее для синхронизации доступа нескольких процессов к разделяемым ресурсам. Они не предназначены для передачи больших объемов данных. Семафоры разрешают или запрещают использование какого-либо разделяемого ресурса.

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

Примерный способ работы с разделяемой памятью:

1. Сервер получает доступ к разделяемой памяти, используя семафоры.

2. Сервер производит запись данных в разделяемою память.

3. После завершения записи данных сервер освобождает разделяемую память с помощью семафоры.

4. Клиент получает доступ к разделяемой памяти, забирая ресурс с помощью семафоры.

5. Клиент производит чтение данных из разделяемой памяти и освобождает ее с помощью семафоры.

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.