Загрузил Alex Bragin

ОС Прерывания

реклама
Тема. ПРЕРЫВАНИЯ
ОПЕРАЦИОННЫЕ СИСТЕМЫ И СРЕДЫ
Прерывания представляют собой механизм, позволяющий
координировать параллельное функционирование отдельных
устройств вычислительной системы и реагировать на особые
состояния, возникающие при работе процессора, то есть
прерывание - это принудительная передача управления от
выполняемой программы к системе (а через нее - к
соответствующей программе обработки прерывания),
происходящая при возникновении определенного события.
Основная цель введения прерываний - реализация
асинхронного режима функционирования и распараллеливание
работы отдельных устройств вычислительного комплекса.
Механизм прерываний реализуется аппаратно-программными
средствами. Структуры систем прерывания (в зависимости от
аппаратной архитектуры) могут быть самыми разными, но все
они имеют одну общую особенность - прерывание непременно
влечет за собой изменение порядка выполнения команд
процессором.
Механизм обработки прерываний независимо от архитектуры
вычислительной системы подразумевает выполнение
некоторой последовательности шагов.
1. Установление факта прерывания (прием сигнала запроса на
прерывание) и идентификация прерывания (в операционных
системах идентификация прерывания иногда осуществляется
повторно, на шаге 4).
2. Запоминание состояния прерванного процесса вычислений.
Состояние процесса выполнения программы определяется,
прежде всего, значением счетчика команд (адресом следующей
команды, который, например, в i80x86 определяется
регистрами СS и IР - указателем команды ), содержимым
регистров процессора, и может включать также спецификацию
режима (например, режим пользовательский или
привилегированный) и другую информацию.
3. Управление аппаратно передается на подпрограмму обработки
прерывания. В простейшем случае в счетчик команд заносится
начальный адрес подпрограммы обработки прерываний, а в
соответствующие регистры - информация из слова состояния. В
более развитых процессорах, например в 32-разрядных
микропроцессорах фирмы Intel (начиная с i80386 и включая
последние процессоры Pentium IV) и им подобных,
осуществляются достаточно сложная процедура определения
начального адреса соответствующей подпрограммы обработки
прерывания и не менее сложная процедура инициализации
рабочих регистров процессора
4. Сохранение информации о прерванной программе, которую не
удалось спасти на шаге 2 с помощью аппаратуры. В некоторых
процессорах предусматривается запоминание довольно большого
объема информации о состоянии прерванных вычислений.
5. Собственно выполнение программы, связанной с обработкой
прерывания. Эта работа может быть выполнена той же
подпрограммой, на которую было передано управление на шаге 3, но
в ОС достаточно часто она реализуется путем последующего вызова
6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).
7. Возврат на прерванную программу.
Шаги 1-3 реализуются аппаратно, шаги 4-7 - программно.
Прерывание
Исполняемая
программа
Отключение
прерываний, сохранение
контекста прерванной
программы, установка
режима работы системы
прерываний
Собственно тело
программы
обработки
прерываний
Восстановление
контекста прерванной
ранее программы,
установка прежнего
режима работы системы
прерываний
Обработка прерывания
Главные функции механизма прерываний - это:
 распознавание или классификация прерываний;
 передача управления соответствующему обработчику
прерываний;
 корректное возвращение к прерванной программе.
Для корректного возвращения к прерванной программе
перед передачей управления обработчику прерываний
содержимое регистров процессора запоминается либо в
памяти с прямым доступом, либо в системном стеке (system
stack).
Два основных класса:
 внешние (или асинхронные);
 внутренние (синхронные).
Внешние прерывания вызываются асинхронными событиями,
которые происходят вне прерываемого процесса, например:
 прерывания от таймера;
 прерывания от внешних устройств (прерывания по вводувыводу);
 прерывания по нарушению питания;
 прерывания с пульта оператора вычислительной системы;
 прерывания от другого процессора или другой
вычислительной системы.
Внутренние прерывания вызываются событиями, которые
связаны с работой процессора и являются синхронными с его
операциями. Примерами являются следующие запросы на
прерывания:
 при нарушении адресации;
 при наличии в поле кода операции незадействованной
двоичной комбинации; при делении на ноль;
 вследствие переполнения или исчезновения порядка;
от средств контроля (например, вследствие обнаружения
7
Существуют программные прерывания. Эти прерывания
происходят по соответствующей команде прерывания (INT), то
есть по этой команде процессор осуществляет практически те
же действия, что и при обычных внутренних прерываниях.
Этот механизм был специально введен для того, чтобы
переключение на системные программные модули происходило
не просто как переход на подпрограмму, а точно таким же
образом, как и обычное прерывание. Этим, прежде всего,
обеспечивается автоматическое переключение процессора в
привилегированный режим с возможностью исполнения любых
команд.
Средства контроля
процессора
Высокий
приоритет
Системный таймер
Магнитные диски
Внешние устройства
Сетевое
оборудование
Терминалы
Программные прерывания
Низкий
приоритет
Сигналы, вызывающие прерывания, формируются вне
процессора или в самом процессоре, они могут возникать
одновременно. Выбор одного из них для обработки
осуществляется на основе приоритетов, приписанных каждому
типу прерывания. Учет приоритета может быть встроен в
технические средства, а также определяться операционной
системой
Процессор может обладать средствами защиты от прерываний:
 отключение системы прерываний;
 маскирование (запрет) отдельных сигналов прерывания;
Программное управление этими средствами позволяет
операционной системе:
• регулировать обработку сигналов прерывания, заставляя
процессор обрабатывать их сразу по приходу;
• откладывать обработку на некоторое время;
• полностью игнорировать прерывания.
Операция прерывания выполняется только после завершения
выполнения текущей команды. Поскольку сигналы
прерывания возникают в произвольные моменты времени, то
на момент прерывания может существовать несколько
сигналов прерывания, которые могут быть обработаны только
последовательно. Чтобы обработать сигналы прерывания в
разумном порядке, им присваиваются приоритеты. Сигнал с
более высоким приоритетом обрабатывается в первую очередь,
обработка остальных сигналов прерывания откладывается.
Программное управление специальными регистрами маски
(маскирование сигналов прерывания) позволяет реализовать
различные дисциплины обслуживания:
• c относительными приоритетами, то есть обслуживание не
прерывается даже при наличии запросов с более высокими
приоритетами. После окончания обслуживания данного запроса
обслуживается запрос с наивысшим приоритетом, путем наложения
маски на все остальные сигналы прерывания или просто отключить
систему прерываний;
• c абсолютными приоритетами, то есть всегда обслуживается
прерывание с наивысшим приоритетом, т.е. на время обработки
прерывания замаскировать все запросы с более низким приоритетом.
При этом возможно многоуровневое прерывание. Число уровней
прерывания в этом режиме изменяется и зависит от приоритета
запроса.
• по принципу стека (последним пришел, первым обслужен), то есть
запросы с более низким приоритетом могут прерывать обработку
прерывания с более высоким приоритетом (не накладывается маска
ни на один из сигналов прерывания и не выключается система
прерываний.
Супервизор прерываний.
Супервизор прерываний:
• сохраняет в дескрипторе текущей задачи рабочие
регистры процессора, определяющие контекст
прерываемого вычислительного процесса;
• определяет ту подпрограмму, которая должна выполнить
действия, связанные с обслуживанием настоящего
(текущего) запроса на прерывание;
• перед тем, как передать управление на эту подпрограмму,
супервизор прерываний устанавливает необходимый
режим обработки прерывания.
После выполнения подпрограммы обработки прерывания
управление вновь передается ядру операционной системы.
Обработка прерывания при участии супервизоров ОС
Скачать