Архитектура операционной системы UNIX :: Бах Морис Дж.
Страница:
549 из 715
Каждая очередь представляет собой структуру данных, состоящую из следующих элементов:
• процедуры открытия, вызываемой во время выполнения системной функции open
• процедуры закрытия, вызываемой во время выполнения системной функции close
• процедуры "вывода", вызываемой для передачи сообщения в очередь
• процедуры "обслуживания", вызываемой, когда очередь запланирована к исполнению
• указателя на следующую очередь в потоке
• указателя на список сообщений, ожидающих обслуживания
• указателя на внутреннюю структуру данных, с помощью которой поддерживается рабочее состояние очереди
• флагов, а также верхней и нижней отметок, используемых для управления потоками данных, диспетчеризации и поддержания рабочего состояния очереди.
Ядро выделяет пары очередей, соседствующие в памяти; следовательно, очередь легко может отыскать своего партнера по паре.
Рисунок 10.20. Поток после открытия
Устройство с потоковым драйвером является устройством посимвольного ввода-вывода; оно имеет в таблице ключей устройств соответствующего типа специальное поле, которое указывает на структуру инициализации потока, содержащую адреса процедур, а также верхнюю и нижнюю отметки, упомянутые выше. Когда ядро выполняет системную функцию open и обнаруживает, что файл устройства имеет тип "специальный символьный", оно проверяет наличие нового поля в таблице ключей устройств посимвольного ввода-вывода. Если в таблице отсутствует соответствующая точка входа, то драйвер не является потоковым, и ядро выполняет процедуру, обычную для устройств посимвольного ввода-вывода.
|< Пред. 547 548 549 550 551 След. >|