Операционная система - оборудование ввода-вывода
Одной из важных задач операционной системы является управление различными устройствами ввода-вывода, включая мышь, клавиатуру, сенсорную панель, дисководы, адаптеры дисплея, USB-устройства, растровый экран, светодиод, аналого-цифровой преобразователь, включение / выключение. выключатель, сетевые соединения, аудио ввод / вывод, принтеры и т. д.
Система ввода-вывода должна принимать запрос ввода-вывода приложения и отправлять его на физическое устройство, а затем принимать любой ответ, полученный от устройства, и отправлять его в приложение. Устройства ввода-вывода можно разделить на две категории:
Block devices- Блочное устройство - это устройство, с которым драйвер обменивается данными, отправляя целые блоки данных. Например, жесткие диски, USB-камеры, Disk-On-Key и т. Д.
Character devices- Символьное устройство - это устройство, с которым драйвер обменивается данными, отправляя и получая отдельные символы (байты, октеты). Например, последовательные порты, параллельные порты, звуковые карты и т. Д.
Контроллеры устройств
Драйверы устройств - это программные модули, которые можно подключить к ОС для работы с конкретным устройством. Операционная система требует помощи драйверов устройств для обработки всех устройств ввода-вывода.
Контроллер устройства работает как интерфейс между устройством и драйвером устройства. Блоки ввода-вывода (клавиатура, мышь, принтер и т. Д.) Обычно состоят из механического компонента и электронного компонента, где электронный компонент называется контроллером устройства.
Всегда есть контроллер устройства и драйвер устройства для каждого устройства для связи с операционными системами. Контроллер устройства может обрабатывать несколько устройств. В качестве интерфейса его основная задача - преобразовать последовательный поток битов в блок байтов и при необходимости выполнить исправление ошибок.
Любое устройство, подключенное к компьютеру, подключается с помощью вилки и розетки, а розетка подключается к контроллеру устройства. Ниже приводится модель подключения ЦП, памяти, контроллеров и устройств ввода-вывода, в которой ЦП и контроллеры устройств используют общую шину для связи.
Синхронный и асинхронный ввод-вывод
Synchronous I/O - В этой схеме выполнение ЦП ожидает, пока продолжается ввод-вывод
Asynchronous I/O - Ввод-вывод выполняется одновременно с выполнением ЦП
Связь с устройствами ввода / вывода
ЦП должен иметь возможность передавать информацию на устройство ввода-вывода и от него. Доступны три подхода к обмену данными с ЦП и устройством.
- Специальные инструкции ввода / вывода
- Ввод-вывод с отображением памяти
- Прямой доступ к памяти (DMA)
Специальные инструкции ввода / вывода
При этом используются инструкции ЦП, специально созданные для управления устройствами ввода-вывода. Эти инструкции обычно позволяют отправлять данные на устройство ввода-вывода или читать с устройства ввода-вывода.
Ввод-вывод с отображением памяти
При использовании ввода-вывода с отображением в память одно и то же адресное пространство совместно используется памятью и устройствами ввода-вывода. Устройство подключается непосредственно к определенным ячейкам основной памяти, так что устройство ввода-вывода может передавать блок данных в / из памяти без прохождения через ЦП.
При использовании ввода-вывода с отображением в память ОС выделяет буфер в памяти и сообщает устройству ввода-вывода использовать этот буфер для отправки данных в ЦП. Устройство ввода-вывода работает асинхронно с ЦП, по завершении прерывает ЦП.
Преимущество этого метода заключается в том, что каждая инструкция, имеющая доступ к памяти, может использоваться для управления устройством ввода-вывода. Ввод-вывод с отображением памяти используется для большинства высокоскоростных устройств ввода-вывода, таких как диски, интерфейсы связи.
Прямой доступ к памяти (DMA)
Медленные устройства, такие как клавиатуры, будут генерировать прерывание для основного процессора после передачи каждого байта. Если бы быстрое устройство, такое как диск, генерировало прерывание для каждого байта, операционная система тратила большую часть своего времени на обработку этих прерываний. Таким образом, типичный компьютер использует оборудование с прямым доступом к памяти (DMA), чтобы уменьшить эти накладные расходы.
Прямой доступ к памяти (DMA) означает, что ЦП предоставляет модулю ввода-вывода полномочия на чтение или запись в память без участия. Сам модуль DMA контролирует обмен данными между основной памятью и устройством ввода-вывода. ЦП задействован только в начале и в конце передачи и прерывается только после передачи всего блока.
Для прямого доступа к памяти требуется специальное оборудование, называемое контроллером DMA (DMAC), которое управляет передачей данных и регулирует доступ к системной шине. Контроллеры запрограммированы указателями источника и назначения (где читать / записывать данные), счетчиками для отслеживания количества переданных байтов и настройками, которые включают типы ввода-вывода и памяти, прерывания и состояния циклов ЦП.
Операционная система использует оборудование DMA следующим образом -
Шаг | Описание |
---|---|
1 | Драйвер устройства получает указание передать данные с диска на адрес буфера X. |
2 | Затем драйвер устройства дает команду контроллеру диска передать данные в буфер. |
3 | Контроллер диска начинает передачу DMA. |
4 | Контроллер диска отправляет каждый байт контроллеру DMA. |
5 | Контроллер DMA передает байты в буфер, увеличивает адрес памяти, уменьшает счетчик C, пока C не станет равным нулю. |
6 | Когда C становится равным нулю, DMA прерывает CPU, чтобы сигнализировать о завершении передачи. |
Опрос против прерываний ввода / вывода
Компьютер должен иметь возможность обнаруживать поступление любого типа ввода. Это может произойти двумя способами, известными какpolling и interrupts. Оба эти метода позволяют процессору иметь дело с событиями, которые могут произойти в любое время и не связаны с процессом, который он выполняет в данный момент.
Опрос ввода / вывода
Опрос - это самый простой способ связи устройства ввода-вывода с процессором. Процесс периодической проверки состояния устройства, чтобы узнать, не пришло ли время для следующей операции ввода-вывода, называется опросом. Устройство ввода-вывода просто помещает информацию в регистр состояния, а процессор должен прийти и получить информацию.
В большинстве случаев устройства не требуют внимания, и в этом случае приходится ждать следующего опроса программой опроса. Это неэффективный метод, и большая часть времени процессоров тратится на ненужные опросы.
Сравните этот метод с тем, как учитель постоянно спрашивает каждого ученика в классе, одного за другим, нужна ли им помощь. Очевидно, что более эффективным методом для ученика будет информирование учителя о том, что ему потребуется помощь.
Прерывания ввода / вывода
Альтернативной схемой работы с вводом-выводом является метод управления прерываниями. Прерывание - это сигнал микропроцессору от устройства, требующего внимания.
Контроллер устройства отправляет сигнал прерывания на шину, когда он требует внимания ЦП, когда ЦП получает прерывание. Он сохраняет свое текущее состояние и вызывает соответствующий обработчик прерывания, используя вектор прерывания (адреса подпрограмм ОС для обработки различных событий). Когда с прерывающим устройством разобрались, ЦП продолжает свою первоначальную задачу, как если бы она никогда не прерывалась.