Функции системы прерывания и общие решения по реализации
Система прерывания появилась в процессорах ЭВМ второго поколения, которые использовались, в основном, в качестве программных устройств управления различными объектами.
Основными причинами появления системы прерывания являются:
· желаниеразработчиков уменьшить простои ЭВМ при возникновении внештатных ситуаций в процессоре (попытки деления на ноль, использование несуществующей команды, сбой в устройстве и т.д.),
· желание разработчиков загрузить полезной работой процессор во время, когда он ожидает сигнал от управляемого объекта, т.е. желание реализовать фоновую работу ЭВМ.
Несмотря на то, что система прерывания появилась для разрешения двух разных по сути проблем, в современных ЭВМ используется единый механизм прерывания. Но, несмотря на единый механизм прерывания, различают особенности процедуры обработки прерываний при внештатных ситуациях в процессоре и при приходе сигналов прерывания от внешних устройств.
С переходом на многопрограммные режимы работы система прерывания стала обязательным компонентом всех ЭВМ. Система прерывания – это эффективный способ реализации контрольных и управляющих функций операционной системы для поддержки заданных режимов работы ЭВМ как аппаратно-программного комплекса.
С этой точки зрения система прерывания является интерфейсным слоем между аппаратными и программными средствами ЭВМ.
Процедура прерывания заключается в переходе на подпрограмму обработки прерывания с возможностью возврата в основную программу.
В этом изложении процедура прерывания совпадает с процедурой вызова подпрограммы с возвратом, например при выполнении команды call(вызов подпрограммы).Но эти процедуры имеют существенные различия в реализации
возможности возврата в основную программу.
Проблема заключается в том, что команды имеют определенное последействие, которое влияет на выполнение последующих команд. Например, выполнение команды условного перехода может зависеть от результата выполнения предыдущей команды.
Каждая команда (кроме NOP – команда протокола, которая предписывает ничего не делать, холостая команда) меняет контекст программы (имеет последействие), записывая результат выполнения в память, РОН или в регистр состояния.
Команды вызова процедуры с возвратом расставляются программистом с учетом такого последействия. Но прерывание – событие, в общем случае, случайное по отношению к программе. Программа обработки прерывания может изменить контекст программы, что может привести к нарушению корректности выполнения последующих команд основной программы.
По этой причине в процедуру прерывания включают этап сохранения контекста программы, а при возращении из процедуры – этап его восстановления.
Сохранение контекста может быть реализовано схемными, программными или схемно-программными способами. Наиболее часто используют схемно-программное сохранение контекста. При этом контекст делится на основную часть и дополнительную.
В основную часть входят коды условий и биты управления, собранные в регистр состояния программы (PSW – Program Status Word или PS). Для МП Intel – это регистр флагов (EFLAGS).
В дополнительную часть входит содержимое РОН и ячеек памяти.
Основная часть контекста сохраняется аппаратно, обычно в стек. Содержимое РОНов сохраняется и восстанавливается программой обработки прерывания, причем сохраняются и восстанавливаются только РОНы, используемые программой обработки прерывания.
Так как адресные пространства программ обработки прерывания и основной программы всегда разделяются, сохранение ячеек памяти в процедуре прерывания не предусмотрено.
В зависимости от причин, прерывания делятся на исключения (ловушки) и собственно прерывания.
Ловушка (Trap) – это реакция системы на появление в работе процессора нештатных ситуаций: попытка деления на ноль, выявление несуществующего адреса и т. д. К ловушкам относятся также специальные команды программируемого прерывания.
Прерывание (Interrupt) – это реакция системы на запрос внешнего устройства (сигнал прерывания) по выполнению процессором определенной процедуры управления.
Таким образом, ловушки выявляются схемами фиксации особых ситуаций в процессоре (штатных или нештатных), требующих контроля со стороны операционной системы. При этом с каждой схемой фиксации особых ситуаций связаны определенные программы обработки прерывания.
Сигналы прерывания – это сигналы от внешних по отношению к процессору устройств в моменты, требующие управляющих действий со стороны операционной системы.
Основными вопросами реализации системы прерывания являются:
· прием сигналов прерывания и ловушек и выделение приоритетного сигнала,
· определение момента выполнения процедуры прерывания,
· выбор процедуры прерывания (модели сохранения контекста и перехода на программу обработки прерывания),
· выбор процедуры возврата из процедуры прерывания (модели восстановления контекста и перехода на основную программу).
Прием сигналов прерывания и ловушек и выделение приоритетного сигнала.Прием сигналов (запросов) прерывания производится для определения конкретной программы обработки прерывания. В большинстве ЭВМ система прерывания предусматривает 256 программ обработки ситуаций, вызвавших запрос на прерывание. Каждая программа обработки прерывания связана с определенным источником прерывания и определяется номером прерывания. На рис. 4.1. представлена обобщенная схема приема и приоритетного выделения сигналов прерывания. Выбор сигнала прерывания определяет номер источника прерывания и программу обработки этого прерывания.
Рис. 4.1. Схема механизма приема и выделения сигналов прерывания
Однопроцессорная система не может выполнять программы обработки прерывания одновременно по нескольким запросам. Поэтому используется приоритетное выделение принимаемых сигналов прерывания. Здесь возможны варианты.
Прием сигналов может производиться по общему проводу. В этом варианте, для выявления источников сигналов прерывания производится последовательный опрос процессором всех возможных источников сигнала прерывания.
Последовательность опроса определяет приоритет сигнала прерывания устройства. При опросе все устройства, пославшие сигналы прерывания, в своих ответах определяют программы обработки прерывания.
Альтернативным способом приоритетного определения источника сигнала прерывания является прием сигналов прерываний от внешних устройств по индивидуальным проводам и фиксация их на отдельном регистре прерывания.
В этом случае в систему прерывания вводится схема приоритетного анализа поступивших сигналов. Для этого используется комбинационная схема, так называемый искатель левой единицы (ИЛЕ).
Эта схема задает жесткий приоритет сигналов прерывания. Но важность первоочередной обработки причин прерываний может меняться. Для этого в систему прерывания вводят регистр маски на те прерывания, приоритеты которых желательно менять. В том случае, изменяя значения бит регистра маски, отмечают сигналы прерываний, видимых искателю левой единицы. Примером может служить система прерывания семейства IBM 360.
В моделях этого семейства сигналы прерываний разделены на 5 классов. В каждом классе имеется своя схема приема и выделения сигналов прерывания, учитывающая специфику причин сигналов прерываний.
На рис 4.1 представлена упрощенная схема механизма системы прерывания. В этой схеме рассматривают только два крайних (по реализации выделения сигналов) класса системы прерывания.
В этой схеме производится параллельное определение самого приоритетного источника сигнала прерывания в схемах приема и выделения сигналов прерывания по отдельным классам и между классами. Источник прерывания (номер программы) определяется конкатенацией (сцепление литерных или битовых строк) номера класса прерывания с номером прерывания в выбранном классе прерываний.
Определение момента выполнения процедуры прерывания.Сигнал прерывания, в общем случае, не является сигналом немедленного действия. Обычно сигнал прерывания (от внешних устройств) или ловушки (от схем контроля выполнения операций) просто фиксируется в соответствующем разряде регистра прерывания.
Выполнение перехода на программу обработки ситуации всегда происходит с определенной задержкой (время реакции системы прерывания).
Здесь возможны несколько вариантов в выборе момента начала процедуры прерывания:
· Программы состоят из последовательностей автономных участков (процедур) с минимальным набором передаваемой информации. Обычно это содержимое памяти или РОН. Это точки с минимумом контекста. Программист может отмечать эти точки особыми командами для использования их в качестве команд прерывания. Но это решение значительно увеличивает среднее время реакции системы прерывания.
· Среднее время реакции системы прерывания значительно (в разы) сокращается, если процедуру прерывания производить сразу после окончания текущей команды.
· Имеется еще возможность уменьшения времени реакции системы прерывания, если процедуру прерывания начинать сразу после окончания не команды, а текущей части команды (микрооперации), во время которой появился запрос прерывания. Но при этом приходится дополнительно сохранять результат текущей микрооперации.
В подавляющем большинстве архитектур ЭВМ процедура прерывания производится по окончании текущей команды.
На рис. 4.2 представлена упрощенная схема цикла выполнения команды с фиксацией ловушки (внештатной ситуации) и проверкой сигнала прерывания.
Выполнение команд в процессоре является циклическим. Начинаем рассмотрение с процедуры выборки команды. Это начало цикла. Результатом этого этапа является выборка и анализ полей команды, адресов операндов и результата. Следующим этапом является этап выборки операндов. Последующие этапы производят дешифрацию кода операции и передачу команды в блоки выполнения. Последним этапом является этап сохранения результата и записи признака результата в регистр состояния.
Рис. 4.2. Блок схема цикла процессора с возможностью фиксации ловушки
На всех этапах этой микропрограммы работает встроенная аппаратная система непрерывного контроля безошибочности работы аппаратуры. При обнаружении ошибок (сбоев) на любом этапе выполнения команды система производит фиксацию ошибки. Перед началом каждого следующего этапа производится проверка корректности выполнения предыдущего этапа. В случае обнаружения ошибки, она фиксируется в специальном регистре как исключительная ситуация (ловушка), и управление передается (в обход всех последующих этапов) на блок проверки наличия сигналов прерывания или ловушки.
В случае обнаружения прерывания или ловушки производится соответствующая процедура прерывания или ловушки.
Дата добавления: 2021-01-26; просмотров: 379;