The design of the UNIX Operating System 16 страница



 

Одним из наиболее простых способов передачи информации между процессами по линиям связи являет-ся передача данных через pipe (канал, трубу или, как его еще называют в литературе, конвейер). Пред-ставим себе, что у нас есть некоторая труба в вычислительной системе, в один из концов которой процес-сы могут "сливать" информацию, а из другого конца принимать полученный поток. Такой способ реали-зует потоковую модель ввода/вывода. Информацией о расположении трубы в операционной системе об-ладает только процесс, создавший ее. Этой информацией он может поделиться исключительно со своими наследниками – процессами-детьми и их потомками. Поэтому использовать pipe для связи между собой могут только родственные процессы, имеющие общего предка, создавшего данный канал связи.

 

Если разрешить процессу , создавшему трубу, сообщать о ее местонахождении в системе другим процес-сам, сделав вход и выход трубы каким-либо образом видимыми для всех остальных, например, зарегист-


Основы операционных систем 44

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

 

В модели сообщений процессы налагают на передаваемые данные некоторую структуру. Весь поток ин-формации они разделяют на отдельные сообщения, вводя между данными, по крайней мере, границы со-общений . Примером границ сообщений являются точки между предложениями в сплошном тексте или границы абзаца. Кроме того, к передаваемой информации могут быть присоединены указания на то, кем конкретное сообщение было послано и для кого оно предназначено. Примером указания отправителя мо-гут служить подписи под эпиграфами в книге . Все сообщения могут иметь одинаковый фиксированный размер или могут быть переменной длины. В вычислительных системах используются разнообразные средства связи для передачи сообщений: очереди сообщений, sockets (гнезда) и т. д. Часть из них мы рас-смотрим подробнее в дальнейшем, в частности очереди сообщений будут рассмотрены в лекции 6, а гнезда (иногда их еще называют по транслитерации английского названия – сокеты) в лекции 14.

 

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

 

Надежность средств связи

 

Одним из существенных вопросов при рассмотрении всех категорий средств связи является вопрос об их надежности. Мы все знаем, как бывает тяжело расслышать собеседника по вечно трещащему телефону или разобрать, о чем сообщается в телеграмме: "Прибду пыездом в вонедельник 33 июня в 25.34. Пама".

 

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

 

1. Не происходит потери информации.

 

2. Не происходит повреждения информации.

3. Не появляется лишней информации.

 

4. Не нарушается порядок данных в процессе обмена.

 

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


Дата добавления: 2021-01-21; просмотров: 109; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!