ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.06.2021

Просмотров: 126

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лекция 4. Обработка прерываний


1. Общий принцип обработки прерываний в операционной системе.

2. Работа системы прерываний в реальном режиме работы процессора.

3. Работа системы прерываний в защищенном режиме работы процессора.



1. Общий принцип обработки прерываний в операционной системе


Одной из наиболее важных функций ОС является управление ресурсами компьютера, на котором она работает. Многие ресурсы имеют непосредственное отношение к аппаратным устройствам, таким как ЦП, оперативная память, каналы ввода-вывода. Таким образом, многие функции ОС тесно связаны с архитектурой компьютера. Реализация управления этими функциями осуществляется с помощью механизма прерываний – IRQ (Interrupt Request - запрос на прерывание).

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

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

Предположим, что в момент наступления от некоторого источника сигнала прерывания программа Р находится в решении.

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

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


Существуют следующие виды прерываний:

  • SVC – прерывание возникает при выполнении ЦП команды вывода супервизора. Эта команда используется программами для вызова функции ОС.

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

  • Прерывание по таймеру вызывается интервальным таймером ЦП. Этот таймер содержит регистр, которому может быть присвоено определенное начальное значение посредством привилегированной команды STI. Значение этого регистра автоматически уменьшается на один после использования каждой единицы времени ЦП. Когда это значение становиться равным нулю, происходит прерывание по таймеру. Подобный интервальный таймер используется ОС для определения времени, в течение которого программа пользователя может оставаться под управлением машины.

  • Прерывание по вводу-выводу вызывается каналами или устройствами ввода-вывода. Причиной таких прерываний является нормальное завершение некоторой операции ввода-вывода; однако они могут также оповещать о возникновении различных ошибочных ситуаций.

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

Многократные прерывания имеют механизм вложения. При этом учитывается приоритетность прерываний. Например: ISVC – прерывание; II – программные; III – таймеру; IV – вводу-выводу.


По прерыванию по вводу-выводу состояние программы выполняющейся в этот момент ЦП, сохраняется, а управление передается обработчику прерываний по вводу-выводу. Во время его работы происходит новое прерывание уже по таймеру, в результате чего управление передается обработчику прерываний по таймеру. По завершению обработки этого прерывания при помощи команды SPL 2 из рабочей области прерывания по таймеру устанавливается состояние ЦП. В результате управления снова передается обработчику по прерыванию по вводу-выводу. После завершения обработки прерывания при помощи уже другой SPL 1 восстанавливается состояние ЦП, которое было в момент первого прерывания. Теперь все прерывания открыты, потому что в слове состояния, используемом программой Р, все биты установлены в единицу.




2. Работа системы прерываний в реальном режиме работы процессора


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

В реальном режиме работа системы прерываний использует понятие вектора прерывания. Термин «вектор прерываний» используется потому, что для указания адреса используется не одно значение, а два, то есть имеем дело не со скалярной величиной, а с «векторной». Каждый вектор прерываний состоит из 4 байтов или 2 слов. Таблица векторов прерываний занимает 1024 байта. Таким образом, в ней может быть задано 256 векторов прерываний.

Таблица векторов прерываний заполняется (инициализируется) при запуске системы, но в принципе может быть изменена или перемещена. Каждый вектор прерываний имеет свой номер, называемый номером прерывания, который указывает его номер в таблице.

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

В персональных компьютерах класса IBM PC прерывания бывают двух видов: внутренние и внешние.

Внутренние прерывания возникают в результате работы процессора. Они возникают в ситуациях, которые нуждаются в специальном обслуживании, или при выполнении специальных инструкций INT или INTO. Это следующие прерывания:

  • прерывание при делении на ноль; номер прерывания – 0;

  • прерывание по флагу TF (trap flag – специальный бит в регистре PSW (слова состояния программы)). В этом случае прерывание обычно используется специальными программами отладки типа DEBUG. Номер прерывания – 1.

  • инструкция INT (interrupt – выполнить прерывание с соответствующим номером) и INTO (interrupt of overflow – прерывание по переполнению). Эти прерывания называются программными.

Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства. Существуют два специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (no mask interrupt – не маскируемое прерывание) и INTR (interrupt request – запрос на прерывание). Соответственно внешние прерывания подразделяются на немаскируемые и маскируемые.

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


Традиционно в современных компьютерах используется 15 линий IRQ (запросов на прерывание), часть из которых используется внутренними контроллерами системной платы, а остальные заняты стандартными адаптерами либо не используются. Прерывания с меньшими номерами обладают более высоким приоритетом.


IRQ

Применение

0

Системный таймер, представляющий для операционной системы такт длительностью 18,21 мс.

1

Клавиатура

2

Не доступно на 16-ти разрядной шине ISA , поскольку используется для подключения ввода контроллера прерываний, чтобы получить прерывания 8 – 15. Вывод прерывания 2 на 16-ти разрядной шине ISA подключен к выводу прерывания 9 контроллера прерываний. ПК настрое таким образом, чтобы вызывать обработчик прерывания 2 при активизации прерывания 9.

3

Порт 2 последовательной передачи данных (COM 2), а иногда порт СОМ 4, если последний установлен.

4

Порт 1 последовательной передачи данных (COM 1), а иногда порт СОМ 3, если последний установлен.

5

Первоначально применялось для контроллера жестких дисков. Затем было зарезервировано для второго параллельного порта принтера (LPT 2). Поскольку в ПК редко устанавливается более одного параллельного порта принтера, BIOS ПК вообще не пользуется прерываниями для печати, то это прерывание IRQ, как правило, доступно для использования.

Нередко используется сетевым адаптером либо звуковой платой (sound blaster).

6

Контроллер гибких дисков.

7

Первый параллельный порт принтера LPT 1. Это прерывание самым низким приоритетом.

8

ИС часов реального времени в ПК, содержащая КМОП-память с резервным батарейным питанием и часы истинного времени, показания которых считываются при включении ПК, может быть установлена для формирования прерывания 8 с частотой кратной двум, от 2 до 8192 раз в секунду. Прерывание 8 обладает более низким приоритетом, чем прерывание 1, но более высоким приоритетом, чем прерывание 9.

9

Используется для работы с платами, формирующими прерывание 2, поскольку настоящее прерывание 2 используется для каскадного подключения прерываний 8-15.

10

Доступно

11

Доступно

12

Может быть использовано мышью, подключаемой к шине типа IBM PS/2, но обычно этого не делается и поэтому, как правило, оно доступно.

13

Зарезервировано для указания ошибок математического сопроцессора. Недоступно шине ISA.

14

Используется контроллером жестких дисков с отличным от SCSI интерфейсом (обычно с интерфейсом IDE).

15

Нередко используется дисковыми контроллерами с интерфейсом SCSI, однако установка дискового контроллера SCSI не является «стандартной».

Обладает более низким приоритетом, чем прерывание 14, но более высоким, чем прерывание 3.



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


3. Работа системы прерываний в защищенном режиме работы процессора


В защищенном режиме система прерываний процессора использует не вектора прерываний, а таблицу дескрипторов прерываний (IDT, interrupt descriptor table). Причем таблица IDT представляет собой таблицу не с адресами обработчиков прерываний, а таблицу со специальными системными структурами данных (дескрипторами), доступ к которой со стороны пользовательских прикладных программ невозможен. Только сам микропроцессор (его система прерываний) и код операционной системы могут получить доступ к этой таблице, которая представляет собой специальный сегмент, адрес и сегмент которой содержатся в таблице регистре таблицы прерываний.