Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 19 - 20 - Прерывания.ppt
Скачиваний:
45
Добавлен:
18.02.2023
Размер:
609.28 Кб
Скачать

Лекции 19-20

Прерывания: аппаратные и программные Использование сервиса BIOS и DOS Перехват и обработка прерываний Создание собственных обработчиков

Понятие прерывания

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

Это происходит «незаметно» для исходной программы.

Прерывания делятся на три вида:

Аппаратные прерывания (внешние прерывания).

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

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

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

Аппаратное прерывание - это асинхронное событие, генерируемое внешним (по отношению к процессору) устройством.

Посредством аппаратных прерываний аппаратура «информирует» центральный процессор о том, что произошло какое-либо событие, требующее немедленной реакции, например:

нажатие клавиши клавиатуры,

завершение асинхронной операции ввода-вывода,

сигнал таймера и т.д.

Каждый тип аппаратных прерываний имеет собственный номер (irq

– interrupt query), однозначно определяющий источник прерывания.

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

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

 

 

CPU

Контроллер

irq0

 

устройства

 

Котроллер

 

 

Прерываний

 

i8259A

 

 

Контроллер

irq15(23)

INTR

устройства

 

 

 

 

ШИНА АДРЕСА

 

 

ШИНА ДАННЫХ

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

Аппаратные прерывания подразделяются на маскируемые и немаскируемые.

Немаскируемые прерывания – системные прерывания на которые процессор должен отреагировать в любом случае.

Маскируемые прерывания – реакция на них может быть заблокирована. Эти прерывания разрешены если IF=1, и запрещены если IF=0.

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

CLI – запретить обработку маскируемых прерываний,

STI – разрешить обработку маскируемых прерываний.

Номера IRQ аппаратных

 

0

 

прерываний

 

12

 

 

 

 

 

 

 

 

 

Системный таймер

 

 

 

 

1

 

Клавиатура

 

13

Ошибка сопроцессор

 

 

 

 

 

 

 

 

 

 

2

 

Подключение ведомого

 

14

Первичный канал IDE

 

 

 

 

 

 

 

 

 

 

3

 

Последовательный порт 2

 

15

Вторичный канал IDE

 

 

 

 

 

 

 

 

 

 

4

 

Последовательный порт 1

 

16

Видеоподсистема

 

 

 

 

 

 

 

 

 

 

5

 

Параллельный порт LPT2

 

17

 

 

 

 

 

 

 

 

 

 

 

6

 

Дисковод

 

18

 

 

 

 

 

 

 

 

 

 

 

7

 

Параллельный порт LPT1

 

19

 

 

 

 

 

 

 

 

 

 

 

8

 

CMOS и часы

 

20

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

21

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

22

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Исключения

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

Примеры исключений:

деление на ноль,

переполнение стека,

ошибка обращения к памяти и т.д.

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

Программное прерывание (пользовательское прерывание) - это синхронное событие, которое может быть повторено при выполнении одного и того же программного кода.

Программное прерывание вызывается явно используя команду INT.

Основное предназначение программных прерываний

– обращение к сервисам BIOS (Basic Input Output System) и операционной системы (DOS, Linux и т.д.).

Программное окружение прерываний

Команда вызова программных прерываний INT. Команды управления обработкой внешних прерываний:

CLI (запрет) и STI (разрешение).

Адреса обработчиков прерываний (вектор прерываний) в реальном режиме располагаются по нулевому адресу (0000h:0000h) и занимают 1Кб (256 × 4 = 1024)

где

256 – максимальное количество прерываний,

4 – размер одного адреса (сегмент:смещение).

Во всех программных прерываниях в AH указывается номер функции.

Таблица прерываний

Назначение

Назначение

 

 

 

 

0h

Переполнение при делении (А)

16h

BIOS Обслуживание клавиатуры

 

 

 

 

1h

Пошаговое прерывание (А)

17h

BIOS Поддержка принтера

 

 

 

 

2h

Немаскируемое прерывание (А)

18h

BIOS ROM-Basic

 

 

 

 

3h

Прерывание по контрольной точке INT3 (П)

19h

BIOS Начальный загрузчик

 

 

 

 

4h

Прерывание по переполнению INTO (П)

1ah

BIOS Ввод-вывод таймера

 

 

 

 

5h

Печать экрана PrtSc (П)

1bh

BIOS | DOS – Обработка Ctrl+Break

 

 

 

 

8h

Прерывание таймера (А)

1ch

Прерывание по таймеру (пользователь)

 

 

 

 

9h

Прерывание от клавиатуры (А)

1dh

BIOS Указатель видео параметров

 

 

 

 

Eh

Прерывание от дисковода (А)

1eh

BIOS Указатель параметров дискеты

 

 

 

 

10h

BIOS Видео сервис

1fh

BIOS Указатель графических символов

 

 

 

 

11h

BIOS Проверка оборудования

20h

DOS Завершение программы

 

 

 

 

12h

BIOS Размер используемой памяти

21h

DOS Сервис MS DOS

 

 

 

 

13h

BIOS Дисковый ввод-вывод

22h

DOS Адрес завершения

 

 

 

 

14h

BIOS Ввод-вывод через COM-порт

23h

DOS Адрес завершения по Ctrl-Break

 

 

 

 

15h

BIOS Специальные функции AT

25h/26h

DOS Прямой дисковый ввод - вывод