Статья: Механизмы межпроцессных взаимодействий в операционной системе Unix
изменение его состояния
уничтожение очереди сообщений
Программные каналы
Создание неименованного программного канала
pipe(fdptr);
fdptr - это указатель массива из двух целых чисел для размещения дескриптора для чтения из программного канала (с помощью read) и записи в программный канал (с помощью write)
обычные дескрипторы файлов
два элемента таблицы открытых файлов процесса
Создание именованных программных каналов (или получение доступа к существующим)
Обычный системный вызов open
если канал открывается на запись, и ни один процесс не открыл его для чтения, то процесс блокируется до тех пор, пока некоторый процесс не откроет этот канал для чтения
аналогично обрабатывается открытие для чтения
имеется флаг NO_DELAY
Запись и чтение: read и write
при записи данные помещаются в начало канала
при чтении выбираются из конца канала
возможны откладывания процессов
Окончание работы процесса: close
при выполнении последнего закрытия канала по записи все процессы, ожидающие чтения из программного канала, активизируются с возвратом кода ошибки из системного вызова
Программные гнезда (sockets)
Поддерживаемый ядром механизм, скрывающий особенности сетевой среды и позволяющий единообразно взаимодействовать процессам
выполняющимся на одном компьютере
в пределах одной локальной сети
разнесенным на разные компьютеры территориально распределенной сети
Первое решение:
UNIX BSD 4.1 в 1982 г.
Три составляющих:
компонент уровня программных гнезд (независящий от сетевого протокола и среды передачи данных)
компонентом протокольного уровня (независящий от среды передачи данных)