Функции системы прерывания и общие решения по реализации
Система прерывания появилась в процессорах ЭВМ второго поколения, которые использовались, в основном, в качестве программных устройств управления различными объектами.
Основными причинами появления системы прерывания являются:
· желаниеразработчиков уменьшить простои ЭВМ при возникновении внештатных ситуаций в процессоре (попытки деления на ноль, использование несуществующей команды, сбой в устройстве и т.д.),
· желание разработчиков загрузить полезной работой процессор во время, когда он ожидает сигнал от управляемого объекта, т.е. желание реализовать фоновую работу ЭВМ.
Несмотря на то, что система прерывания появилась для разрешения двух разных по сути проблем, в современных ЭВМ используется единый механизм прерывания. Но, несмотря на единый механизм прерывания, различают особенности процедуры обработки прерываний при внештатных ситуациях в процессоре и при приходе сигналов прерывания от внешних устройств.
С переходом на многопрограммные режимы работы система прерывания стала обязательным компонентом всех ЭВМ. Система прерывания – это эффективный способ реализации контрольных и управляющих функций операционной системы для поддержки заданных режимов работы ЭВМ как аппаратно-программного комплекса.
С этой точки зрения система прерывания является интерфейсным слоем между аппаратными и программными средствами ЭВМ.
Процедура прерывания заключается в переходе на подпрограмму обработки прерывания с возможностью возврата в основную программу.
В этом изложении процедура прерывания совпадает с процедурой вызова подпрограммы с возвратом, например при выполнении команды Call.Но эти процедуры имеют существенные различия в реализации возможности возврата в основную программу.
Проблема заключается в том, что команды имеют определенное последействие, которое влияет на выполнение последующих команд. Например, выполнение команды условного перехода может зависеть от результата выполнения предыдущей команды.
Каждая команда (кроме NOP) меняет контекст программы (имеет последействие), записывая результат выполнения в память, РОН или в регистр состояния.
Команды вызова процедуры с возвратом расставляются программистом с учетом такого последействия. Но прерывание – событие, в общем случае, случайное по отношению к программе. Программа обработки прерывания может изменить контекст программы, что может привести к нарушению корректности выполнения последующих команд основной программы.
По этой причине в процедуру прерывания включают этап сохранения контекста программы, а при возращении из процедуры – этап его восстановления.
Сохранение контекста может быть реализовано схемными, программными или схемно-программными способами. Наиболее часто используют схемно-программное сохранение контекста. При этом контекст делится на основную часть и дополнительную.
В основную часть входят коды условий и биты управления, собранные в регистр состояния программы (PSW – Program Status Word или PS). Для МП Intel – это регистр флагов (EFLAGS).
В дополнительную часть входит содержимое РОН и ячеек памяти.
Основная часть контекста сохраняется аппаратно, обычно в стек. Содержимое РОНов сохраняется и восстанавливается программой обработки прерывания, причем сохраняются и восстанавливаются только РОНы, используемые программой обработки прерывания.
Так как адресные пространства программ обработки прерывания и основной программы всегда разделяются, сохранение ячеек памяти в процедуре прерывания не предусмотрено.
В зависимости от причин, прерывания делятся на исключения (ловушки) и собственно прерывания.
Ловушка (Trap)– это реакция системы на появление в работе процессора нештатных ситуаций: попытка деления на ноль, выявление несуществующего адреса и т. д. К ловушкам относятся также специальные команды программируемого прерывания.
Прерывание (Interrupt)– это реакция системы на запрос внешнего устройства (сигнал прерывания) по выполнению процессором определенной процедуры управления.
Таким образом, ловушки выявляются схемами фиксации особых ситуаций в процессоре (штатных или нештатных), требующих контроля со стороны операционной системы. При этом с каждой схемой фиксации особых ситуаций связаны определенные программы обработки прерывания.
Сигналы прерывания – это сигналы от внешних по отношению к процессору устройств в моменты, требующие управляющих действий со стороны операционной системы.
Основными вопросами реализации системы прерывания являются:
· прием сигналов прерывания и ловушек и выделение приоритетного сигнала,
· определение момента выполнения процедуры прерывания,
· выбор процедуры прерывания (модели сохранения контекста и перехода на программу обработки прерывания),
· выбор процедуры возврата из процедуры прерывания (модели восстановления контекста и перехода на основную программу).
Дата добавления: 2015-08-14; просмотров: 584;