Ввод-вывод по прерываниям
Как уже отмечалось, основным недостатком программно управляемого ввода-вывода являются простои процессора в ожидании, пока контроллер ПУ выполнит очередную операцию. Альтернативой может быть вариант, когда процессор выдает команду ввода-вывода, а затем продолжает делать другую полезную работу. Когда ПУ готово к обмену данными, контроллер ПУ извещает об этом процессор с помощью запроса на прерывание. Процессор осуществляет передачу очередного элемента данных, после чего возобновляет выполнение прерванной программы. Алгоритм обработки прерывания в процессоре приведен на рис. 25.2.
Рис. 25.2. Алгоритм обработки прерывания в процессоре
Рассмотрим процесс ввода блока данных с использованием ввода-вывода по прерываниям. При этом оставим без внимания такие подробности, как сохранение и восстановления контекста, действия, выполняемые при завершении пересылки блока данных, а также в случае возникновения ошибок.
Процедура ввода блока данных по прерываниям реализуется следующим образом. Процессор выдает контроллеру ПУ команду «Чтение», а затем продолжает выполнение других заданий, например другой программы. Получив команду «Чтение», контроллер ПУ приступает к вводу элемента данных с ПУ. Когда считанная порция данных оказывается в выходном буфере (регистре) данных, контроллер ПУ формирует сигнал прерывания для процессора.
Обмен очередной порцией данных происходит по команде «Ввод» из процессора. Контроллер внешнего интерфейса ПУ помещает информацию из выходного буфера на шины данных внешнего интерфейса. После выдачи очередной порции информации контроллер ПУ готов к следующему сеансу обмена.
Процессор в конце выполнения каждой команды (за исключением некоторых команд, после выполнения которых запрещены прерывания) проверяет наличие запросов прерывания. Когда от контроллера ПУ приходит такой сигнал, процессор сохраняет контекст текущей программы и обрабатывает прерывание. В рассматриваемом случае процессор читает очередную порцию данных из ПУ, записывает ее в оперативную память и выдает контроллеру ПУ команду на считывание очередной порции данных. Далее процессор восстанавливает контекст прерванной программы и возобновляет ее выполнение.
Алгоритм операции обмена по прерываниям приведен на рис. 25.3.
Рис. 25.3. Алгоритм операции обмена по прерываниям
Ввод-вывод по прерываниям эффективнее программно управляемого ввода-вывода, поскольку устраняет ненужные ожидания, однако обработка прерывания занимает достаточно много времени процессора. Кроме того, каждая порция данных, пересылаемая из оперативной памяти в контроллер ПУ или в противоположном направлении, как и при программно управляемом вводе-выводе, проходит через процессор.
Дата добавления: 2015-09-28; просмотров: 2457;