Cтраница 1
Выполнение прерывающей программы начинается с запоминания в памяти содержимого тех общих регистров и регистров плавающей точки, которые ею будут использованы. Далее выполняется собственно прерывающая программа, которая начинается с анализа кода прерывания и определения конкретной причины прерывания и инициирования подпрограммы отработки прерывания, соответствующей этой причине. [1]
Выполнение прерывающей программы начинается с запоминания в памяти содержимого тех общих регистров и регистров плавающей запятой, которые ею будут использованы. Далее выполняется собственно прерывающая программа, которая начинается с анализа кода прерывания и определения конкретной причины прерывания и инициирования подпрограммы отработки прерывания, соответствующей этой причине. [2]
После выполнения прерывающей программы происходит возврат к прерванной. Для этого прерывающую программу заключает команда Возврат из прерывания или, иначе, Загрузить ( восстановить) ССП. В ЭВМ общего назначения из ячейки ОП, в которой хранится ССП прерванной программы, извлекается и вновь становится текущим старое ССП. В мини - и микроЭВМ по этой команде старое ССП извлекается из магазинной памяти. [3]
![]() |
Прерывание при использовании ССП. [4] |
В конце выполнения прерывающей программы для перехода к прерванной программе старое ССП записывается в качестве текущего. [5]
После окончания выполнения прерывающей программы микропроцессор возвращается к выполнению основной программы с команды, на которой произошло прерывание. [6]
После окончания выполнения прерывающей программы возврат в основную программу происходит следующим образом. В процессе выполнения этой команды адрес команды основной программы, перед которой произошло прерывание, выбирается из стека и передается в регистр адреса, а увеличенное на единицу значение заносится в счетчик команд. [7]
![]() |
Сравнение методов сохранения целостности подпрограмм. [8] |
Если подпрограмма длинна или содержит большие процедуры с циклами, выполнение прерывающей программы может сильно задержаться из-за ожидания завершения прогона подпрограммы. По этой же причине применение данного метода ограничено случаями, когда вероятность затора весьма мала, а результирующая случайная задержка не играет роли. [9]
![]() |
Прерывание в системах с различной глубиной прерывания. [10] |
В системах с единичной глубиной прерывания ( рис. 8 - 2 6) очередность выполнения прерывающих программ определяется, главным образом, порядком поступления запросов прерывания во времени. Во время исполнения прерывающей программы никакие другие прерывания невозможны. В системах с большей глубиной прерывания ( рис. 8 - 2, в) прерывающая программа может быть прервана другой программой, а прерванная программа в свою очередь может быть прерывающей по отношению к другой программе. Следовательно, увеличение глубины прерывания принципиально позволяет уменьшить время реакции системы на запрос прерывания. [11]
![]() |
Прерывание в системах с различной глубиной прерывания. [12] |
На рис. 8 - 2 показано, как влияет глубина прерывания на задержки в выполнении прерывающих программ для систем с различной-глубиной. [13]
На рис. 8 - 2 показано, как влияет глубина прерывания на задержки в выполнении прерывающих программ для систем с различной глубиной. [14]
В системах с единичной глубиной прерывания ( рис. 8 - 2, б) очередность выполнения прерывающих программ определяется, главным образом, порядком поступления запросов прерывания во времени. Во время исполнения прерывающей программы никакие другие прерывания невозможны. В системах с большей глубиной прерывания ( рис. 8 - 2, в) прерывающая программа может быть прервана другой программой, а прерванная программа в свою очередь может быть прерывающей по отношению к другой программе. Следовательно, увеличение глубины прерывания принципиально позволяет уменьшить время реакции системы на запрос прерывания. [15]