Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Задачи программного обеспечения ввода-вывода⇐ ПредыдущаяСтр 20 из 20
Основные задачи, которые должно решать программное обеспечение ввода-вывода: o Независимость от устройств - например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС. o Единообразное именование - имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно). o Обработка ошибок - ошибки могут быть отловлены на уровне контроллера, драйвера и т.д. o Перенос данных - синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания). o Буферизация o Проблема выделенных (принтер) и невыделенных (диск) устройств - принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы. Три основных способа осуществления операций ввода-вывода: o Программный ввод-вывод o Управляемый прерываниями ввод-вывод o Ввод-вывод с использованием DMA Рассмотрим их подробнее. Программный ввод-вывод В этом случае всю работу выполняет центральный процессор. Рассмотрим процесс печати строки ABCDEFGH этим способом. Этапы печати строки ABCDEFGH Алгоритм печати: 1. Строка для печати собирается в пространстве пользователя. 2. Обращаясь к системному вызову, процесс получает принтер. 3. Обращаясь к системному вызову, процесс просит распечатать строку на принтере. 4. Операционная система копирует строку в массив, расположенный в режиме ядра. 5. ОС копирует первый символ в регистр данных принтера, который отображен на памяти. 6. Символ печатается на бумаге. 7. Указатель устанавливается на следующий символ. 8. Процессор ждет, когда бит готовности принтера выставится в готовность. 9. Все повторяется. При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать. Управляемый прерываниями ввод-вывод Если в предыдущем примере буфер не используется, а принтер печатает 100 символов в секунду, то на каждый символ будет уходить 10мс, в это время процессор будет простаивать, ожидая готовности принтера. Рассмотрим тот же пример, но с небольшим усовершенствованием. Алгоритм печати: 1. До пункта 8 тоже самое. 2. Процессор не ждет готовности принтера, а вызывает планировщик и переключается на другую задачу. Печатающий процесс блокируется. 3. Когда принтер будет готов, он посылает прерывание процессору. 4. Процессор переключается на печатающий процесс. Ввод-вывод с использованием DMA Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа. Алгоритм не отличается, но всю работу на себя берет контроллер DMA. Программные уровни и функции ввода-вывода Четыре уровня ввода-вывода: Уровни ввода-вывода Обработчики прерываний Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать драйвер, начавший ввод-вывод. Алгоритм: 1. Драйвер начинает операцию ввод-вывод. 2. Драйвер блокирует сам себя, 3. Происходит прерывание 4. Обработчик прерываний начинает работу 5. Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up) Драйвера устройств Драйвер устройства - необходим для каждого устройства. Для разных ОС нужны разные драйверы. Драйверы должны быть частью ядра (в монолитной системе), что бы получить доступ к регистрам контроллера. Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС. Логическое расположение драйверов устройств. На самом деле обмен данными между контроллерами и драйверами идет по шине. Драйвера должны взаимодействовать с ОС через стандартные интерфейсы. Стандартные интерфейсы, которые должны поддерживать драйвера: o Для блочных устройств o Для символьных устройств Раньше для установки ядра приходилось перекомпилировать ядра системы. Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме. Функции, которые выполняют драйвера: o обработка запросов чтения или записи o инициализация устройства o управление энергопотреблением устройства o прогрев устройства (сканера) o включение устройства или запуска двигателя Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 1198; Нарушение авторского права страницы