Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпорка-информатика.doc
Скачиваний:
2
Добавлен:
03.08.2019
Размер:
901.63 Кб
Скачать

3. Устройства ввода-вывода

Другими устройствами, тесно взаимодействующими с операционной системой, являются устройства ввода-вывода, которые состоят из двух частей: контроллера и самого устройства. Контроллер представляет собой микросхему (набор микросхем) на вставляемой в разъем плате, которая принимает и выполняет команды операционной системы.

Например, контроллер принимает команду чтения определенного сектора с диска. Для выполнения команды контроллер преобразовывает линейный номер сектора диска в номер цилиндра, сектора и головки. Операция преобразования усложняется тем, что внешние цилиндры могут иметь больше секторов, чем внутренние. Затем контроллер определяет, над каким цилиндром находится в данный момент головка, и дает последовательность импульсов, чтобы переместить головку на необходимое количество цилиндров. После чего контроллер ждет, пока повернется диск, поместив требуемый сектор под головку. Затем последовательно выполняются процессы чтения и сохранения битов по мере поступления их с диска, процессы удаления заголовка и вычисления контрольной суммы. Далее контроллер собирает полученные биты в слова и сохраняет их в памяти. Для осуществления этой работы контроллеры содержат встроенные микропрограммы.

Само устройство ввода-вывода имеет простой интерфейс, который должен соответствовать единому стандарту IDE (IDE, Integrated Drive Electronics – встроенный интерфейс накопителей). Так как интерфейс устройства скрыт контроллером, то операционная система видит только интерфейс контроллера, который может отличаться от интерфейса устройства.

Так как контроллеры для разных устройств ввода-вывода отличаются друг от друга, то для управления ими требуется соответствующее программное обеспечение – драйверы. Поэтому каждый производитель контроллеров должен поставлять драйверы для поддерживаемых им операционных систем. Чтобы установить драйвер в операционную систему существует три способа:

заново скомпоновать ядро вместе с новым драйвером и затем перезагрузить систему, так работает множество систем UNIX;

создать запись во входящем в операционную систему файле о том, что требуется драйвер и перезагрузить систему, во время начальной загрузки операционная система найдет нужный драйвер и загрузит его; так работает операционная система Windows;

принять новые драйверы и оперативно их установить средствами операционной система во время ее работы; способ используется съемными шинами USB и IEEE 1394, которые всегда нуждаются в динамически загружаемых драйверах.

Для связи с каждым контроллером существуют определенные регистры. Например, минимальный контроллер диска может иметь регистры для определения адреса на диске, адреса в памяти, номер сектора и направления операции (чтение или запись). Чтобы активизировать контроллер, драйвер получает команду от операционной системы, затем транслирует ее в величины, подходящие для записи в регистры устройства.

На некоторых компьютерах регистры устройств ввода-вывода отображаются в адресное пространство операционной системы, поэтому их можно читать или записывать как обычные слова в памяти. Адреса регистров помещаются в ОЗУ за пределами досягаемости программ пользователей, чтобы программы пользователей оградить от аппаратуры (например, с помощью базового и предельного регистров).

На других компьютерах регистры устройств располагаются в специальных портах ввода-вывода, и каждый регистр имеет свой адрес порта. На таких машинах в привилегированном режиме доступны команды IN и OUT, которые позволяют драйверам считывать и записывать регистры. Первая схема устраняет необходимость специальных команд ввода-вывода, но использует некоторое количество адресного пространства. Вторая схема не затрагивает адресное пространство, но требует наличие специальных команд. Обе схемы широко используются. Ввод и вывод данных осуществляется тремя способами.

1.Пользовательская программа выдает системный запрос, который ядро транслирует в вызов процедуры соответствующего драйвеpa. Затем драйвер начинает процесс ввода-вывода. В это время драйвер выполняет очень короткий программный цикл, постоянно опрашивая готовность устройства, с которым он работает (обычно есть некий бит, который указывает на то, что устройство все еще занято). По завершении операции ввода-вывода драйвер помещает данные туда, куда требуется, и возвращается в исходное состояние. Затем операционная система возвращает управление программе, осуществлявшей вызов. Этот метод называется ожиданием готовности или активным ожиданием и имеет один недостаток: процессор должен опрашивать устройство до тех пор, пока оно не завершит свою работу.

2.Драйвер запускает устройство и просит его выдать прерывание по окончании ввода-вывода. После этого драйвер возвращает данные, операционная система блокирует программу вызова, если это нужно, и начинает выполнять другие задания. Когда контроллер обнаруживает окончание передачи данных, он генерирует прерывание, чтобы сигнализировать о завершении операции. Механизм реализации ввода-вывода происходит следующим образом (рис.6.а):

Шаг 1: драйвер передает команду контроллеру, записывая информацию в регистры устройства; контроллер запускает устройство ввода-вывода.

Шаг 2: после окончания чтения или записи контроллер посылает сигнал микросхеме контроллера прерываний.

Шаг З: если контроллер прерываний готов к приему прерывания, то он подает сигнал на определенный контакт центрального процессора.

Шаг 4: контроллер прерываний выставляет номер устройства ввода-вывода на шину так, чтобы центральный процессор мог прочесть его и узнать, какое устройство завершило работу. При приеме центральным процессором прерывания, содержимое счетчика команд (PC) и слова состояния процессора (PSW) помещается в текущий стек, а процессор переключается в привилегированный режим работы (режим работы ядра операционной системы). Номер устройства ввода-вывода может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний. Когда обработчик прерываний (часть драйвера устройства, пославшего прерывание) начинает свою работу, он удаляет расположенные в стеке счетчик команд и слово состояния процессора, сохраняет их и запрашивает устройство, чтобы получить информацию о его состоянии. После того как обработка прерывания завершена, управление возвращается к работавшей до этого программе пользователя, к той команде, выполнение которой еще не было закончено (рис. 6 б).

3.Для ввода-вывода информации используется контроллер прямого доступа к памяти (DMA, Direct Memory Access), который управляет потоком битов между оперативной памятью и некоторыми контроллерами без постоянного вмешательства центрального процессора. Процессор вызывает микросхему DMA, говорит ей, сколько байтов нужно передать, сообщает адреса устройства и памяти, а также направление передачи данных и позволяет микросхеме действовать самой. По завершении работы DMA инициирует прерывание, которое обрабатывается соответствующим образом.

Прерывания могут происходить в неподходящие моменты, например, во время обработки другого прерывания. По этой причине центральный процессор обладает возможностью запрещать прерывания и разрешать их позже. Пока прерывания запрещены, все устройства, завершившие работу, продолжают посылать свои сигналы, но работа процессора не прерывается до тех пор, пока прерывания не будут разрешены. Если заканчивают работу сразу несколько устройств в то время, когда прерывания запрещены, контроллер прерываний решает, какое из них должно быть обработано первым, обычно основываясь на статических приоритетах, назначенных для каждого устройства.