Обработка прерываний

Основной цикл работы компьютера

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

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

При выполнении каждой команды компьютер проделывает определенные стандартные действия:

1. согласно содержимого счетчика адреса команд, считывается очередная команда программы (ее код обычно заносится на хранение в регистр команд УУ);

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

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

4. действия 1-3 циклически повторяются до команды останова или наступления прерывания;

5. после выборки команды останова компьютер прекращает работу программы.

Это алгоритм работы линейного алгоритма. При изменении порядка вычислений для реализации развилки или цикла, достаточно в счетчик команд занести требуемый адрес (именно так происходит условный или безусловный переход).

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

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

Запросы на прерывание могут возникать из-за сбоев в аппаратуре, переполнения разрядной сетки, деления на ноль, требования внешним устройством выполнения операции ввода информации и т.д. Например, при нажатии клавиши на клавиатуре возникает прерывание, обработка которого сводится к записи кода нажатой клавиши в буфер клавиатуры.

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

После получения сигнала о прерывании процессор делает следующее:

- запоминает состояние прерванной программы;

- распознает источник прерывания;

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

- восстанавливает состояние прерванной программы и, при возможности, продолжает ее исполнение.

Назначение программы обработки прерываний – понять и в удобной для пользователя форме вывести на экран сообщение о причине прерывания, а иногда дать рекомендации о возможной реакции на эту причину.