Виды межпроцессорного обмена
Все процессы в ОС обмениваются между собой какой-либо информацией. В ОС существует несколько видов межпроцессного обмена, а точнее сказать средств межпроцессного взаимодействия (Interprocess Communication, IPC), которые можно разбить на несколько уровней.
Локальный уровень
Локальный вид межпроцессного обмена привязан к процессору и возможен только в пределах физического компьютера.
Сигналы
Сигналы в ОС генерируются следующими процессами:
- с терминала, нажатием специальных клавиш или их комбинаций (например, нажатие Ctrl+C генерирует SIGINT, а Ctrl-Z SIGTSTP);
- ядром системы:
- при возникновении аппаратных исключений (недопустимых инструкций, нарушениях при обращении в память, системных сбоях и т.п.);
- при ошибочных системных вызовах;
- для информирования о событиях ввода-вывода;
- одним процессом другому (или самому себе) с помощью системного вызова
kill(), в том числе из shell утилитой/bin/kill.
Примечание – Сигнал – это асинхронное уведомление процесса о каком-либо событии. Когда сигнал послан процессу, ОС прерывает выполнение процесса. Если процесс установил собственный обработчик сигнала, ОС запускает этот обработчик, передав ему информацию о сигнале. Если процесс не установил обработчик, то выполняется обработчик по умолчанию. Все сигналы начинаются на "SIG…" и имеют числовые соответствия, определяемые в заголовочном файле
signal.h. Утилитаkillпозволяет задавать сигнал как числом, так и символьным обозначением.
Разделяемая память
Разделяемую память применяют для того, чтобы увеличить скорость прохождения данных между процессами. В обычной ситуации обмен информацией между процессами проходит через ядро. Техника разделяемой памяти позволяет осуществить обмен информацией не через ядро, а используя некоторую часть виртуального адресного пространства, куда помещаются и откуда считываются данные.
После создания разделяемого сегмента памяти любой из пользовательских процессов может подсоединить его к своему собственному виртуальному пространству и работать с ним, как с обычным сегментом памяти.
Очереди сообщений
В общих чертах обмен сообщениями выглядит примерно так: один процесс помещает сообщение в очередь посредством неких системных вызовов, а любой другой процесс может прочитать его оттуда, при условии, что и процесс-источник сообщения, и процесс-приемник сообщения используют один и тот же ключ для получения доступа к очереди.
Удаленные
Вызовы процедур
RPC (Remote Procedure Calls) – разновидность технологий, которая позволяет компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC технологии включает в себя два компонента: сетевой протокол (чаще TCP и UDP, реже HTTP) для обмена в режиме клиент-сервер и язык сериализации объектов (или структур для необъектных RPC).
Межпроцессорное взаимодействие
DBus (Desktop Bus) – это система межпроцессного взаимодействия (IPC), предназначенная для обмена данными и вызова методов между процессами в рабочем столе ОС. Вот несколько ключевых аспектов, описывающих DBus и его применение:
- Межпроцессное взаимодействие:
- Клиент-Серверная модель – обеспечивает клиент-серверную модель взаимодействия. Система включает шину сообщений, к которой подключены как клиентские, так и серверные процессы.
- Отправка сообщений – процессы могут отправлять сообщения друг другу через шину DBus. Сообщения содержат данные, сигналы и запросы на вызов методов.
- Шина системы и шина сеанса:
- Шина системы – для взаимодействия между системными службами и процессами. Она используется для обмена данными на уровне всей системы.
- Шина сеанса – для взаимодействия между процессами, принадлежащими конкретному пользовательскому сеансу.
- Уведомления и службы:
- Системные службы – для предоставления функциональности и обмена информацией, например NetworkManager,
systemdи другие. - Уведомления – для отправки уведомлений и обновлений между приложениями и компонентами рабочего стола.
- Системные службы – для предоставления функциональности и обмена информацией, например NetworkManager,
- Широкое использование в среде рабочего стола:
- Интеграция приложений – облегчает интеграцию различных приложений и компонентов рабочего стола, например для управления звуковыми настройками, обмена файлами, получения уведомлений и т.д.
- Контроль за сеансом – позволяет управлять параметрами сеанса, такими как настройки энергосбережения, языковые предпочтения и т.д.
- Стандартизация и расширяемость:
- Стандарты сообщений – существуют стандарты сообщений для определенных функций, таких как стандарты
Freedesktop.org, что обеспечивает согласованный подход к взаимодействию между приложениями и службами. - Расширяемость – поддерживает расширение функциональности через добавление новых интерфейсов и объектов, что делает его гибким и расширяемым.
- Стандарты сообщений – существуют стандарты сообщений для определенных функций, таких как стандарты
Сокеты
Сокеты представляют собой виртуальный объект, который существует, пока на него ссылается хотя бы один из процессов. Сокеты бывают двух типов: локальные и сетевые.
При использовании локального сокета ему присваивается UNIX-адрес и просто будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём простого чтения/записи из него. При использовании сетевого сокета создается абстрактный объект, привязанный к слушающему порту ОС и сетевому интерфейсу, которому присваивается INET-адрес.