Управление устройствами ввода-вывода
Одна из важнейших функций операционной системы состоит в управлении всеми устройствами ввода-вывода компьютера. Операционная система должна давать этим устройствам команды, перехватывать прерывания и обрабатывать ошибки. Она должна также предоставить простой и удобный интерфейс между устройствами и остальной частью системы. Интерфейс, насколько это возможно, должен быть одинаковым для всех устройств.
Устройства ввода-вывода можно грубо разделить на две категории: блочные и символьные. Блочными называются устройства, хранящие информацию в виде адресуемых блоков фиксированного размера. Обычно размеры блоков варьируются от 512 до 32 768 байт. Каждый блок может быть прочитан независимо от остальных блоков. Наиболее распространенными блочными устройствами являются диски.
Символьное устройство принимает или предоставляет поток символов без какой-либо блочной структуры. Символьное устройство не является адресуемым и не выполняет операцию поиска. Принтеры, сетевые интерфейсные адаптеры, мыши и большинство других устройств, не похожих на диски, можно рассматривать как символьные устройства.
Устройства ввода-вывода, как правило, состоят из механических и электронных компонентов. Электронный компонент называется контроллером устройства, или адаптером. В персональных компьютерах он обычно имеет вид печатной платы, вставляемый в слот расширения. Механический компонент – это само устройство. Плата контроллера снабжается разъемом, к которому подключается кабель, ведущий к самому устройству.
Операционная система практически всегда имеет дело с контроллером, а не с самим устройством. У большинства небольших компьютеров взаимодействие с устройствами организуется по модели единой шины. У больших машин, мэйнфреймов, применяется другая модель с несколькими шинами, которые обслуживаются специализированными компьютерами ввода-вывода, называемыми каналами ввода-вывода. Такая организация позволяет снизить нагрузку на основной процессор.
У каждого контроллера есть несколько регистров, с помощью которых к ним может обращаться центральный процессор. Записывая в эти регистры определенные значения, операционная система посылает устройству команды передачи и приема данных, включения, отключения и др. Считывание регистров устройства позволяет определить его состояние, готовность принять команду и т. д.
В дополнение к регистрам управления многие устройства имеют буфер данных, доступный для чтения и записи со стороны операционной системы. Например, отображение пикселей на экране в большинстве компьютеров осуществляется с помощью видеопамяти, которая представляет собой такой буфер.
Процессор взаимодействует с регистрами управления и буферами данных устройств двумя способами. Первый предполагает назначение каждому регистру номера порта ввода-вывода – 8-ми или 16-ти разрядного числа. В других компьютерах регистры ввода-вывода являются частью обычного адресного пространства памяти. Такая организация называется вводом-выводом с отображением на память. Она была впервые применена в мини-компьютере PDP-11. Каждому регистру управления назначается уникальный адрес памяти, с которым обычная память не связана. В компьютерах с процессором Pentium диапазон адресов от 640 Кбайт до 1 Мбайт зарезервирован под буферы данных устройств, а область портов ввода-вывода занимает первые 64 Кбайт.
Процессор, желающий считать слово из регистра, выставляет его адрес на адресные линии шины, а затем выдает сигнал чтения по линии управления. Для того чтобы отличить обращение к пространству ввода-вывода от обращения к памяти, требуется вторая сигнальная линия.
Для управления каждым устройством ввода-вывода, подключенным к компьютеру, требуется специальная программа. Эта программа, называемая драйвером устройства, часто пишется производителем устройства и распространяется на компакт-дисках вместе с самим устройством. Поскольку для каждой операционной системы требуются специальные драйверы, производители обычно поставляют драйверы для нескольких наиболее популярных операционных систем.
Дата добавления: 2014-12-13; просмотров: 3215;