Главная страница

Операционные системы 09.02.03 2 курс. Автономной некоммерческой образовательной организации профессионального образования


Скачать 0.57 Mb.
НазваниеАвтономной некоммерческой образовательной организации профессионального образования
Дата17.02.2021
Размер0.57 Mb.
Формат файлаdoc
Имя файлаОперационные системы 09.02.03 2 курс.doc
ТипЛекция
#177186
страница8 из 20
1   ...   4   5   6   7   8   9   10   11   ...   20

Лекция №7

Прерывание. Обработка прерываний


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

3 этапа:

  • Приостановление выполнения основного процесса

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

  • Возврат управления основному процессу

2 вида прерываний:

  • Аппаратное

  • Программное (функцию пишем сами, поддерживает система)

Адрес подпрограммы обработчика прерываний называется вектор. Длина 4 байта. В первом слове вектора хранится содержимое IP, во втором CS. Младшие 1024 байта памяти содержат таблицу, названную таблицей векторов прерывания. Младший байт слова всегда в памяти располагается первым.

Соответственно, если какой-то вектор

CS IP

AF20 : 3P8A

то в памяти он 8A3P20AF.

retn, rets, IRET

Для контроллера тоже должен быть сигнал окончания прерывания:

mov al, 20h

out 20h, al

В соответствии с описанием процессора некоторые вектора выполняют специфические действия, некоторые свободные.

0 вектор – деление на 0

1 номер – пошаговое выполнение

2 номер – немаскированное прерывание

3 номер – прерывание в точке останова

4 номер – переполнение

5 номер – печать содержимого экрана

8 номер – аппаратное прерывание на линии 0 (таймер)

9 номер – аппаратное прерывание на линии 1 (клавиатура)

0A номер – резерв

0B номер – аппаратное прерывание на линии 3 (COM 2)

0C номер – аппаратное прерывание на линии 4 (COM 1)

0D номер – аппаратное прерывание на линии 5 (жесткий диск)

0E номер – аппаратное прерывание на линии 6 (гибкий диск)

0F номер – аппаратное прерывание на линии 7 (принтер)

10 номер – обслуживание дисплея

11 номер – информация об оборудовании

12 номер – размер памяти

13 номер – обслуживание ввода- вывода на диске

14 номер – обслуживание последнего порта (использование либо 14 прерывания, либо путем записи управленческий слов в порт ввода- вывода)

16 номер – обслуживание клавиатуры

19 номер – перезагрузка системы

1A номер – получение установления даты и времени

1C номер – пользовательский таймер

Процессоры 8086 допускают обработку трех типов прерывания:

  • Внутренне прерывание, генерируемое микропроцессором в случае возникновения особых ситуаций при его работе

  • Немаскированное прерывание, которое используется для выявления ошибок в памяти

  • Маскированное прерывание (генерируется внешними устройствами)

Они поступают в микропроцессор через микросхему 8259А программным контроллером прерывания. Для обработки одновременно возникших прерываний используются встроенные системы приоритета. Предпочтение отдается обработке внутренних прерываний, такое как деление на ноль, произведение Ø самое высокое, FF самое низкое.

При возникновении любого прерывания процессор заносит содержимое стека в регистр состояния, сбрасывает флаг произведения и заносит в содержимое регистры CS и SP. Затем путем считывания с линии данных номера прерывания и умножения его на 4, выбирается новый адрес, который является новым содержимым регистров CS и SP.

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

Микросхема 8259 функционально состоит и трех частей:

  1. регистр, требующий обработку прерываний (IRR); используется для того, чтобы заполнить возникшие прерывания (их может быть несколько) (8 прерываний)

  2. регистр ISR обслуживает прерывания, указывает на то, какое прерывание обслуживает система в данный момент

  3. регистр маскирования прерывания IMR (доступен как для чтения, так и для записи)

Каждому виду регистра IMR соответствует линия прерывания IRQ. С помощью данного регистра можно запросить или разрешить данное прерывание. Установка бита в регистр IMR приводит к маскированию соответствующий линии обработки и обработка прерывания не происходит.

Наивысший приоритет у IRQ0, наименьший – у IRQ7.

В микропроцессоре 80286 стало 16 линий путем добавления второй микросхемы 8259.

Каскадный эффект достигается при подключении к линии 2 второго устройства:

RQ0 – прерывание 8 – таймер

RQ1 – прерывание 9 – клавиатура

RQ2 – вектор 0А – запрос от подчиняющегося устройства

RQ8 – прерывание 70 – обслуживание часов реально времени

RQ9 – прерывание 71 – программное предназначение

RQ10, 11, 12 – порты последовательно 72, 73, 74 резерв

RQ13 – прерывание 75 – арифметический сопроцессор

RQ14– прерывание 76 – контроллер винчестера

RQ15– прерывание 77 – резерв

RQ30В – COM1 и т.д., как было до этого

Маскированные прерывания могут быть запрещены, внутренние и немаскированные – нет.

Любая программа, которая изменяет некоторые векторы прерывания перед тем, как осуществить возврат в MS-DOS, должна переустановить первые значения этого вектора. Для того, чтобы изменить вектор прерывания, используют функции:

  • 35h – получить вектор прерывания (прерывание

  • 25h – установить вектор прерывания 21h)

Вызов 35h получает содержимое CS и SP. Вызов 25h в качестве параметров передается адрес обработчика.

Каждый вектор имеет свой номер (0- 255).

mov al,00h ;читает символ, введенный

int 16h ;с клавиатуры

Обработка прерывания может происходить в соответствии с тремя основными схемами.

  1. Сначала вызывается системный обработчик, затем добавленный. Данный способ используется для дополнения системной обработкой какой- либо функции.

Последовательность:

Pushf – в стек заносим флаги

Call SYS – системная обработка

USER – переход в нашу программу

Iret – завершение (возврат из прерывания)

Сначала выполняется пользовательская обработка, затем системная.

  1. USER – пользовательская обработка, сохранение SP и CS.

JMP SYS

  1. MSER

mov ah, 20h

out 20h, al

iret
1   ...   4   5   6   7   8   9   10   11   ...   20


написать администратору сайта