
- •Операционные системы. Назначение и функции
- •Классификация операционных систем
- •Прерывания
- •Вычислительный процесс и ресурсы
- •Вычислительные процессы и задачи
- •Основные виды ресурсов и возможности их разделения
- •Управление задачами
- •Дисциплины диспетчеризации
- •Управление памятью в операционных системах. Память и отображение
- •Управление памятью в операционных системах. Методы распределения памяти
- •Управление памятью в операционных системах. Методы разрывного распределения памяти
- •Управление памятью в операционных системах. Методы разрывного распределения памяти (продолжение)
- •Управление вводом-выводом в операционных системах
- •Управление вводом-выводом в операционных системах (продолжение)
- •Организация внешней памяти на магнитных дисках
- •Управление ресурсами
- •Способы организации памяти
Прерывания
Содержание лекции:
- прерывания; их назначение и функции.
Цель лекции:
- ознакомиться с механизмом прерываний, используемым в операционных системах.
Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые состояния, возникающие при работе процессора, т.е. – это принудительная передача управления от выполняемой программы к системе (а через нее – к соответствующей программе обработки прерывания), происходящая при возникновении определенного события. Основная цель введения прерываний – реализация асинхронного режима функционирования и распараллеливание работы отдельных устройств вычислительного комплекса. Механизм прерываний реализуется аппаратно-программными средствами. Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут быть самыми разными, но имеют одну общую особенность – прерывание непременно влечет за собой изменение порядка выполнения команд процессором.
Механизм обработки прерываний независимо от архитектуры вычислительной системы подразумевает выполнение некоторой последовательности действий:
Шаг 1. Установление факта прерывания (прием сигнала запроса на прерывание) и идентификация прерывания.
Шаг 2. Запоминание состояния прерванного процесса вычислений. Состояние процесса выполнения программы определяется значением счетчика команд, содержимым регистров процессора, а также может содержать спецификацию режима и другую информацию.
Шаг 3. Управление аппаратно передается на подпрограмму обработки прерывания. В простейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры – информация из слова состояния.
Шаг 4. Сохранение информации о прерванной программе, которую не удалось спасти (на шаге 2) с помощью аппаратуры.
Шаг 5. Собственно выполнение программы, связанной с обработкой прерывания. Эта работа может быть выполнена той же подпрограммой, на которую было передано управление на шаге 3, но в ОС достаточно часто она реализуется путем последующего вызова соответствующей подпрограммы.
Шаг 6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).
Шаг 7. Возврат в прерванную программу.
Шаги 1-3 реализуются аппаратно, шаги 4-7 – программно.
Рисунок 3.1 - Обработка прерывания
На рисунке 3.1 показано, что при возникновении запроса на прерывание естественный ход вычислений нарушается и управление передается на программу обработки возникшего прерывания. При этом средствами аппаратуры сохраняется (с помощью механизмов стековой памяти) адрес той команды, с которой следует продолжить выполнение прерванной программы. После выполнения программы обработки прерывания управление возвращается на прерванную ранее программу посредством занесения в указатель команд сохраненного адреса команды, которую нужно было бы выполнить, если бы не возникло прерывание. Однако, такая схема используется только я самых простых программных средах. В мультипрограммных ОС обработка прерываний происходит по более сложным схемам.
Главные функции механизма прерываний:
Распознавание или классификация прерываний;
Передача управления соответствующему обработчику прерываний;
Корректное возвращение к прерванной программе.
Переход от прерываемой программы к обработчику и обратно должен выполняться как можно быстрей. Одним из самых простых и быстрых методов является использование таблицы, содержащей перечень всех допустимых прерываний и адреса соответствующих обработчиков. Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системной стеке (system stack).
Прерывания, возникающие при работе вычислительной системы, можно разделить на два основных класса: внешние (асинхронные) и внутренние (синхронные).
Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса:
прерывания от таймера;
прерывания от внешних устройств (прерывания по вводу-выводу);
прерывания по нарушению питания;
прерывания с пульта оператора вычислительной системы;
прерывания от другого процессора или другой вычислительной системы.
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями:
при нарушении адресации;
при наличии в поле кода операции незадействованной двоичной комбинации;
при делении на ноль;
вследствие переполнения или исчезновения порядка;
от средств контроля (обнаружение ошибки четности, ошибок в работе различных устройств);
попытка использования команды, запрещенной в данном режиме (привилегированные команды – команды ввода-вывода, переключения режима работы центрального процессора, команды инициализации некоторых системных регистров процессора).
Программные прерывания - это прерывания, которые происходят по соответствующей команде прерывания, т.е. процессор осуществляет практически те же действия, что и при обычных внутренних прерываниях. Этот механизм введен специально для того, чтобы, прежде всего, обеспечить автоматическое переключение процессора в привилегированный режим с возможностью исполнения любых команд.
Сигналы, вызывающие прерывания, формируются вне процессора или в самом процессоре и могут возникать одновременно. Выбор одного из них для обработки осуществляется на основе приоритетов, приписанных каждому прерыванию.
Рисунок 3.2 – Распределение прерываний по уровням приоритета.
На рисунке 3.2 изображен обычный порядок (приоритеты) обработки прерываний в зависимости от типа прерываний. Учет приоритета может быть встроен в технические средства, а также определяться ОС, т.е. допускается программно-аппаратное управление порядком обработки сигналов прерывания. Другой способ позволяет применять различные дисциплины обслуживания прерываний.
Наличие сигнала прерывания не обязательно должно вызывать прерывание исполняющейся программы. Процессор может обладать средствами защиты от прерываний: отключение системы прерываний, маскирование (запрет) отдельных сигналов прерывания. Программное управление этими средствами позволяет ОС регулировать обработку сигналов прерывания, заставляя процессор обрабатывать их сразу по приходу; откладывать обработку на некоторое время; полностью игнорировать прерывания. Обычно операция прерывания выполняется только после завершения выполнения текущей команды. Поскольку сигналы прерывания возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов, которые могут быть обработаны только последовательно в соответствии с назначенными приоритетами. Программное управление специальными регистрами маски (маскирование сигналов прерывания) позволяет реализовать различные дисциплины обслуживания:
с относительными приоритетами, т.е. обслуживание не прерывается даже при наличии запросов с более высокими приоритетами. После окончания обслуживания данного запроса обслуживается запрос с наивысшим приоритетом для организации такой дисциплины необходимо в программе обслуживания данного запроса наложить маски на все остальные сигналы прерывания или просто отключить систему прерываний.
с абсолютными приоритетами, т.е. всегда обслуживается прерывание с наивысшим приоритетом. На время обработки маскируются все запросы с более низким приоритетом, причем возможно многоуровневое прерывание (т.е. прерывание программ обработки прерываний).
по принципу стека (по дисциплине LCFS – Last Come First Served – последним пришел, первым обслужен), т.е. запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Для этого маска не накладывается ни на один из сигналов прерывания и не выключается система прерываний.
Для правильной реализации последних двух дисциплин нужно обеспечить полное маскирование системы прерываний при выполнении шагов 1-4 и 6-7. это необходимо для того, чтобы не потерять запрос и правильно его обслужить. Многоуровневое прерывание должно происходить на этапе обработки прерывания, а не на этапе перехода с одного процесса вычислений на другой.
ЛЕКЦИЯ № 4