ГЛАВА 1 Обзор средств взаимодействия процессов Unix

ГЛАВА 1

Обзор средств взаимодействия процессов Unix

1.1. Введение

Аббревиатура IPC расшифровывается как interprocess communication, то есть взаимодействие процессов. Обычно под этим понимается передача сообщений различных видов между процессами в какой-либо операционной системе. При этом могут использоваться различные формы синхронизации, требуемой современными видами взаимодействия, осуществляемыми, например, через разделяемую память.

В процессе развития операционных систем семейства Unix за последние 30 лет методы передачи сообщений эволюционировали следующим образом:

? Каналы (pipes — глава 4) были первой широко используемой формой взаимодействия процессов, доступной программам и пользователю (из интерпретатора команд). Основным недостатком каналов является невозможность их использования между процессами, не имеющими общего родителя (ancestor), но этот недостаток был устранен с появлением именованных каналов (named pipes), или каналов FIFO (глава 4).

? Очереди сообщений стандарта System V (System V message queues — глава 4) были добавлены к ядрам System V в начале 80-х. Они могут использоваться для передачи сообщений между процессами на одном узле вне зависимости от того, являются ли эти процессы родственными. Несмотря на сохранившийся префикс «System V», большинство современных версий Unix, включая и те, которые не произошли от System V, поддерживают эти очереди.

ПРИМЕЧАНИЕ

В отношении процессов Unix термин «родство» означает, что у процессов имеется общий предок. Подразумевается, что процессы, являющиеся родственниками, были созданы этим процессом-предком с помощью одной или нескольких «вилок» (forks). Простейшим примером будет вызов fork некоторым процессом дважды, что приведет к созданию двух порожденных процессов. Тогда можно говорить о родстве этих процессов между собой. Естественно, каждый порожденный процесс является родственником породившего. Родитель может позаботиться о возможности взаимодействия с порожденным процессом (создав канал или очередь сообщений) перед вызовом fork, и этот объект IPC будет унаследован порожденным процессом. Более подробно о наследовании объектов IPC рассказано в табл. 1.4. Нужно также отметить, что все процессы Unix теоретически являются потомками процесса init, который запускает все необходимое в процессе загрузки системы (bootstrapping). С практической точки зрения отсчет родства процессов лучше вести с оболочки (login shell) и всех процессов, ею созданных. В главе 9 [24] рассказано о сеансах и родственных отношениях процессов более подробно. 

ПРИМЕЧАНИЕ

Примечания вроде этого будут использоваться нами для того, чтобы уточнять особенности реализации, давать исторические справки и полезные советы. 

? Очереди сообщений Posix (Posix message queues — глава 5) были добавлены в стандарт Posix (1003.1b-1993, о котором более подробно рассказано в разделе 1.7). Они могут использоваться для взаимодействия родственных и неродственных процессов на каком-либо узле.

? Удаленный вызов процедур (remote procedure calls — RPC, часть 5) появился в 80-х в качестве средства для вызова функций на одной системе (сервере) программой, выполняемой на другой системе (клиенте). Это средство было разработано в качестве альтернативы для упрощения сетевого программирования. Поскольку между клиентом и сервером обычно передается информация (передаются аргументы для вызова функции и возвращаемые значения) и поскольку удаленный вызов процедур может использоваться между клиентом и сервером на одном узле, RPC можно также считать одной из форм передачи сообщений.

Интересно также взглянуть на эволюцию различных форм синхронизации в процессе развития Unix:

? Самые первые программы, которым требовалась синхронизация (чаще всего для предотвращения одновременного изменения содержимого файла несколькими процессами), использовали особенности файловой системы, некоторые из которых описаны в разделе 9.8,

? Возможность блокирования записей (record locking — глава 9) была добавлена к ядрам Unix в начале 80-х и стандартизована в версии Posix.1 в 1988.

? Семафоры System V (System V semaphores — глава 11) были добавлены вместе с возможностью совместного использования памяти (System V shared memory — глава 14) и одновременно с очередями сообщений System V (начало 80-х). Эти IPC поддерживаются большинством современных версий Unix.

? Семафоры Posix (Posix semaphores — глава 10) и разделяемая память Posix (Posix shared memory— глава 13) были также добавлены в стандарт Posix (1003.1b-1993, который ранее упоминался в связи с очередями сообщений Posix).

? Взаимные исключения и условные переменные (mutex, conditional variable — глава 7) представляют собой две формы синхронизации, определенные стандартом программных потоков Posix (Posix threads, Pthreads — 1003.1с-1995). Хотя обычно они используются для синхронизации между потоками, их можно применять и при организации взаимодействия процессов.

? Блокировки чтения-записи (read-write locks — глава 8) представляют собой дополнительную форму синхронизации. Она еще не включена в стандарт Posix, но, вероятно, скоро будет.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.3. Обзор модели зрелости процессов разработки

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

1.3. Обзор модели зрелости процессов разработки Хотя зачастую инженеры-разработчики и менеджеры хорошо осведомлены о своих проблемах, их взгляды на то, какие усовершенствования являются наиболее важными, могут быть различными. Без организованной стратегии


Начало и остановка процессов с помощью программных средств

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Начало и остановка процессов с помощью программных средств В завершение этого раздела мы рассмотрим методы Start() и Kill() типа System.Diagnostics.Process. По именам этих методов вы можете догадаться, что они обеспечивают, соответственно, программный запуск и программное завершение


Глава 5 Модель сетевого взаимодействия и основные сетевые протоколы

Из книги Домашние и офисные сети под Vista и XP автора Ватаманюк Александр Иванович

Глава 5 Модель сетевого взаимодействия и основные сетевые протоколы Если вы были последовательны, то уже успели познакомиться с основными типами и топологиями сетей, а также сетевыми стандартами. Как и любая другая область жизни и работы человека, все действия находятся


Общий обзор средств безопасности: дескриптор безопасности

Из книги Сетевые средства Linux автора Смит Родерик В.

Общий обзор средств безопасности: дескриптор безопасности Анализ дескриптора безопасности предоставляет хорошую возможность для общего ознакомления с наиболее важными элементами системы безопасности Windows. В этом разделе речь будет идти о самых различных элементах


Глава 1 Настройка сетевых средств ядра

Из книги Rational Rose 2000 и UML Визуальное моделирование автора Кватрани Терри

Глава 1 Настройка сетевых средств ядра "Все дороги ведут в Рим" — гласит пословица. Нечто подобное можно сказать и о сетевых средствах Linux; в этом случае в роли Рима выступает ядро операционной системы. Рано или поздно весь сетевой трафик будет обработан ядром. Различные


Глава 2 Настройка сетевых средств TCP/IP

Из книги Компьютер для бухгалтера автора Филатова Виолетта

Глава 2 Настройка сетевых средств TCP/IP Несмотря на то что ядро является главным компонентом системы Linux и помимо выполнения прочих задач контролирует процесс обмена данными по сети, настройка системы для работы в сети не исчерпывается конфигурированием ядра. В данной


Глава 5. Изучение взаимодействия объектов

Из книги Защита от хакеров корпоративных сетей автора Автор неизвестен

Глава 5. Изучение взаимодействия объектов Реализация прецедентовДиаграмма прецедентов представляет внешний вид системы. Выполнение прецедентов отображается с помощью потока событий. Сценарии используются для описания того, как реализуются прецеденты, взаимодействуя


Глава 25 Учет основных средств и нематериальных активов

Из книги 1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих автора Гладкий Алексей Анатольевич

Глава 25 Учет основных средств и нематериальных активов В этой главе будет продолжено рассмотрение документов. Мы покажем, какие документы используются для оформления хозяйственных операций по поступлению, принятию к учету, выбытию и списанию основных средств и


Глава 14 Хакинг аппаратных средств

Из книги Linux программирование в примерах автора Роббинс Арнольд

Глава 14 Хакинг аппаратных средств В этой главе обсуждаются следующие темы: • Основные сведения о хакинге аппаратных средств • Вскрытие устройства: атаки на корпус устройства и его механическую часть • Внутренний анализ устройства: атаки на электрическую схему •


Глава 17 Обзор автоматизированных средств оценки безопасности

Из книги 1С: Бухгалтерия 8.2. Понятный самоучитель для начинающих автора Гладкий Алексей Анатольевич

Глава 17 Обзор автоматизированных средств оценки безопасности В этой главе обсуждаются следующие темы: • Краткие сведения об автоматизированных средствах оценки безопасности • Применение автоматизированных инструментальных средств для тестирования на проникновение


Глава 10 Учет основных средств

Из книги автора

Глава 10 Учет основных средств Основные средства относятся к числу важнейших объектов бухгалтерского учета. По сравнению с учетом прочих активов предприятия здесь имеется целый ряд специфических особенностей, касающихся приобретения основных средств, принятия их к