Лекции / 3. IPC
.pdfОчереди сообщений
•позволяют процессам и потокам обмениваться структурированными сообщениями;
• являются глобальными средствами коммуникаций для процессов, так как каждая очередь в пределах ОС имеет уникальное имя.
Почтовые ящики
Почтовые ящики обеспечивают только однонаправленные соединения.
Сокеты
Каждый процесс может создать слушающий сокет (серверный сокет) и привязать его к какому-нибудь порту операционной системы.
Слушающий процесс обычно находится в цикле ожидания и просыпается при появлении нового соединения. При этом сохраняется возможность проверить наличие соединений на данный момент, установить тайм-аут для операции и т.д.
Каждый сокет имеет свой адрес. Обычно клиент явно подсоединяется к слушателю, после чего любое чтение или запись через его файловый дескриптор будут передавать данные между ним и сервером.
Сокеты можно также использовать для соединения процессов на одной и той же машине. Изначально были разработаны для Berkeley UNIX. Некоторая часть кода и структур данных Berkeley и до нынешнего дня присутствует в Windows.
Основные функции
Общие
Socket
Send
Receive
Close
Серверные
Bind
Listen
Accept
Клиентские
Connect
Создать новый сокет и вернуть файловый дескриптор
Отправить данные по сети Получить данные из сети Закрыть соединение
Связать сокет с IP-адресом и портом
Объявить о желании принимать соединения. Слушает порт и ждет когда будет установлено соединение
Принять запрос на установку соединения
Установить соединение
Потоковый (SOCK_STREAM) Устанавливает соединение Гарантирует доставку данных Гарантирует порядок доставки пакетов Гарантирует целостность пакетов Разбивает сообщение на пакеты Контролирует поток данных
Дейтаграммный (SOCK_DGRAM) Нет
Нет в случае UDP
Нет в случае UDP Тоже Нет Нет
Разделяемая
Виртуальное адресное |
Виртуальное адресное |
пространство процесса |
пространство процесса |
1 |
2 |
|
Совместно |
|
используем |
|
ая |