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