Теоретическая классификация видов взаимодействия процессов: почтовые ящики, конвейеры.

Конвейер (канал) PIPE.
Канал предназначен для обмена сравнительно небольшими объемами данных между процессами. Принцип работы конвейера основан на механизме ввода/вывода, который используется для работы с файлами. Процесс-передатчик записывает с помощью функции write(2), а приемник читает с помощью функции read(2). При этом информация представляется в виде потока байт. Конвейер всегда однонаправленный. По сути это файл особого типа, расположенный не на диске, а в памяти. По историческим причинам размер буфера в ОС Unix ограничен 64 Кбайтами. Буфер работает по принципу FIFO, работает циклически (т.е. замкнут в кольцо).


Если хвост догоняет голову, то информации нет. Если голова догоняет хвост, то буфер переполнен.
Конвейер – еще один вид системного ресурса.

Достоинства:
1)За организацией циклического буфера следит ОС
2)Работа ведется как с файлами, но скорость выше, чем у файлов.
Недостаток: Ограниченный размер буфера.
В ОС Windows конвейера нет.
Почтовые ящики:
      Обеспечивают обмен сообщениями. Состоят из информации о данном почтовом ящике и буферов сообщений.
      Почтовый ящик может быть привязан к процессу-получателю, процессу-отправителю, к паре взаимодействующих процессов, и может быть именованным.
      В простейшем случае почтовый ящик работает только в одном направлении. Отправитель отсылает сообщение и будучи не связанным требованиями синхронизации, продолжает свою работу. Получатель периодически заглядывает в почтовый ящик и забирает почту.
      Возможны варианты, когда получатель входит в режим ожидания, если ящик пуст, а отправитель входит в режим ожидания если почтовый ящик полон.
      Возможен вариант использования сообщений с уведомлением о доставке.
     
Имеются 4 стандартные операции с почтовым ящиком:
1)    Send message
2)    Wait message
3)    Send answer
4)    Wait answer

Достоинства способа:
1)    Процессу не нужно знать о существовании других процессов, пока он не получит от них сообщение.
2)    Два процесса могут обмениваться более чем одним сообщением за один раз.
3)    Операционная система может гарантировать приватность сообщений.
4)    Очередь буферов позволяет отправителю продолжать работу, не ожидая получателя.
Недостатки способа:
1)    Низкая суммарная скорость передачи данных.

2)    Возможность переполнения буферов.

Комментариев нет:

Отправить комментарий