Управляемый прерываниями ввод-вывод

Если в предыдущем примере буфер не используется, а принтер печатает 100 символов в секунду, то на каждый символ будет уходить 10мс, в это время процессор будет простаивать, ожидая готовности принтера.

Рассмотрим тот же пример, но с небольшим усовершенствованием.

Алгоритм печати:

1. До пункта 8 тоже самое.

2. Процессор не ждет готовности принтера, а вызывает планировщик и переключается на другую задачу. Печатающий процесс блокируется.

3. Когда принтер будет готов, он посылает прерывание процессору.

4. Процессор переключается на печатающий процесс.

Ввод-вывод с использованием DMA

Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.

Алгоритм не отличается, но всю работу на себя берет контроллер DMA.

Программные уровни и функции ввода-вывода

Четыре уровня ввода-вывода:

Уровни ввода-вывода

Обработчики прерываний

Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать драйвер, начавший ввод-вывод.

Алгоритм:

1. Драйвер начинает операцию ввод-вывод.

2. Драйвер блокирует сам себя,
- выполнив на семафоре процедуру down
- выполнив на переменной состояния процедуру wait
- выполнив на сообщении процедуру receive

3. Происходит прерывание

4. Обработчик прерываний начинает работу

5. Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)

Драйвера устройств

Драйвер устройства - необходим для каждого устройства. Для разных ОС нужны разные драйверы.

Драйверы должны быть частью ядра (в монолитной системе), что бы получить доступ к регистрам контроллера.

Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС.

Логическое расположение драйверов устройств. На самом деле обмен данными между контроллерами и драйверами идет по шине.

Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.

Стандартные интерфейсы, которые должны поддерживать драйвера:

o Для блочных устройств

o Для символьных устройств

Раньше для установки ядра приходилось перекомпилировать ядра системы.

Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.

Функции, которые выполняют драйвера:

o обработка запросов чтения или записи

o инициализация устройства

o управление энергопотреблением устройства

o прогрев устройства (сканера)

o включение устройства или запуска двигателя








Дата добавления: 2015-12-26; просмотров: 1907;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.