Операционные системы : Прерывания

Содержание

Слайд 2

В.А.Серков "Операционные системы" 5 Прерывания и исключения - это события, которые

В.А.Серков "Операционные системы" 5

Прерывания и исключения - это события, которые указывают

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

В.А.Серков "Операционные системы" 5 Одной из разновидностей программно-управляемого обмена данными с

В.А.Серков "Операционные системы" 5

Одной из разновидностей программно-управляемого обмена данными с ВУ

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

В.А.Серков "Операционные системы" 5 Особенность обмена с прерыванием программы позволяет организовать

В.А.Серков "Операционные системы" 5

Особенность обмена с прерыванием программы позволяет организовать обмен

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

В.А.Серков "Операционные системы" 5 Типы прерываний Внешние прерывания генерируются по аппаратному

В.А.Серков "Операционные системы" 5

Типы прерываний

Внешние прерывания генерируются по аппаратному сигналу, поступающему

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

В.А.Серков "Операционные системы" 5 Типы прерываний С помощью инструкции INT86(n) (n

В.А.Серков "Операционные системы" 5

Типы прерываний

С помощью инструкции INT86(n) (n - номер

прерывания) можно сгенерировать прерывание с любым номером 0...255. Такие прерывания называют программными. Программные прерывания могут использоваться для доступа к сервисам операционной системы
Слайд 7

В.А.Серков "Операционные системы" 5 Схема возникновения программного прерывания

В.А.Серков "Операционные системы" 5

Схема возникновения программного прерывания

Слайд 8

В.А.Серков "Операционные системы" 5 Типы прерываний Исключения являются для процессора внутренними

В.А.Серков "Операционные системы" 5

Типы прерываний

Исключения являются для процессора внутренними событиями и

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

В.А.Серков "Операционные системы" 5 Типы прерываний Ошибка (отказ) - это исключение,

В.А.Серков "Операционные системы" 5

Типы прерываний

Ошибка (отказ) - это исключение, которое обнаруживается

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

В.А.Серков "Операционные системы" 5 Типы прерываний Ловушка возникает на границе команд

В.А.Серков "Операционные системы" 5

Типы прерываний

Ловушка возникает на границе команд сразу же

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

Расширенный программируемый контроллер прерываний (APIC)

Расширенный программируемый контроллер прерываний (APIC)

Слайд 12

В.А.Серков "Операционные системы" 5 Микропроцессоры IA-32, начиная с модели Pentium, содержат

В.А.Серков "Операционные системы" 5

Микропроцессоры IA-32, начиная с модели Pentium, содержат встроенный

расширенный программируемый контроллер прерываний (APIC).
Встроенный APIC предназначен для регистрирования прерываний от источников внутри процессора (например, блок температурного контроля у Pentium 4) или от внешнего контроллера прерываний и передачи их ядру процессора на обработку.
Особо важная роль возлагается на встроенный APIC в многопроцессорных системах, где APIC принимает и генерирует сообщения о межпроцессорных прерываниях
Слайд 13

В.А.Серков "Операционные системы" 5 Встроенный APIC различает следующие источники прерываний. От

В.А.Серков "Операционные системы" 5

Встроенный APIC различает следующие источники прерываний.
От локальных устройств.


От внешних устройств.
Межпроцессорные.
От таймера APIC .
От таймера монитора производительности.
От термодатчика. Процессоры Pentium 4 содержат встроенный блок температурного контроля, который можно запрограммировать на генерацию прерываний.
Внутренние ошибки APIC.
Слайд 14

Аппаратные прерывания

Аппаратные прерывания

Слайд 15

В.А.Серков "Операционные системы" 5 Структура контроллера прерываний 8259А RGI - регистр

В.А.Серков "Операционные системы" 5

Структура контроллера прерываний 8259А

RGI - регистр запретов

прерываний; хранит все уровни, на которые поступают запросы IRQx.
PRB - схема принятия решений по приоритетам; схема идентифицирует приоритет запросов и выбирает запрос с наивысшим приоритетом.
ISR - регистр обслуживаемых прерываний; сохраняет уровни запросов прерываний, находящиеся на обслуживании контроллера прерываний.
RGM - регистр маскирования прерываний; обеспечивает запрещение одной или нескольких линий запросов прерывания.
Слайд 16

В.А.Серков "Операционные системы" 5 Структура контроллера прерываний 8259А BD - буфер

В.А.Серков "Операционные системы" 5

Структура контроллера прерываний 8259А

BD - буфер данных;

предназначен для сопряжения с системной шиной данных.
RWCU - блок управления записью/чтением; принимает управляющие сигналы от микропроцессора и задает режим функционирования контроллера прерываний.
CMP - схема каскадного буфера-компаратора; используется для включения в систему нескольких контроллеров.
CU - схема управления; вырабатывает сигналы прерывания и формирует трехбайтовую команду CALL для выдачи на шину данных.
Слайд 17

В.А.Серков "Операционные системы" 5 Каскадное включение контроллеров прерываний

В.А.Серков "Операционные системы" 5

Каскадное включение контроллеров прерываний


Слайд 18

В.А.Серков "Операционные системы" 5 Поскольку в каждый момент времени может поступить

В.А.Серков "Операционные системы" 5

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

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

В.А.Серков "Операционные системы" 5 В циклическом режиме используется круговой порядок использования

В.А.Серков "Операционные системы" 5

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

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

В.А.Серков "Операционные системы" 5 Подсистема прямого доступа к памяти Прямой доступ

В.А.Серков "Операционные системы" 5

Подсистема прямого доступа к памяти

Прямой доступ к памяти

(ПДП) - Direct Memory Access (DMA) - используется для высокоскоростной передачи данных между устройствами ввода-вывода и оперативной памятью без вмешательства ЦП.
Типичным примером использования DMA являются контроллеры дисководов и винчестера.
В системах IBM PC XT/AT использовался контроллер DMA Intel 8237A. обеспечивающий четыре 8-битных канала DMA.
В IBM PC AT применяется каскадное включение двух контроллеров DMA 8237A, обеспечивающего четыре 8-битных канала, и 8237A-5, обеспечивающего четыре 16-битных канала
Слайд 21

Программные прерывания.

Программные прерывания.

Слайд 22

В.А.Серков "Операционные системы" 5 int86(int K, union REGS *inr, union REGS

В.А.Серков "Операционные системы" 5

int86(int K, union REGS *inr, union REGS *outr)
K

– код прерывания;
REGS – объединение структурированных переменных, отражающих содержимое базовых регистров микропроцессоров;
inr – указатель на структуру, в которую записывается содержимое базовых регистров до прерывания;
outr – указатель на структуру, в которую записывается содержимое базовых регистров после обработки прерывания.
Слайд 23

В.А.Серков "Операционные системы" 5 union REGS { struct BYTEREGS h; struct

В.А.Серков "Операционные системы" 5

union REGS
{
struct BYTEREGS h;
struct WORDREGS x;
}
struct BYTEREGS
{char al,

ah, bl, bh, cl, ch, dl, dh};
struct WORDREGS
{ unsigned ax, bx, cx, dx, si, di,
cflag, flags};
Слайд 24

В.А.Серков "Операционные системы" 5 Схема взаимодействия программных и аппаратных средств при инициализации прерываний

В.А.Серков "Операционные системы" 5

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

прерываний
Слайд 25

В.А.Серков "Операционные системы" 5 Обработка программных прерываний 1. Запись в структуру

В.А.Серков "Операционные системы" 5

Обработка программных прерываний

1. Запись в структуру inr.x данных

для передачи программе обработчику прерываний.
2. Инициализация программного прерывания (int86).
3. Перенос содержимого структуры inr.x в регистры процессора.
4. По содержимому вектора прерываний определение адреса программы обработки.
5. Передача содержимого регистров процессора программе обработки прерываний.
6. Передача управления программе обработки.
7. Перенос содержимого регистров процессора в структуру outr.x.
8. Передача управления прикладной программе.
Слайд 26

В.А.Серков "Операционные системы" 5 Правила замены стандартного прерывания Если действия программы

В.А.Серков "Операционные системы" 5

Правила замены стандартного прерывания
Если действия программы обработки прерывания

не устраивают, то ее можно заменить собственной, перенастроив вектор прерывания.
Для этого необходимо:
1. Получить текущее значение вектора прерывания одним из возможных способов например, getvec(K, *buf).
2. По номеру прерывания вычислить адрес ячейки памяти, в которой находится адрес программы обработки.
3. Применить соответствующую функцию ОС.
4. Cохранить старое значение вектора в заранее зарезервированных ячейках сегмента данных.
5. Установить новое значение вектора по вычисленному адресу, либо использовать соответствующую функцию setvec.
6. Сформировать основную программу, инициирующую замененное прерывание.
7. Восстановить старое значение вектора для дальнейшей бесконфликтной работы.