Прерывания
Определение прерывания Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые состояния, возникающие при работе процессора, то есть прерывание это принудительная передача управления от выполняемой программы к системе ( а через нее к соответствующей программе обработки прерывания ), происходящая при возникновении определенного события.
Основная цель прерываний Идея прерывания была предложена также очень давно в середине 50- х годов, и можно без преувеличения сказать, что она внесла наиболее весомый вклад в развитие вычислительной техники. Основная цель введения прерываний реализация асинхронного режима функционирования и распараллеливание работы отдельных устройств вычислительного комплекса.
Особенность прерывания Механизм прерываний реализуется аппаратно - программными средствами. Структуры систем прерывания ( в зависимости от аппаратной архитектуры ) могут быть самыми разными, но все они имеют одну общую особенность прерывание непременно влечет за собой изменение порядка выполнения команд процессором.
Механизм обработки прерываний 1. Установление факта прерывания ( прием сигнала запроса на прерывание ) и идентификация прерывания ( в операционных системах идентификация прерывания иногда осуществляется повторно, на шаге 4).
Прерывания 2. Запоминание состояния прерванного процесса вычислений. Состояние процесса выполнения программы определяется, прежде всего, значением счетчика команд, содержимым регистров процессора, и может включать также спецификацию режима ( например, режим пользовательский или привилегированный ) и другую информацию.
Прерывания 3. Управление аппаратно передается на подпрограмму обработки прерывания. В простейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры информация из слова состояния.
Прерывания 4. Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью аппаратуры. В некоторых процессорах предусматривается запоминание довольно большого объема информации о состоянии прерванных вычислений.
Прерывания 5. Собственно выполнение программы, связанной с обработкой прерывания. Эта работа может быть выполнена той же подпрограммой, на которую было передано управление на шаге 3, но в операционных системах достаточно часто она реализуется путем последующего вызова соответствующей подпрограммы.
Прерывания 6. Восстановление информации, относящейся к прерванному процессу ( этап, обратный шагу 4). 7. Возврат на прерванную программу. Шаги 1-3 реализуются аппаратно, шаги 4-7 программно.
главные функции механизма прерываний : распознавание или классификация прерываний ; передача управления соответствующему обработчику прерываний ; корректное возвращение к прерванной программе.
Классы прерываний : Прерывания, возникающие при работе вычислительной системы, можно разделить на два основных класса : внешние ( их иногда называют асинхронными ) и внутренние ( синхронные ).
Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса, например : прерывания от таймера ; прерывания от внешних устройств ( прерывания по вводу - выводу ); прерывания по нарушению питания ; прерывания с пульта оператора вычислительной системы ; прерывания от другого процессора или другой вычислительной системы.
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Примерами являются следующие запросы на прерывания : О при нарушении адресации ( в адресной части выполняемой команды указан запрещенный или несуществующий адрес, обращение к отсутствующему сегменту или странице при организации механизмов виртуальной памяти ); при наличии в поле кода операции незадействованной двоичной комбинации ; при делении на ноль ; О вследствие переполнения или исчезновения порядка ; О от средств контроля ( например, вследствие обнаружения ошибки четности, ошибок в работе различных устройств ).
программные прерывания Эти прерывания происходят по соответствующей команде прерывания, то есть по этой команде процессор осуществляет практически те же действия, что и при обычных внутренних прерываниях. Этот механизм был специально введен для того, чтобы переключение на системные программные модули происходило не просто как переход на подпрограмму, а точно таким же образом, как и обычное прерывание. Этим, прежде всего, обеспечивается автоматическое переключение процессора в привилегированный режим с возможностью исполнения любых команд.