Книга: Операционная система UNIX
Сравнение различных систем межпроцессного взаимодействия
Сравнение различных систем межпроцессного взаимодействия
Заканчивая разговор о межпроцессном взаимодействии в UNIX, приведем сводную сравнительную таблицу рассмотренных систем.
Каналы | FIFO | Сообщения | Разделяемая память | Сокеты (домен UNIX) | |
---|---|---|---|---|---|
Пространство имен | — | Имя файла | Ключ | Ключ | Имя файла |
Объект | Системный канал | Именованный канал | Очередь сообщений | Разделяемая область памяти | Коммуникационный узел |
Создание объекта | pipe() |
mknod() |
msgget() |
shmget() |
socket() |
Связывание | pipe() |
open() |
msgget() |
shmat() |
bind() connect() |
Передача данных | read() write() |
read() write() |
msgrcv() msgsnd() |
Непосредственный доступ memcpy() |
read() write() recv() send() recvfrom() sendto() |
Уничтожение | close() |
close() unlink() |
msgctl() |
shmdt() |
close() unlink() |
Если говорить о производительности IPC, то наиболее быстрым способом передачи данных между неродственными процессами является разделяемая память. Разделяемая память является частью адресного пространства для каждого из взаимодействующих процессов, поэтому чтение и запись в эту область неотличимы, например, от чтения и записи в область собственных данных процесса. Однако при использовании разделяемой памяти необходимо обеспечить синхронизацию процессов. При использовании семафоров, необходимо иметь в виду следующие обстоятельства:
? Применение семафоров может увеличить число процессов в очереди на выполнение, поскольку несколько процессов, ожидающих разрешающего сигнала семафора, будут одновременно разбужены и переведены в очередь на выполнение.
? Применение семафоров увеличивает число переключений контекста, что, в свою очередь, увеличивает нагрузку на систему.
? В то же время, использование семафоров является наиболее стандартным (POSIX.1b), хотя и неэффективным способом обеспечения синхронизации.
Очереди сообщений предназначены для обмена короткими (обычно менее 1 Кбайт) структурами данных. Если объем данных превышает эту величину, использование сообщений может значительно увеличить число системных вызовов и уменьшить производительность операционной системы.
Интенсивность межпроцессного взаимодействия в системе можно определить с помощью команды sar -m. Вывод команды показывает число использования объектов IPC в секунду:
17:47:53 msg/s sema/s
17:47:58 0.20 20.00
17:48:03 0.60 12.20
17:48:08 2.20 10.40
17:48:13 0.80 25.10
17:48:18 0.00 15.60
Average 0.76 16.66
- 2. Позиционное сравнение
- Восстановление из резервной копии на системе-приемнике
- Совместимость клиентов и серверов различных версий
- Неисправности акустических систем
- Особенности системы защиты данных в InterBase
- Система безопасности InterBase
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- Системное программное обеспечение
- Хранение конфигурации в системном реестре
- Модификация системных таблиц
- 7 Система Цикл: долгосрочные цели