.
Начертательная геометрия Геометрическое черчение Инженерная графика Интегралы Математический анализ Матрицы Производные Векторная алгебра

 

4.5. Организация возврата к прерванной программе

 

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

В основную информацию можно включить:

·        содержимое счетчика адреса команд, т. е. адрес первой невыполненной команды прерванной программы;

·        триггер состояния системы: "рабочее" или состояние "ожидания";

·        маска прерывания, устанавливаемая каждой новой программой;

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

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

Указанная информация образует так называемое "слово состояния программы" (ССП) (иногда его называют вектором состояния программы), которое хранится в некотором поле памяти компьютера. В момент прерывания старое ССП, относящееся к прерванной программе, заменяется ССП прерывающей программы, а в конце прерывания старое ССП восстанавливается прерывающей программой. Для ускорения процесса замены ССП эту процедуру выполняют обычно аппаратным путем.

Замечание. В период сохранения и восстановления ССП прерывания любого уровня запрещены.

К дополнительной информации относят содержимое:

·        арифметических регистров;

·        индексных регистров;

·                 прочих программно-доступных регистров, общих для всех программ, и т. п.

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

На главную