Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Прерывания. Типы прерываний.





Intel включила в свой процессор 8086 и во все остальные процессоры, появившееся после него механизм прерываний (interrupts).

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

Для этого CPU, определив какое прерывание произошло, обращается по соответствующему этому прерыванию адресу практически в начало адресного пространства. Оттуда он берет адрес памяти (вектор прерывания) - место, где находится программа, это прерывание обрабатывающая {обработчик прерывания), и начинает ее выполнять.

Intel вполне могла бы сказать: если случилось прерывание номер 75, переходите по указанному адресу и делайте то, что говорит расположенная там программа. Взамен Intel говорит: прочтите адрес из 75 строки специальной таблицы, называемой таблицей векторов прерываний (Interrupt Vector Table, IVT) и следуйте туда. Там вы найдете программу - обработчик этого прерывания.

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

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

Адреса подпрограмм обслуживания прерываний находятся в специальной таблице и называются векторами прерывания. В реальном режиме таблица вектров распологается в начале физической памяти; вектор имеет длину четыре байта и храниться в форме CS:IP. В защищенном режиме таблица векторов может быть расположена в любом месте и содержит более сложные дескрипторы (в режиме V86 имеется подобие таблицы реального режима).

Аппаратные прерывания

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

Сообщить CPU о возникновении аппаратного прерывания можно по одному из следующих двух его выводов: INTR, на который приходит сигнал запрос на нормальное аппаратное прерывание (normal interrupt), и NMI, на который приходит сигнал-запрос на немаскируемое аппаратное прерывание (nonmaskable interrupt). Однако число устройств внутри ПК, которым требуется внимание CPU, явно превышает два. Это могло бы стать проблемой, но не стало, так как ее решение предусмотрено архитектурой ПК.

Рисунок 2.7. Использование таблицы векторов прерываний

На материнской плате любого ПК расположен так называемый контроллер прерываний, В самых первых ПК у контроллера прерываний было восемь линий, по которым ему приходили сигналы от различных устройств, в ответ на которые он посылал CPU запрос на прерывание. После чего, получив от CPU подтверждение о приеме сигнала, контроллер прерывания сообщал CPU, от которого из восьми потенциальных источников прерываний пришел этот запрос. В ПК AT и во всех остальных моделях, появившихся позже, число входов в контроллер прерываний увеличилось с 8 до 15 или 16 (один из входов используется для объединения сигналов от восьми других, но в некоторых ситуациях он может использоваться и по своему прямому назначению).

Эти входы в контроллер прерываний называются линиями запроса на прерывание (interrupt request line) или линиями IRQ. Всего есть 16 линий, 9 из которых забирает шина ввода-вывода. По этим девяти линиям устройства, вставленные в слоты шины ввода-вывода, могут потребовать для себя внимание CPU. Оставшиеся линии IRQ отданы различным устройствам на материнской плате, например, контроллеру клавиатуры.

Карты, вставленные в слоты шины ISA, обычно не могут совместно использовать линии IRQ. Каждая линия IRQ может использоваться только одним таким устройством. С другой стороны, карты, вставленные в слоты PCI или CardBus, вполне могут совместно использовать линию IRQ с другими картами, поставленными на эти шины. Все сигналы, посылаемые по линиям IRQ, приходят на вывод процессора INTR. Вывод процессора NMI (вывод немаскируемого прерывания) обычно используется только для схемы перезагрузки (reset circuitry) ПК.

Различие между нормальными и немаскируемыми прерываниями заключается в следующем: получив запрос на нормальное прерывание, процессор может проигнорировать его, если ранее им была получена инструкция игнорировать прерывания. Факт возникновения прерывания запоминается, а его обработка откладывается до тех пор, пока у процессора не появится такая возможность.

Немаскируемые прерывания используются в ситуациях, когда задержка невозможна. Это похоже на сигнал тревоги. Схема перезагрузки пользуется немаскируемым прерыванием, чтобы достучаться до процессора, несмотря на все его намерения не отвлекаться и работать, работать, работать.

Программные прерывания

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

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

Исключения CPU

Помимо двух вышеперечисленных типов прерываний, Intel сочла удобным использовать этот механизм для обработки проблем, обнаруживаемых самим CPU. Например, если какая-то программа попытается обратиться к области памяти, на доступ к которой у нее нет никаких прав - так называемая общая ошибка защиты (general protection fault), CPU генерирует соответствующее прерывание. В ответ на это обработчик прерывания может вывести на экран диалоговое окно, сообщающее пользователю о некорректных действиях программы, после чего обработчик может принудительно завершить ее выполнение.

Вопрос №17:







Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.