Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 175 из 715

Оно также назначает для канала пару пользовательских дескрипторов и соответствующие им записи в таблице файлов: один из дескрипторов для чтения из канала, а другой для записи в канал. Поскольку ядро пользуется таблицей файлов, интерфейс для вызова функций read, write и др. согласуется с интерфейсом для обычных файлов. В результате процессам нет надобности знать, ведут ли они чтение или запись в обычный файл или в канал.

алгоритм pipe

входная информация: отсутствует

выходная информация:

 дескриптор файла для чтения

 дескриптор файла для записи

{

 назначить новый индекс из устройства канала (алгоритм ialloc);

 выделить одну запись в таблице файлов для чтения, одну — для переписи;

 инициализировать записи в таблице файлов таким образом, чтобы они указывали на новый индекс;

 выделить один пользовательский дескриптор файла для чтения, один — для записи, проинициализировать их таким образом, чтобы они указывали на соответствующие точки входа в таблице файлов;

 установить значение счетчика ссылок в индексе равным 2;

 установить значение счетчика числа процессов, производящих чтение, и процессов, производящих запись, равным 1;

}

Рисунок 5.16. Алгоритм создания каналов (непоименованных)

На Рисунке 5.16 показан алгоритм создания непоименованных каналов. Ядро назначает индекс для канала из файловой системы, обозначенной как «устройство канала», используя алгоритм ialloc.

|< Пред. 173 174 175 176 177 След. >|

Java книги

Контакты: [email protected]