Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции / Черкасова_тексты_лекций_операционные_системы_2.doc
Скачиваний:
1
Добавлен:
11.02.2026
Размер:
1.12 Mб
Скачать

Концепция прерываний

Большинство изменений в ОС происходит в результате прерываний, которые вызывают процессы в ОС. Можно сказать, что программы обработки прерываний представляют собой движущую силу, обеспечивающую функционирование всех систем. Иногда говорят, что ОС является управляемой по прерываниям.

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

Прерывания делятся на три категории:

  1. внешние аппаратные прерывания, происходящие в результате событий, которые осуществляются вне процессора (например, нажатие клавиши);

  2. внутренние аппаратные, вырабатываемые самим процессором;

  3. программные прерывания, инициируемые выполняемой программой по специальной команде, чтобы получить сервисные услуги ОС.

Второй тип прерываний можем разделить на следующие:

  1. ошибка процессора (деление на 0, несовпадение четности и т.д.);

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

  3. прерывания от каналов ввода-вывода.

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

Можно организовать различные схемы структур прерываний.

Во-первых, вместо области сохранения можно предусмотреть группы регистров для хранения сразу нескольких векторов состояния.

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

Применяется также система масок прерываний, обрабатываемых некоторыми специальными командами.

И наконец, можно рассматривать большее число классов прерываний.

Основным механизмом функционирования MS DOS является система прерываний.

Каждое прерывание имеет уникальный номер, и с ним связана определенная подпрограмма. Когда вызывается прерывание, процессор останавливает свою работу и выполняет прерывание. Затем загружается адрес программы обработки прерывания и ей передается управление. После окончания её работы управление передается основной программе, которая была прервана.

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

В IBM-совместимом компьютере имеется 256 различных прерываний с номерами от 0 до OFFH (номера представлены в виде шестнадцатеричных цифр). В самом начале адресного пространства памяти машины расположена таблица адресов прерываний. Каждый из этих адресов указывает на процедуру в памяти, которая будет исполнена в результате возникновения прерывания. Адреса программ прерываний чаще называют векторами. Каждый вектор прерывания имеет длину 4 байта. Таким образом, вектора располагаются в памяти компьютера с адреса 0 до 3FFH. При возникновении любого прерывания, значения регистра флагов процессора и текущее значение счетчика команд CS:IP автоматически сохраняются в стеке, прерывания временно запрещаются и выполняется переход по вектору прерывания.

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

Аппаратные прерывания относятся к прерываниям низшего уровня, им присвоены младшие номера, и обслуживает их базовая система ввода-вывода.

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