Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #88, АПРЕЛЬ 2006 г.

Прервись на минутку

Weird aka Беренштейн Евгений

Хакер, номер #088, стр. 088-030-2


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

Что касается программных прерываний, то они возникают при выполнении особой команды процессора. Такие прерывания используются программистом намеренно — в нужном участке кода он просто вставляет ассемблерную команду INT, указывая после нее номер прерывания.

[приоретизация и маскирование прерываний]

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

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

[обработка на практике]

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

Назад на стр. 088-030-1  Содержание  Вперед на стр. 088-030-3