Ввод/вывод по прерыванию

Напомним основные принципы обслуживания запросов прерывания от периферийных устройств

Периферийные устройства, при необходимости передачи информации в память компьютера, или ее приема от него, посылают в контроллер прерывания запрос прерывания в виде электрического сигнала. Эти запросы фиксируются в регистре запросов прерываний контроллера, а в процессор посылается общий запрос прерывания – сигнал INTR, который определяет наличие в данный момент хотя бы одного незамаскированного запроса прерывания от периферийных устройств. Процессор, в конце цикла выполнения каждой очередной команды опрашивает этот бит INTR и, в случае наличия разрешения приема запросов прерывания (IF = 1), приостанавливает процесс выполнения текущей программы и запоминает состояние процессора на данный момент времени (как минимум содержимое регистров CS, IP и регистра флагов Flags). После этого процессор посылает контроллеру прерывания сигнал готовности выполнять процесс обслуживания прерывания – INTA (Interrupt Acknowledge). Получив этот сигнал, контроллер прерываний выдает процессору код типа прерывания от источника, который имеет наивысший приоритет изо всех принятых к этому времени запросов на прерывания. Этот код представляет собой 8-ми разрядное слово, определяющее логический адрес (вектор) процедуры обработки данного прерывания, хранящийся в таблице векторов прерывания, расположенной в первом килобайте адресного пространства оперативной памяти.

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

Поэтому, в таких случаях используется более эффективная система ввода/вывода информации путем прямого доступа к памяти.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: