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

3.  SEND_ANSWER (ответ, [буфер])

Ответ помещается в буфер в котором находилось сообщение. Если отправитель ждал ответ, то он разблокируется.

4.  WAIT_ANSWER (ответ, буфер)

Процесс блокируется до тех пор, пока ответ не поступает.

Основные достоинства использования почтовых ящиков:

+ простота, привычный механизм обмена сообщениями.

+ почтовые ящики могут служить синхронизаторами.

+ получатель и отправитель достаточно независимы друг от друга (т. е могут ждать, а могут и не ждать)

Программные каналы (pipe)

Это другое средство передачи сообщения от одного процесса к другому. Иногда называют конверторами. Они характеризуются следующим:

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

 

2.  Для реализации канала система использует файлы на диски, но отождествлять канал именно с файлом нельзя. Процессы по сути дела не знают не о каком файле и используют для передачи сообщения "писать" и "читать". При этом один процесс может только читать, а другой только писать. Чтобы передавать сообщения в обратном направлении, нужен другой канал.

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

Лекция 9. (15.10.02)

1.  CREAT PIPE (WRITE HANDLE, READ HANDLE, PIPE SIZE)

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

2.  READ (READ HANDLE, BYTESREAD)

Оператор чтения из канала указывает число байт, которое намереваются прочесть.

3.  WRITE (WRITE HANDLE, BYTE WRITE)