Библиотека knigago >> Компьютеры: Операционные системы >> Unix >> UNIX: взаимодействие процессов


В сборнике рассказов Евгения Лукина "Алая аура протопарторга" представлены остроумные и бескомпромиссные переосмысления современного общества. В центре внимания - абсурдность бюрократии, лицемерие элит и неизбежность социальной трансформации. Каждый рассказ - это микрокосм, исследующий различные аспекты нашего социально-политического ландшафта. В рассказе-титуле, "Алая аура протопарторга", описывается вымышленное общество, где аура человека определяет его социальный статус....

СЛУЧАЙНАЯ КНИГА

Уильям Ричард Стивенс - UNIX: взаимодействие процессов

UNIX: взаимодействие процессов
Книга - UNIX: взаимодействие процессов.  Уильям Ричард Стивенс  - прочитать полностью в библиотеке КнигаГо
Название:
UNIX: взаимодействие процессов
Уильям Ричард Стивенс

Жанр:

Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Unix, Параллельное и распределенное программирование

Изадано в серии:

Мастер-класс

Издательство:

Питер

Год издания:

ISBN:

5-318-00534-9

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "UNIX: взаимодействие процессов"

Книга написана известным экспертом по операционной системе UNIX и посвящена описанию одной из форм межпроцессного взаимодействия, IPC, с использованием которой создается большинство сложных программ. В ней описываются четыре возможности разделения решаемых задач между несколькими процессами или потоками одного процесса: передача сообщений, синхронизация, разделяемая память, удаленный вызов процедур.

Книга содержит большое количество иллюстрирующих примеров и может использоваться как учебник по IPC, и как справочник для опытных программистов.

Читаем онлайн "UNIX: взаимодействие процессов" (ознакомительный отрывок). [Страница - 5]

давно, возможность использовать несколько потоков внутри одного процесса появилась относительно недавно. Стандарт потоков Posix.1, называемый Pthreads, был принят в 1995 году. С точки зрения взаимодействия процессов все потоки одного процесса имеют общие глобальные переменные (то есть поточной модели свойственно использование общей памяти). Однако потокам требуется синхронизация доступа к глобальным данным. Вообще, синхронизация, не являясь собственно формой IPC, часто используется совместно с различными формами IPC для управления доступом к данным.

В этой книге описано взаимодействие между процессами и между потоками. Мы предполагаем наличие среды, в которой поддерживается многопоточное программирование, и будем использовать выражения вида «если канал пуст, вызывающий поток блокируется до тех пор, пока какой-нибудь другой поток не произведет запись в канал». Если система не поддерживает потоки, можно в этом предложении заменить «потоки» на «процессы» и получится классическое определение блокировки в Unix, возникающей при считывании из пустого канала командой read. Однако в системе, поддерживающей потоки, блокируется только поток, запросивший данные из пустого канала, а все остальные потоки процесса будут продолжать выполняться. Записать данные в канал сможет другой поток этого же процесса или какой-либо поток другого процесса.

В приложении Б сведены некоторые основные характеристики потоков и дано описание пяти основных функций Pthread, используемых в программах этой книги.

1.3. Живучесть объектов IPC

Можно определить живучесть (persistence) любого объекта IPC как продолжительность его существования. На рис. 1.2 изображены три возможные группы, к которым могут быть отнесены объекты по живучести.

Книгаго: UNIX: взаимодействие процессов. Иллюстрация № 2 Рис. 1.2. Живучесть объектов IPC


1. Объект IPC, живучесть которого определяется процессом (process-persistent), существует до тех пор, пока не будет закрыт последним процессом, в котором он еще открыт. Примером являются неименованные и именованные каналы (pipes, FIFO).

2. Объект IPC, живучесть которого определяется ядром (kernel-persistent), существует до перезагрузки ядра или до явного удаления объекта. Примером являются очереди сообщений стандарта System V, семафоры и разделяемая память. Живучесть очередей сообщений Posix, семафоров и разделяемой памяти должна определяться по крайней мере ядром, но может определяться и файловой системой в зависимости от реализации.

3. Объект IPC, живучесть которого определяется файловой системой (filesystem-persistent), существует до тех пор, пока не будет удален явно. Его значение сохраняется даже при перезагрузке ядра. Очереди сообщений Posix, семафоры и память с общим доступом обладают этим свойством, если они реализованы через отображаемые файлы (так бывает не всегда).

Следует быть аккуратным при определении живучести объекта IPC, поскольку она не всегда очевидна. Например, данные в канале (pipe) обрабатываются ядром, но живучесть каналов определяется процессами, а не ядром, потому что после того, как последний процесс, которым канал был открыт на чтение, закроет его, ядро сбросит все данные и удалит канал. Аналогично, хотя каналы FIFO и обладают именами в файловой системе, живучесть их также определяется процессами, поскольку все данные в таком канале сбрасываются после того, как последний процесс, в котором он был открыт, закроет его.

В табл. 1.1 сведена информация о живучести перечисленных ранее объектов IPC.


Таблица 1.1. Живучесть различных типов объектов IPC

Тип IPC Живучесть определяет Программный канал (pipe) Процесс Именованный канал (FIFO) Процесс Взаимное исключение Posix (mutex) Процесс Условная переменная Posix (condition variable) Процесс Блокировка чтения-записи Posix (lock) Процесс Блокировка записи fcntl Процесс Очередь сообщений Posix (message queue) Ядро Именованный семафор Posix (named semaphore) Ядро Семафор Posix в памяти (memory-based semaphore) Процесс Разделяемая память Posix (shared memory) Ядро Очередь сообщений System V Ядро Семафор System V Ядро Память с общим доступом System V Ядро Сокет TCP (TCP socket) Процесс --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.