Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Функции и классификация прерываний



Перейдем к обсуждению одной из основных концепций построения операционной системы – концепции прерывания. Концепция прерывания является определяющей для понимания работы операционной системы. Понятие прерывания можно рассматривать с разных точек зрения.

Во-первых, это средство получения операционной системой информации о внешнем мире. Одна из основных задач операционной системы – управление работой всех устройств, входящих в состав ЭВМ. Поэтому операционная система обязана оперативно следить за всеми изменениями, происходящими во внешних устройствах. Например, на центральном процессоре выполняется некоторая программа и в это время нажимается клавиша на клавиатуре. В такой ситуации необходимо прервать выполняющуюся программу, сохранить код нажатой клавиши в клавиатурном буфере и затем вернуть управление прерванной программе.

Во-вторых, прерывание можно рассматривать, как механизм, позволяющий реагировать на различные события. Например, организация реакции на искажение информации, при ее передаче между компонентами вычислительной системы.

В-третьих, используя механизм прерываний, операционная система осуществляет переключение задач.

Обобщая сказанное выше, отметим, что механизм прерываний существует для организации оперативного реагирования на различные события, происходящие в вычислительной системе. Каждому событию, на которое операционная система предполагает организовывать реакцию, соответствует определенный номер прерывания и, соответствующая этому номеру программа-обработчик прерывания.

Чтобы связать адрес обработчика прерывания с номером прерывания используется таблица векторов прерываний, занимающая 1 Кбайт оперативной памяти. Номера прерываний определяют разработчики операционной системы. Адреса всех предусмотренных программ-обработчиков прерываний хранятся в системной области оперативной памяти – таблице векторов прерываний. Вектор прерывания – это фактически адрес (точка входа) программы, предназначенной для обработки данного номера прерывания. Задача операционной системы распознать номер прерывания и запустить соответствующую номеру программу - обработчик.

Рассмотрим, как классифицируются прерывания в вычислительных системах, соответствующих персональным компьютерам (процессор Intel). Выделяют три типа прерываний.

1. Аппаратные (внешние) прерывания. Прерывания данного типа поступают от внешних устройств и информируют операционную систему о событиях, связанных с этими устройствами. Например, нажата клавиша, перемещение мыши, завершилась печать символа, прочитан сектор на диске и так далее.

2. Внутренние прерывания (исключения).

Предназначены для организации реакции на события, происходящие в самом процессоре. К таким событиям можно отнести:

- аппаратное немаскируемое прерывание;

- деление на 0;

- переполнение;

- неопределенный код операции;

- другие события.

3. Программные прерывания. Перечисленные выше типы прерываний являются асинхронными, т. е. они происходят в непредсказуемые моменты времени. Программные прерывания вызываются из работающей программы и, в этом смысле, являются синхронными. Назначение программных прерываний – это получение прикладными программами сервиса от операционной системы. Заметим, что прикладные программы обращаются к модулям операционной системы только через прерывания. При необходимости получить обслуживание от операционной системы, прикладная программа выдает специальную команду, которая, поступив в процессор, возбудит процедуру обработки прерывания. Например, команда int 10h, здесь int – мнемоника кода команды, соответствующего запросу на программное прерывание, 10 – номер прерывания (запрашиваемый сервис).

Механизмы прерываний.

 

Перейдем к обсуждению механизма обработки прерывания. В общем случае, механизм обработки прерываний может состоять из двух частей – аппаратной и программной. Соотношение этих частей зависит от архитектуры процессора, но обязательным результатом аппаратного механизма является смена состояния процессора.

 Назовем текущим состоянием процессора содержимое регистров CS, IP и FLAGS. Как известно, в реальном режиме процессора Intel адрес команды, которая должна быть выполнена следующей, хранится в регистрах CS и IP. В момент прерывания эти регистры показывают на ту команду, которая была бы выполнена, если бы не было прерывания. Центральный процессор в архитектуре Intel воспринимает сигнал прерывания между командами, но не во время выполнения. Этот факт значительно упрощает обработку прерывания.

Рассмотрим аппаратный механизм обработки прерывания, т. е. ту часть обработки, которая выполняется аппаратурой (процессором) и, с точки зрения операционной системы, происходит автоматически. Если во внешнем устройстве произошло событие, требующее внимание операционной системы, контроллер внешнего устройства выставит на определенный провод (линию IRQ), соединяющий контроллер внешнего устройства с процессором, запрос на прерывание, назовем его сигнал int. Получив сигнал int, процессор отождествляет его с определенной программой обработчиком. Затем текущее состояние процессора, а это адрес следующей команды (содержимое регистров CS и IP) + содержимое регистра FLAGS, аппаратно запоминается в определенном месте оперативной памяти. Например, этим местом может быть стек прерываемой программы. Значит, на аппаратном уровне минимально запоминается адрес следующей команды прерываемой программы + направление ветвления вычислительного процесса на момент прерывания, если прерывается команда условного перехода (данная информация хранится в регистре FLAGS). Далее, вектор (строка) из таблицы векторов прерываний загружается в регистры процессора CS и IP, что автоматически означает начало работы программы обработчика прерываний.

Сохранение адреса команды прерываемого процесса недостаточно для его нормального восстановления, Необходимо сохранить так называемый контекст, в котором могут храниться промежуточные результаты работы прерываемого процесса. Назовем контекстом содержимое внутренних регистров процессора (местная память). Работа по сохранению контекста, в зависимости от архитектуры процессора и операционной системы, может быть выполнена, либо на аппаратном уровне, либо программно (операционной системой).

После сохранения всей необходимой информации для возврата к прерванной программе (адрес следующей команды, направление ветвления, если команда условного перехода, контекст) операционная система (обработчик прерывания) выполняет собственно действия по обработке прерывания. Этими действиями, например, могут быть:

- чтение сектора диска в оперативную память;

- ввод кода нажатой клавиши в буфер клавиатуры

- выдача очередного блока данных в регистр данных последовательного адаптера.

После того как необходимые действия по обработке прерывания произведены, выполняется возврат к прерванной программе. Для этого необходимо восстановить всю запомненную информацию (адрес команды на момент прерывания и контекст прерванной программы).

Независимо от архитектуры вычислительной системы подсистема обработки прерывания должна выполнить следующие шаги:

- зафиксировать факт прерывания, прием сигнала запроса на прерывание от соответствующего контроллера внешнего устройства;

- сохранить всю необходимую информацию о прерываемой программе (для возможности последующего восстановления);

- аппаратная передача управления на программу – обработчик прерывания

- выполнение необходимых действий, связанных с собственно обработкой прерывания;

- после обработки прерывания необходимо восстановить запомненную информацию о прерванной программе (возврат к прерванной программе).

В вычислительной системе возможны ситуации, когда одновременно несколько внешних устройств потребуют внимания операционной системы, т. е. одновременно выставят на линии IRQ сигналы запроса на прерывания. Для разрешения такой ситуации в вычислительной системе предусмотрен контроллер прерываний, выполняющий функцию арбитра. Все линии IRQ от внешних устройств поступают в контроллер прерываний и, при наличии одновременно нескольких запросов, контроллер выбирает наиболее приоритетный запрос. Контроллер выбирает запрос в соответствии с заложенной в него схемой приоритетов.

Возможны ситуации, когда желательно выполнить системный код без его прерывания. Для этого в операционных системах предусмотрена возможность маскирования прерываний (отключение на некоторое время). Эта возможность касается только аппаратных прерываний. Маскированием прерываний можно управлять при помощи специального флага (разряда) регистра процессора FLAGS. Этот флаг имеет название IF (Interrupt Flag). Причем, если IF =1, то процессору разрешено реагировать на сигналы прерывания от внешних устройств, если же IF=0, то все прерывания от внешних устройств отключены.

В системе команд процессора существуют специальные команды для работы с флагом IF:

- STI – установить флаг в 1 (разрешить все прерывания от внешних устройств);

- CLI - сбросить флаг в 0 (запретить прерывания от всех внешних устройств).

Маскирование прерываний от конкретных устройств ввода-вывода, например, исключительно от таймера или исключительно от клавиатуры осуществляется программированием контроллера прерываний.

Необходимо подчеркнуть, что возможно маскирование только прерываний от внешних устройств. Существуют аппаратные прерывания, отключать которые не имеет смысла, это прерывания от схем контроля машины, так называемые немаскируемые прерывания.

Наличие в системе прерываний схемы приоритетов и возможности отключения, как всех внешних прерываний, так и выборочно, от конкретных устройств ввода-вывода, позволяет операционной системе регулировать обработку сигналов прерывания, т. е. обрабатывать их сразу по приходу или откладывать обработку на некоторое время или полностью игнорировать прерывание. Прерывания могут обрабатываться процессором только последовательно, а сигналы прерывания возникают в произвольные моменты времени, поэтому наличие схемы приоритетов позволяет обработать сигналы прерывания в разумном порядке – сигнал с более высоким приоритетом обрабатывается в первую очередь, остальные на время откладываются.

Операционная система может реализовать различные дисциплины обслуживания прерываний.

1. Дисциплина с относительными приоритетами. В этом случае обслуживание прерывания не прерывается даже при наличии запросов с более высокими приоритетами. После полной обработки текущего запроса (окончание обслуживания) система переходит к обработке запроса с наивысшим приоритетом. Это возможно, потому что поступающие запросы на прерывание могут храниться в контроллере прерываний до их востребования.

2. Дисциплина с абсолютными приоритетами. В этом случае всегда обслуживается прерывание с наивысшим приоритетом. Текущую обработку прерывания может прервать только запрос с более высоким приоритетом. При этом наблюдается многоуровневое прерывание.

3. Дисциплина, организованная по принципу стека. Запросы с низким приоритетом прерывают обработку прерываний с более высоким приоритетом.

В заключение приведем общую схему обработки прерывания в операционных системах.

В однозадачных операционных системах программа обработчик имеет три выраженные секции:

1. Маскирование всех внешних прерываний. Затем при отключенных внешних прерываниях осуществляется ответственная часть системного кода по сохранению контекста прерываемой программы.

2. Выполнение непосредственной работы по обработке запроса на прерывание.

3.Восстановление контекста прерванной программы.

Для многозадачных операционных систем характерна следующая схема обработки прерывания.

Причины прерывания (идентификацию прерывания) определяет специальный модуль операционной системы – супервизор прерываний. Супервизор прерываний сохраняет в дескрипторе текущей задачи ее контекст, т. е. содержимое рабочих регистров. (Дескриптор задачи – это некоторая системная структура, хранящая всю необходимую информацию для операционной системы о выполняющейся задаче).

 Далее супервизор прерываний определяет конкретную программу обработки идентифицированного прерывания и передает ей управление.

Выполняется собственно обработка прерывания, по окончанию которой управление обязательно передается диспетчеру задач. (Диспетчер задач – модуль операционной системы, осуществляющий по заданному алгоритму выбор очередной задачи на выполнение). (С дескриптором задачи и с диспетчером задач мы подробно познакомимся в соответствующих разделах курса).

Диспетчер задач на основе принятой дисциплины обслуживания производит выбор готовой к выполнению задачи. В общем случае это может быть не та задача, обработка прерывания которой была только что завершено. 

Затем диспетчер задач восстанавливает контекст выбранной задачи.

Вопросы для самопроверки

1. Каким образом операционная система получает информацию о внешнем мире.

2. Назначение таблицы векторов прерываний.

3. Поясните суть программно-аппаратного механизма прерываний.

4. Что понимают под контекстом процесса.

5. Возможности операционных систем по маскированию прерываний.

 

ГЛОССАРИЙ

1. РЕГИСТР – Внутренние регистры процессора, ячейки памяти, являющиеся частью процессора.

2. СИСТЕМА КОМАНД – Совокупность операций, которые «понимает» процессор.


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 552; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.023 с.)
Главная | Случайная страница | Обратная связь