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

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



алгоритм open /* для драйверов устройств */

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

 имя пути поиска

 режим открытия

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

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

{

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

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

 выбрать из индекса старший и младший номера устройства;

 сохранить контекст (алгоритм setjmp) в случае передачи управления от драйвера;

 if (устройство блочного типа) {

  использовать старший номер устройства в качестве указателя в таблице ключей устройств ввода-вывода блоками;

  вызвать процедуру открытия драйвера по данному индексу: передать младший номер устройства, режимы открытия;

 }

 else  {

  использовать старший номер устройства в качестве указателя в таблице ключей устройств посимвольного ввода-вывода;

  вызвать процедуру открытия драйвера по данному индексу: передать младший номер устройства, режимы открытия;

 }

 if (открытие в драйвере не выполнилось)

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

}

Рисунок 10.3. Алгоритм открытия устройства

Зависящая от типа устройства процедура open устанавливает связь между вызывающим процессом и открываемым устройством и инициализирует информационные структуры драйвера. Например, процедура open для терминала может приостановить процесс до тех пор, пока в машину не поступит сигнал (аппаратный) о том, что пользователь предпринял попытку зарегистрироваться.

|< Пред. 499 500 501 502 503 След. >|

Java книги

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