Межпроцессное взаимодействие в FreeBSD организовано в коммуникационные домены. Важнейшие домены, поддерживаемые в настоящее время, включают локальный домен для взаимодействия процессов, выполняющихся на одной машине; домен IPv4 для взаимодействия процессов с использованием набора протоколов TCP/IP (четвертой версии) и домен IPv6, который является новейшей версией протоколов Интернета.
В пределах домена коммуникация осуществляется между конечными точками, известными как сокеты. Системный вызов socket создает сокет и возвращает дескриптор; другие системные вызовы описаны в главе 11. У каждого сокета есть тип, который определяет его семантику взаимодействия; эта семантика включает такие свойства, как надежность, порядок и предотвращение дублирования сообщений.
У каждого сокета есть связанный с ним коммуникационный протокол. Этот протокол предоставляет семантику, необходимую сокету в соответствии с его типом. Приложения при создании сокета могут запрашивать определенный протокол или могут разрешить системе выбрать протокол, подходящий для создаваемого типа сокета.
Сокеты могут быть привязаны к адресам. Форма и значение адресов сокетов зависят от коммуникационного домена, в котором создается сокет. Привязка имени к сокету в локальном домене вызывает создание файла в файловой системе.
Обычные данные, передаваемые и получаемые через сокеты, не типизированы. За представление данных отвечают библиотеки, построенные поверх средств межпроцессного взаимодействия.
Реализация сетевых средств в UNIX до 4.2BSD обычно работала посредством перегрузки интерфейсов символьных устройств. Одной из целей интерфейса сокетов было дать возможность простым программам работать без изменений в соединениях в стиле потоков. Такие программы могут работать, лишь если системные вызовы read и write не изменены. Поэтому оригинальные интерфейсы были оставлены нетронутыми и могли работать с сокетами для потоков. Для более сложных сокетов были добавлены новые интерфейсы, такие, как сокеты, использующиеся для отправки дейтаграмм, в которых адрес назначения должен был указываться в каждом вызове send.
Другим преимуществом является то, что новый интерфейс легко переносимый. Реализации API-сокетов существуют для почти каждой современной операционной системы, включая те, которые сильно отличаются от UNIX.
FreeBSD поддерживает также несколько локальных механизмов IPC, не связанных с работой в сети, включая семафоры, очереди сообщений и разделяемую память.
- 19/05/2010 02:34 - Вход в ядро
- 18/05/2010 21:00 - Выполнение системного вызова
- 18/05/2010 12:57 - Организация времени выполнения
- 18/05/2010 04:22 - Системный вход
- 17/05/2010 20:11 - Работа системы
- 15/05/2010 13:20 - Укорачивание файлов
- 14/05/2010 19:10 - Идентификация файла
- 13/05/2010 11:56 - Разбросанный ввод/вывод
- 21/03/2010 15:36 - Избежание перегрузки с помощью медленного старта
- 12/01/2010 06:53 - Передача информации ядру и от ядра. Вызов sysctl conf в FreeBSD.