Одной из важных задач операционной системы является управление различными устройствами ввода/вывода, включая: мышь, клавиатуру, тачпад, дисковые накопители, адаптеры дисплея, USB-устройства, экран с поточечной адресацией, светодиоды, аналого-цифровой преобразователь, переключатель включения/выключения, сетевые подключения, аудио-входы/выходы, принтеры и т. д.
Система ввода/вывода должна принимать запрос приложения на ввод/вывод и посылать его физическому устройству, затем принимать ответ от устройства и посылать его приложению. Устройства ввода/вывода можно разделить на две категории:
Блочные устройства. Блочное устройство — это устройство, с которым драйвер взаимодействует путем отправки целых блоков данных. Например, жесткие диски, USB-камеры, флешки и т.д.
Символьные устройства. Символьное устройство — это устройство, с которым драйвер взаимодействует путем отправки и получения отдельных символов (байтов, октетов). Например, последовательные порты, параллельные порты, звуковые карты и т.д.
Контроллеры устройств
Драйверы устройств — это программные модули, которые можно подключить к операционной системе для работы с определенным устройством. Операционная система получает помощь от драйверов устройств для работы со всеми устройствами ввода-вывода.
Контроллер работает как интерфейс между устройством и драйвером. Устройства ввода/вывода (клавиатура, мышь, принтер и т.д.) обычно состоят из механического и электронного компонента, где электронный компонент называется контроллером устройства.
Для каждого устройства всегда есть контроллер и драйвер для взаимодействия с операционными системами. Контроллер может работать с несколькими устройствами. Его основная задача в качестве интерфейса — преобразовать последовательный поток битов в блок байтов и при необходимости выполнить коррекцию ошибок.
Любое устройство, подключаемое к компьютеру, соединяется с помощью вилки и розетки, а розетка подключается к контроллеру устройства. Ниже приведена модель соединения центрального процессора (CPU), памяти, контроллеров и устройств ввода-вывода, где процессор и контроллеры используют для связи общую шину.
Синхронный и асинхронный ввод/вывод
Синхронный ввод/вывод — в этой схеме процессор ждет, пока выполняется ввод/вывод.
Асинхронный ввод/вывод — ввод/вывод происходит параллельно с выполнением инструкций на процессоре.
Связь с устройствами ввода/вывода
Центральный процессор должен иметь возможность передавать информацию на устройство ввода-вывода и обратно. Существует три подхода для связи между CPU и устройством.
Специальная команда ввода/вывода
Ввод/вывод с привязкой к памяти
Прямой доступ к памяти (direct memory access, DMA)
Специальная команда ввода/вывода
При этом используются инструкции CPU, специально разработанные для управления устройствами ввода-вывода. Эти инструкции обычно позволяют отправлять данные на устройство ввода/вывода или считывать их с устройства ввода/вывода.
Ввод/вывод с привязкой к памяти
При использовании ввода/вывода с привязкой к памяти одно и то же адресное пространство разделяется между памятью и устройствами ввода/вывода. Устройство подключается непосредственно к определенным местам основной памяти, чтобы устройство ввода/вывода могло передавать блок данных в/из памяти, не проходя через центральный процессор.
При использовании ввода-вывода с привязкой к памяти ОС выделяет буфер в памяти и сообщает устройству ввода-вывода, что оно должно использовать этот буфер для отправки данных в процессор. Устройство ввода/вывода работает асинхронно с процессором, прерывая его по завершении работы.
Преимущество этого метода состоит в том, что каждая инструкция, которая может получить доступ к памяти, может быть использована для работы с устройством ввода-вывода. Ввод/вывод с привязкой к памяти используется для большинства высокоскоростных устройств ввода-вывода, таких как диски и коммуникационные интерфейсы.
Прямой доступ к памяти (Direct Memory Access, DMA)
Медленные устройства, например, клавиатуры, будут генерировать прерывание для главного процессора после передачи каждого байта. Если бы быстрое устройство, такое как диск, генерировало прерывание для каждого байта, операционная система тратила бы большую часть своего времени на обработку этих прерываний. Поэтому типичный компьютер использует прямой доступ к памяти (DMA), чтобы уменьшить эти накладные расходы.
Прямой доступ к памяти (DMA) означает, что процессор предоставляет модулю ввода-вывода полномочия на чтение из памяти или запись в память без его участия. Модуль DMA сам управляет обменом данными между основной памятью и устройством ввода-вывода. Центральный процессор участвует только в начале и конце передачи данных и прерывается только после передачи всего блока.
Прямой доступ к памяти требует специального аппаратного обеспечения, называемого DMA-контроллером (DMAC), который управляет передачей данных и выдает доступ к системной шине. Контроллеры программируются с указателями источника и назначения (где читать / куда записывать данные), счетчиками для отслеживания количества переданных байт, а также настройками, включающими типы ввода/вывода и памяти, прерывания и состояния для циклов процессора.
Операционная система использует аппаратное обеспечение DMA следующим образом:
Шаг |
Описание |
1 |
Драйверу устройства дается команда передать данные с диска по адресу буфера X. |
2 |
Затем драйвер устройства дает команду контроллеру диска передать данные в буфер. |
3 |
Дисковый контроллер запускает передачу данных через DMA. |
4 |
Дисковый контроллер посылает каждый байт контроллеру DMA. |
5 |
Контроллер DMA передает байты в буфер, увеличивает адрес памяти, уменьшает счетчик C, пока C не станет нулем. |
6 |
Когда C становится равным нулю, DMA прерывает процессор, чтобы сообщить о завершении передачи. |
Ввод/вывод по опросу vs Ввод/вывод по прерыванию
Компьютер должен иметь способ обнаружения поступления любого типа входных данных. Для этого существует два способа, известные как опрос и прерывания. Оба эти метода позволяют процессору работать с событиями, которые могут произойти в любое время и которые не связаны с текущим процессом.
Ввод-вывод по опросу
Опрос — это самый простой способ связи устройства ввода-вывода с процессором. Он представляет собой процесс периодической проверки состояния устройства, чтобы узнать, пришло ли время для следующей операции ввода-вывода. Устройство ввода/вывода просто помещает информацию в регистр Status, а процессор должен прийти и получить эту информацию.
Большую часть времени устройства не требуют внимания, а когда требуют, им приходится ждать до следующего опроса программой опроса. Это неэффективный метод, и большая часть времени процессора тратится на ненужные опросы.
Сравните этот метод с тем, как если бы учитель постоянно спрашивал каждого ученика в классе, одного за другим, нужна ли ему помощь. Очевидно, что более эффективным методом было бы, если бы ученик сообщал учителю, когда ему нужна помощь.
Ввод-вывод с прерыванием
Альтернативной схемой работы с вводом/выводом является метод прерываний. Прерывание — это сигнал микропроцессору от устройства, которое требует внимания.
Контроллер устройства подает сигнал прерывания на системную шину, когда ему требуется внимание процессора. Когда процессор получает прерывание, он сохраняет свое текущее состояние и вызывает соответствующий обработчик прерывания, используя вектор прерывания (адреса подпрограмм ОС для обработки различных событий). Когда прерывающее устройство обработано, центральный процессор продолжает выполнение своей первоначальной задачи, как если бы он никогда не был прерван.
Тему ввода-вывода в компьютерных системах продолжим изучать на открытом уроке, который пройдет уже завтра вечером.
На данном уроке мы рассмотрим основы архитектуры ввода-вывода (I/O) в компьютерных системах. Изучим роль I/O систем в компьютерной архитектуре, рассмотрим различные типы устройств и их использование в компьютерных системах. Мы обсудим необходимые аппаратные компоненты, такие как память, а также научимся использовать программно устройства ввода-вывода. Цель урока — разобраться в роли, типах I/O систем в компьютерной архитектуре и способов взаимодействия с ними.
Записаться на урок можно на странице онлайн-курса "Computer Science"
Комментарии (3)
Myclass
00.00.0000 00:00-1Да, текст для новичков или для тех, кто вообще с этим никогда не будет иметь ничего общего. Всё так по детски...
Любое устройство, подключаемое к компьютеру, соединяется с помощью вилки и розетки, а розетка подключается к контроллеру устройства
Вы бы ещё такие слова как фиговина и штуковина использовали!
VitGo
00.00.0000 00:00обычная статья.. скорее всего переводная.. здесь такие в почете.. так что не удивляйтесь
Apoheliy
По моему скромному мнению, этому тексту лет 30. Опять же, (imho), сейчас механика dma работает по-другому.