Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
33__33__33__33_ItogOS.docx
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
1.55 Mб
Скачать
  1. Последовательность обработки прерываний (запоминание контекста)

Механизм обработки прерываний независимо от архитектуры вычислительной системы включает следующие элементы:

1.     Установление факта прерывания (прием сигнала на прерывание) и идентификация прерывания (в операционных системах иногда осуществляется повторно, на шаге 4).

2.     Запоминание состояния прерванного процесса. Состояние процесса определяется прежде всего значением счетчика команд (адресом следующей команды), содержимым регистров процессора и может включать также спецификацию режима (например, режим пользовательский или при­вилегированный) и другую информацию. Наиболее удобным местом хранения регистров является стек. (для 32-разрядных микропроцессорах i80x86: ) После сохранения регистров в стеке микропроцессор сбрасывает бит флага IF (т.е.=0). Этим предотвращается возможность возникновения вложенных внешних прерываний и порча регистров исходной программы вследствие неконтролируемых действий со стороны программы - обработчика вложенного прерывания.

3.     Управление аппаратно передается подпрограмме обработки прерывания. В про­стейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры — информация из слова состояния.

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

5. Обработка прерывания. Эта работа может быть выполнена той же подпрограммой, которой было передано управление на шаге 3, но в ОС чаще всего она реализуется путем последующего вызова соответствующей подпрограммы.

6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).

7. Возврат в прерванную программу.

Сохранение и восстановление состояния процессора и содержимого регистров называют операцией контекстного переключения.

  1. Последовательность обработки прерываний (собственно обработка прерывания)

1) установление факта прерывания и запоминание прерванного процесса

2) переход к выполнению и выполнение программы обработки прерывания;

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

 Обработка прерывания.

 Восстановление прерванного процесса и возврат в прерванную программу.

Здесь определяется источник прерывания (его номер, например, прерывание с номером 9 - прерывание от клавиатуры, которое генерируется при нажатии и при отжатии клавиши) и вызывается соответствующий обработчик прерывания. Обработчик прерываний – программа обработки прерывания, являющаяся частью ОС, предназначенная для выполнения ответных действий на условие, вызвавшее прерывание.

Адреса программ, соответствующих различным прерываниям, собраны в таблицу, которая называется таблицей векторов прерываний. В реальном режиме микропроцессора таблица находится в первом килобайте оперативной памяти. Под каждый вектор отведено 4 байта (2 байта под адрес сегмента, в котором находится программа-обработчик, и 2 байта под смещение начала программы-обработчика прерывания от начала кодового сегмента ), т.е. в таблице может содержаться 256 векторов.

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

Далее выполняется сама программа обработки прерывания. (Она тоже может быть прервана поступлением запроса от более приоритетного источника. Все источники прерывания имеют приоритеты.)

3) возврат управления прерванной программе.

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

Вопросы 47,48 чисто по лекции:

Последовательность действий при обработке прерываний

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

  2. Сохраняется некоторая часть контекста прерванного потока, которая позволит возобновить его исполнение после обработки прерывания (обычно слово состояния процессора – регистр EFLAGS в Pentium, регистры общего назначения). Может быть сохранен и полный контекст, если ОС обслуживает прерывание со сменой процесса.

  3. В счетчик команд загружается адрес процедуры обработки прерывания и устанавливается новое PSW, которое определяет привилегированный режим работы процессора при обработке прерывания.

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

  5. После обработки прерывания ядром операционной системы, прерванный контекст восстанавливается (частично аппаратно – PSW, содержимое счетчика команд, частично программно – извлечение данных из стека), снимается обработка прерываний данного типа и работа потока возобновляется с прерванного места.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]