Cтраница 2
Это слово-ссылка располагается в стеке над предыдущим MSCW. Затем в стек сбрасываются все регистры машины, используемые прерываемой программой, и помещаются два слова, идентифицирующие причину прерывания. МСР, которая, располагая всей необходимой информацией о причине прерывания, в свою очередь организует обращение к одной из процедур, обрабатывающей конкретное прерывание. [16]
Причины, по которым возникают прерывания, сопровождаются сигналами, называемыми запросами прерывания. Программы, выполнение которых прекращается по запросам прерывания, называются прерываемыми программами, а программы, затребованные запросами прерывания, - прерывающими. [17]
Оно определяется аппаратурными и программными средствами, обеспечивающими переключение работы процессора с прерываемой программы на прерывающую. В системах, допускающих прерывания различной глубины, время реакции существенно зависит также от временных характеристик запросов, обладающих более высоким приоритетом. [18]
Прерывание с одного уровня на другой заключается в следующем. Значение регистров ЦУ для границ защиты, базиса индекса, индикаторов, указателей вычислителя, СчАК и значение сумматора записывается в соответствующие разряды четвертой, пятой и шестой ячеек уровня прерываемой программы. Из соответствующих разрядов третьей, четвертой, пятой и шестой ячеек уровня прерывающей программы пересылается информация в регистры ЦУ для границ защиты, базиса индекса, индикаторов, СчАК, а также сумматора. [19]
Затем процессор выполняет программу обработки прерывания для уже завершенной операции ввода-вывода, возможно вызывая при этом другую операцию ввода-вывода. После обслуживания прерывания процессор возвращает управление прерванной программе. Наличие прерываний никак не влияет на работу прерываемой программы, кроме того, что время ее выполнения возрастет. [20]
Прерываемая программа и ее преемник используют регистры вычислителя для хранения результатов операций, индексов и базисных адресов. Если состояние регистра не дублируется ячейкой памяти, то на момент прерывания состояния регистров должны быть переданы в память, иначе говоря, должны быть локализованы. После локализации регистры могут использоваться программой-преемником без каких бы то ни было последствий для прерываемой программы. После завершения действий по прерыванию и выполнению соответствующих программ обслуживания прерывания прерванная программа начинается с восстановления состояния вычислителя по данным, зафиксированным в памяти на момент прерывания. Средства прерывания обеспечивают сохранение и восстановления всей информации, присутствовавшей в вычислителе и необходимой для дальнейшего продолжения программы. По этой причине возможность прерывания программы между двумя любыми ее командами совсем не сказывается на структуре самой программы. Формирование ССП и действия по локализации и восстановлению состояния программы и вычислителя выполняются аппаратурными и программными средствами. Обычно формирование и засылка в память ССП осуществляется схемами вычислителя, действия по локализации и восстановлению состояний регистров возлагаются на подпрограммы супервизора, обращение к которым происходит по сигналам прерывания. [21]
В системе, имеющей больше двух уровней бронируемого приоритета, функции, выполняемые на нижнем уровне, могут быть прерваны для выполнения функции ближайшего верхнего уровня. Однако выполнение этой функции тоже может быть забронировано функцией с еще более высоким приоритетом. Следовательно, ОС должна содержать данные, необходимые для обеспечения нескольких уровней бронирования и для возврата к каждой из прерываемых программ в определенной последовательности, соответствующей убыванию приоритета. [22]
Диспетчирование заключается в постоянном принятии решений о том, какой процесс нужно запускать следующим, и в соответствующей установке машинного счетчика команд, содержащего адрес очередной команды, которая подлежит выполнению. Конечно, для обеспечения возможности запуска процесса необходимо загрузить в регистры значения, находившиеся там в тот момент, когда данный процесс был прерван. Значение счетчика команд нужно установить равным адресу команды, логически следующей за последней выполнившейся до того, как работа программы была приостановлена. В некоторых случаях на диспетчер также возлагается обязанность хранить информацию о состоянии прерываемой программы, поскольку обработчик прерываний делает это далеко не во всех системах. Диспетчер принято рассматривать как фундаментальный элемент ядра и операционной системы в целом. Однако в принципе ядро может и не содержать соответствующего механизма. При этом все обязанности диспетчера выполняются либо одним из более высоких уровней системы, либо самими прикладными программами. Решение о том, включать диспетчер в ядро или не включать, зависит от предполагаемой степени информированности прикладных программ о составе мультипрограммной смеси, а также от принятого в системе разделения функций управления между элементами системы и программами пользователей. [23]
В таблице записаны команды безусловного перехода БЛ о, каждая из которых ведет к соответствующей подпрограмме прерывания. В момент прерывания в вычислителе формируется адрес ( В - f - К) строки таблицы прерываний, и управление передается по этому адресу. В результате выполнения команды безусловного перехода БП ак управление передается подпрограмме ППК. Базисный адрес В может изменяться в процессе работы системы, определяя каждый раз новую таблицу программ-преемников прерываемой программы. В простейшем случае адрес В фиксируется, определяя единственную таблицу переходов. При размещении таблицы переходов в ОЗУ сохраняется возможность модификации таблицы, путем изменения адресов в отдельных ее строках. Модификация таблицы выполняется программами супервизора. [24]
Состояние ЭВМ в текущий момент времени определяется сформированным в данный момент ССП, которое называется текущим ССП и размещается в соответствующем регистре. Задавая новое ССП или его часть, можно полностью или частично изменить состояние ЭВМ. В ЕС ЭВМ для каждого типа прерываний выделяются фиксированные ячейки памяти для хранения ССП: одна - для ССП прерываемой программы, т.е. старого ССП; другая - для хранения шаблона ССП, управляющего обработкой конкретного прерывания, т.е. нового ССП. Шаблоны новых ССП формируются при генерации операционной системы и только при загрузке ОС попадают в свои ячейки. [25]
Появление экстракодовой команды, соответствующей данному оператору, вызывает прерывание на шестой уровень. Программа КООРДИНАТОР запоминает в таблице ТК адрес начала ветви, фиксирует факт наличия входа по времени, обеспечивает продолжение программы и ведет отсчет времени. Через заданный интервал времени программа прерывается на указанную в операторе 0 ВРМ ветвь. Каждое выполнение оператора обеспечивает однократное прерывание на ветвь. При необходимости многократного прерывания, например через одинаковый интервал времени, данный оператор для первого по порядку прерывания записывается в прерываемой программе, а для последующих прерываний может быть записан в ветви. [26]
![]() |
Запись оператора 0 ВРМ. [27] |
Появление экстракодовой команды, соответствующей данному оператору, вызывает прерывание на шестой уровень. Программа КООРДИНАТОР запоминает в таблице ТК адрес начала ветви, фиксирует факт наличия входа по времени, обеспечивает продолжение программы и ведет отсчет времени. Через заданный интервал времени программа прерывается на указанную в операторе 0ВРМ ветвь. Каждое выполнение оператора обеспечивает однократное прерывание на ветвь. При необходимости многократного прерывания, например через одинаковый интервал времени, данный оператор для первого по порядку прерывания записывается в прерываемой программе, а для последующих прерываний может быть записан в ветви. [28]
Центральный процессор дает устройству команду начать операцию. После этого CPU начинает выполнять другую работу. Он больше не ждет окончания операции ввода-вывода. По завершении операции устройство прерывает работу CPU. Текущее содержимое счетчика PC и слова состояния процессора PSW запоминается в стеке, а управление передается специальной подпрограмме, называемой подпрограммой обработки прерываний. В этой подпрограмме содержатся команды, которые необходимо выполнить, когда устройство завершает операцию ввода-вывода. После окончания своей работы подпрограмма обработки прерываний возвращает управление в место, где произошло прерывание, восстанавливая содержимое PC и PSW из стека. Подпрограмма обработки прерываний не изменяет содержимого ни одного из регистров, используемых прерываемой программой. [29]