Уильям Ричард Стивенс - UNIX: взаимодействие процессов
Название: | UNIX: взаимодействие процессов | |
Автор: | Уильям Ричард Стивенс | |
Жанр: | Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Unix, Параллельное и распределенное программирование | |
Изадано в серии: | Мастер-класс | |
Издательство: | Питер | |
Год издания: | 2003 | |
ISBN: | 5-318-00534-9 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "UNIX: взаимодействие процессов"
Книга написана известным экспертом по операционной системе UNIX и посвящена описанию одной из форм межпроцессного взаимодействия, IPC, с использованием которой создается большинство сложных программ. В ней описываются четыре возможности разделения решаемых задач между несколькими процессами или потоками одного процесса: передача сообщений, синхронизация, разделяемая память, удаленный вызов процедур.
Книга содержит большое количество иллюстрирующих примеров и может использоваться как учебник по IPC, и как справочник для опытных программистов.
Читаем онлайн "UNIX: взаимодействие процессов" (ознакомительный отрывок). [Страница - 4]
Примечания вроде этого будут использоваться нами для того, чтобы уточнять особенности реализации, давать исторические справки и полезные советы.
■ Очереди сообщений 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.2. Процессы, потоки и общий доступ к информации
В традиционной модели программирования Unix в системе могут одновременно выполняться несколько процессов, каждому из которых выделяется собственное адресное пространство. Это иллюстрирует рис. 1.1.Рис. 1.1. Совместное использование информации процессами
1. Два процесса в левой части совместно используют информацию, хранящуюся в одном из объектов файловой системы. Для доступа к этим данным каждый процесс должен обратиться к ядру (используя функции read, write, lseek, write, lseek и аналогичные). Некоторая форма синхронизации требуется при изменении файла, для исключения помех при одновременной записи в файл несколькими процессами и для защиты процессов, читающих из файла, от тех, которые пишут в него.
2. Два процесса в середине рисунка совместно используют информацию, хранящуюся в ядре. Примерами в данном случае являются канал, очередь сообщений или семафор System V. Для доступа к совместно используемой информации в этом случае будут использоваться системные вызовы.
3. Два процесса в правой части используют общую область памяти, к которой может обращаться каждый из процессов. После того как будет получен доступ к этой области памяти, процессы смогут обращаться к данным вообще без помощи ядра. В этом случае, как и в первом, процессам, использующим общую память, также требуется синхронизация.
Обратите внимание, что ни в одном из этих случаев количество взаимодействующих процессов не ограничивается двумя. Любой из описанных методов работает для произвольного числа взаимодействующих процессов. На рисунке мы изображаем только два для простоты.
Потоки
Хотя концепция процессов в системах Unix используется уже очень --">Книги схожие с «UNIX: взаимодействие процессов» по жанру, серии, автору или названию:
Сергей Владимирович Маклаков - Моделирование бизнес-процессов с BPwin 4.0 Жанр: Программы Год издания: 2002 |
Дэвид Тейнсли - Linux и UNIX: программирование в shell. Руководство разработчика. Жанр: Руководства и инструкции Год издания: 2001 |
А. П. Полищук, С. А. Семериков - Системное программирование в UNIX средствами Free Pascal Жанр: Учебники и самоучители по компьютеру Год издания: 2006 |
Галина Алексеевна Серикова - Секреты резьбы по дереву Жанр: Руководства и инструкции Год издания: 2011 Серия: Мастер-класс |
Другие книги из серии «Мастер-класс»:
Дмитрий Михайлович Липскеров - Сорок лет Чанчжоэ Жанр: Современная проза Год издания: 2005 Серия: Мастер-класс |
Уильям Ричард Стивенс - UNIX: взаимодействие процессов Жанр: Современные российские издания Год издания: 2003 Серия: Мастер-класс |
Александра С Клюшина - Оригинальные изделия из кожи своими руками. Секреты изготовления Жанр: Современные российские издания Год издания: 2010 Серия: Мастер-класс |
Галина Алексеевна Серикова - Секреты резьбы по дереву Жанр: Руководства и инструкции Год издания: 2011 Серия: Мастер-класс |