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