Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

8. Организация системы прерываний в IBM PC




8. ОРГАНИЗАЦИЯ СИСТЕМЫ ПРЕРЫВАНИЙ В IBM PC

Под прерыванием понимается программный и аппаратный сигнал микропроцессору, по которому выполнение текущей программы прекращается, сохраняется текущее состояние МП (регистр флагов, регистр CS и IP) и управление передается специальной подпрограмме, называемой подпрограммой (или процедурой) обработки прерывания или обработчиком прерывания. После завершения процедуры обработки прерывания выполнение прерванной программы продолжается.

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

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

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

Внутренние прерывания процессора, как правило, генерируются при возникновении исключительных ситуаций при выполнении команд. Примерами таких исключительных ситуаций могут являться: переполнение при делении, неверный код операции, выход за границы сегмента и другие. Также внутреннее прерывание может генерироваться при работе процессора в режиме отладки с установленным флагом TF, когда после выполнения каждой команды, кроме команды загрузки регистра SS, вызывается обработчик прерывания отладки.

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

8. 1 Понятие вектора прерывания

При возникновении прерывания вызывается обработчик прерывания. Каким образом процессор узнает его адрес? При возникновении прерывания всегда известен его номер – от 0 до 255. Для аппаратных прерываний этот номер передается процессору специальным устройством – контроллером прерываний. В случае программных прерываний номер прерывания указывается в команде программного прерывания. При возникновении внутренних прерываний процессора, он сам знает их номера. Требуется сопоставить каждому номеру прерывания адрес процедуры обработки прерывания. Этот адрес всегда является дальним, т. е. состоит из сегмента и смещения и называется вектором прерывания. Таким образом, процессор при возникновении прерывания по его номеру определяет вектор прерывания и передает по нему управление.

8. 2 Таблица векторов прерываний

Как же процессор определяет вектор прерывания исходя из номера прерывания? Для хранения векторов прерываний используется специальная таблица, которая называется таблицей векторов прерываний. Эта таблица содержит 256 ячеек, каждая ячейка содержит вектор прерывания (сегмент и смещение). Таким образом, таблица векторов прерывания для каждого номера прерывания содержит соответствующий вектор. Размер таблицы – 1024 байта, так как всего имеется 256 векторов прерываний, а каждый из них имеет размер 4 байта (2 байта – сегмент и 2 байта – смещение). Таблица векторов прерываний всегда располагается по абсолютному физическому адресу 0h в памяти компьютера. При возникновении прерывания процессор по номеру прерывания вычисляет смещение от начала таблицы векторов прерываний по формуле: смещение = номер_прерывания * 4. После того, как смещение вычислено, процессор обращается к требуемой ячейке таблицы векторов прерываний, берет из нее вектор прерывания и передает по нему управление обработчику прерывания.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...