Операционная система OS2 Warp

       

Каналы передачи данных между процессами


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

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

Система управления памятью IBM OS/2 позволяет создавать совместно используемые области памяти (shared memory), которые, в принципе, можно использовать для организации передачи данных между процессами. Однако такой способ требует использования средств синхронизации задач и не пригоден для передачи данных между процессами, запущенными на разных рабочих станциях локальной сети.

В операционной системе IBM OS/2 предусмотрено специальное средство передачи данных между различными процессами - каналы (pipes ).

Канал - это специальная область памяти, созданная операционной системой по запросу процесса специально для передачи данных между процессами. Канал может иметь имя (а может и не иметь).

Работа с каналом больше всего напоминает работу со стандартным потоком ввода или вывода в операционной системе DOS. Процесс создает канал, вызывая специально предназначенную для этого функцию, возвращающую идентификатор канала. Затем процесс может передавать данные в канал или принимать их из канала, вызывая функции, напоминающие функции записи и чтения для стандартных потоков ввода/вывода DOS. Разумеется, в процедуре передачи данных через канал должны участвовать два процесса (рис. 1.6).

Рис. 1.6. Передача данных через канал возможна между двумя различными процессами

Отметим специально, что IBM OS/2 позволяет создать каналы между процессами, запущенными на различных рабочих станциях локальной сети (если установлена сеть с серверами IBM LAN Server). Таким образом, средства передачи данных по локальной сети встроены непосредственно в ядро IBM OS/2, что очень удобно для программиста.



Содержание раздела