Передает сообщение об окончании процесса ввода-вывода процессу, если процесс ожидает завершения операции.
Как уже отмечалось шинная архитектура современного компьютера предполагает два адресных пространства – пространство процессов, размещаемое в центральном процессоре и пространство устройств, размещенного в виде таблиц в основной памяти компьютера.
Каждое устройство ввода-вывода содержит 4 магистрали – питание, данные, адреса и управление. Если учесть, что для каждой магистрали требуется как минимум 2 проводника (ввод и вывод) – получим 8 проводов. Добавим ещё сигнальную шину и получим 10 проводников. Эти проводники формирую порт, к которому можно подключить практически любое устройство.
Суммарное количество портов ограничено значение счетчика 65535 (2**16). Это 8-ми битные порты. Для организации работы 16 битных устройств требуется соединить 2 порта, при этом может использоваться только 2**15 портов. Для современных 64 битных устройств остается всего 8192 порта (2**13), а для 128 битных устройств остается всего 4096 адресов. Пока это не выглядит серьезным ограничением для персональных компьютером.
В системных таблицах устройств, кроме адреса, содержится информация, необходимая для перепрограммирования контролера прямого доступа в память. Эта двоичная информация содержит …
Как же работать с устройством, если набор команд к портам одинаков, а устройства разные. Для этого со стороны ОС используются драйверы, а со стороны устройств – контролеры.
Драйвера
Драйвера работают в двух режимах: режим обмена с опросом готовности и режим обмена с прерывания.
Если управление осуществляет центральный процессор, он посылает устройству управления команду выполнить некоторое действие. Исполнительное устройство выполняет операции и транслирует ЦП понятные ему сигналы.
Поскольку сигнал готовности от устройства приходится ждать очень долго, ЦП занимается другими процессами, периодически опрашивая устройства о готовности. Подавать следующую команду до готовности бессмысленно и приходится ждать, держа процесс в памяти. Загруженный драйвер как процесс опрашивает устройство в бесконечном цикле. Это синхронное управление устройством.
Конечно ЦП выгоднее выдав команду ввода – вывода вообще отключиться от этой задачи. А сигналы готовности от устройств можно трактовать как прерывания и передавать их на обработку драйверу устройства. Работа с прерываниями – асинхронное управление.
Драйверы – в режиме прерывания содержат секции запуска, продолжения и завершения. Чтобы не потерять с ними связи, ОС после подачи команды включает отсчет времени, за которое драйвер устройства должен ответить. Если в течении этого тайм-аута устройство драйвер не ответил, устройство считается не управляемым и процесс получает соответствующее сообщение.
Секция запуска – инициирует операции ввода-вывода. Эта секция загружается в основную память, для включения устройства в состав ОС.
Секция продолжения – осуществляет на основании некоего алгоритма операции передачи данных с прерываниями. Секция основной обработчик прерываний. Если секций выполнения несколько - они поочередно передают друг другу управление.
Секция завершения выключает устройство вводы-вывода из состава ОС.
Драйвера в режиме прерываний сложнее драйверов на основе опроса. Попытка смешивания драйверов обоих типов в одной системе приводит к зависаниям. Так в ОС Windows NT драйвера печати работают в режиме опроса и при печати загружают систему на 100%.
Дата добавления: 2018-11-26; просмотров: 431;