Лекция: Вопрос 7. Способы реализации процесса ввода-вывода (алгоритмы ввода вывода).

Три способа реализации процесса ввода-вывода данных (алгоритмы ввода-вывода):

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

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

 

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

На первом шаге драйвер передает команду контроллеру диска, записывая информацию в регистры устройства. Затем контроллер запускает устройство. Когда контролер заканчивает чтение или запись того количества байтов, которое ему было указано передать, он посылает сигнал микросхеме контроллера прерываний, используя определенные провода шины, — это шаг 2. На шаге 3, если контроллер прерываний готов к приему прерывания (а этого может и не быть, если он занят прерыванием более высокого порядка), то он подает сигнал на определенный контакт процессора, таким образом информируя центральный процессор.

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

Как только ЦП решил принять прерывание, содержимое счетчика команд (РС) и слова состояния процессора (PSW) помещаются в текущий стек, а процессор переключается в режим ядра. Номер устройства может использоваться как индекс части памяти, служащий для поиска адреса обработчика прерываний данного устройства. Эта часть памяти называется вектором прерываний. Когда обработчик прерываний (эта часть драйвера устройства, пославшего прерывание) начинает свою работу, он удаляет расположенные в стеке счетчик команд и слово состояния процессора, сохраняет их и запрашивает устройство, чтобы получить информацию о его состоянии. После того, как обработка прерывания целиком завершена, управление возвращается к работавшей до этого программе пользователя, к той команде, выполнение которой еще не было закончено. Описанные шаги показаны на рис.12.

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

 

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

еще рефераты
Еще работы по информатике