Лекции по операционным системам, страница 12

Очереди сообщений

Это механизм, предназначенный для передачи информации от одного процесса к другому.

Очередь сообщений, несмотря на то, что по своему  виду напоминает программный канал, но существенно от него отличается. Сходство в том, что можно посылать читателям целый поток сообщений.  Вторым сходством каналов и очереди является то, что передача сообщений происходит только в одном направлении, т.е. от писателя к читателю. Если нужно передать сообщение обратно, то нужно установить вторую очередь.

С точки зрения реализации очередь и каналы различаются.

  1. В отличие от канала, в котором обмениваются сообщениями только 2 процесса, в очереди обмен может происходить между многими процессами.
  2. Если для организации канала используется файл PIPE, то в очередях выделяется сегмент оперативной памяти.
  3. Любой процесс «Читатель» может читать сообщения выборочно, т.е. не в том порядке в каком они стоят в очереди, при этом если канал работает по принципу FIFO, то очередь использует 4 разных принципа (FIFO, LIFO, приоритетной выборки, произвольная выборка)
  4. После того как сообщения, каким- либо процессом- читателем прочитано, оно не удаляется из очереди и может читаться этим процессом или другим.
  5. Если в каналах непосредственно передаются данные, т.е. сообщения, то в очереди в действительности передаются не сообщения, а только адреса местоположения этих сообщений, с указанием размеров, т. е. Длин сообщений.

Число и синтаксис операторов управления очередью резко отличаются в разных ОС. Перечислим возможные функции операторов:

  1. Создание новой очереди.
  2. Открыть существующую очередь (такой оператор используется «читателем» для установления связи с очередью).
  3. Читать без удаления.
  4. Читать с удалением из очереди.
  5. Добавление сообщений в очередь.
  6. Завершение использования очереди.
  7. Определение числа сообщений в очереди. И др. различные операторы.

В качестве параметров может быть большое разнообразие: