- •Конспект лекций вмСиС
- •1. Анализ средств, реализующих программный принцип управления
- •Аппаратные средства
- •1.2. Микропрограммное (firmware) управление
- •1.3. Программное обеспечение эвм
- •2. Представление информации
- •2.1. Представление информации в эвм
- •2.2. Описание задач пользователя, решаемых на эвм
- •3. Операционная система dos
- •4. Операционная система Windows nt
- •5. Организация файлов в dos
- •6. Организация хранения информации
- •Управление памятью.
- •7. Организация прерываний в эвм
- •7.1. Программируемый контроллер прерываний
- •7.2. Типы прерываний
- •8. Организация сети эвм
7.2. Типы прерываний
Типы прерываний представлены группами, каждая из которых объединяет восемь типов прерываний. Номер группы задается с помощью старших (с 3 по 7) разрядов регистра типа. Для обслуживания запросов прерываний от внешних устройств необходимо при инициализации занести в регистр типа номер группы, равный величине (const) 00001, так как аппаратным прерываниям соответствуют типы 8h-0Fh, 70h-77h.
N |
Регистр типа 7 3 |
2 0 |
8 |
00001 |
000 – системный таймер |
9 |
00001 |
001 клавиатура |
F |
00001 |
111 – принтер (LPT1) |
Классификация прерываний:
0-7 – логические;
8-F, 70h-77h – аппаратные;
10-1Fh, 40-5Fh – BIOS;
20-3Fh – DOS;
80-F0h – Basic;
60-67h – для пользовательских нужд.
Рассмотренные примеры типов прерываний входят в состав 256 возможных типов.
Для любого типа прерывания существует обработчик, 32-разрядный адрес (IP и CS) которого расположен в специальной таблице IVT.
Схема обработки прерывания имеет следующий вид:
Нет
Да
Выдача
в контроллер прерывания сигнала INTA
для получения от контроллера АВП. Сохранение
в стеке IF
из регистра флагов и АВ (адреса возврата)
из CS,
IP. Сброс
IF
(запрет прерываний). Перемещение
из IVT
(таблицы векторов прерываний) адреса
обработчика прерываний на CS,
IP.
Адрес в IP
используется для
вызова
процедуры обслужива-
ния
прерывания (ISR).
Адрес1
ISR 1
АдресN
Для обеспечения
вложенных прерываний
необходимо
в начале процедуры обработки
прерывания
установить IF
командой STI.
ISR N
При выполнении
в обработчике команды RET
из стека перемещаются в RF,
IP
сохраненные IF,
АВ.
Рис. 14. Схема обработки запросов прерываний
Рассмотренная организация системы прерывания реализуется во многих CPU и, в частности, в ранних версиях процессоров intel. Появление ОС типа Windows способствовало совершенствованию CPU и системы прерываний. При программировании в среде Windows нужно знать о возможных режимах работы CPU. Существуют реальный и защищенный режимы работы. Прерывания в защищенном режиме обрабатываются иначе, чем в реальном режиме работы CPU. В защищенном режиме вместо IVT используется таблица дескрипторов прерываний IDT, размещаемая в любом месте оперативной памяти. Для обращения к таблице используются системные функции.
Таблица IDT размещается в памяти по линейному адресу, который хранится в специальном регистре IDTR. Таблица IDT представляет собой массив так называемых шлюзов (специальных структур), через которые осуществляется переход к обработчику. Индекс IDT определяется так: N*8, так как для дескриптора используется 8 байт. При обслуживании прерывания в стек размещается минимум 12 байт. Четыре байта для CS, четыре байта для IP и четыре байта для расширенного регистра флагов EFLAG (PCW).
Анализ существующих систем прерывания позволяет выделить следующие характеристики системы прерывания:
Общее количество допустимых запросов прерывания.
Время реализации запроса (отклика). Время между появлением запроса и началом выполнения обработчика.
Временные затраты на переключение программ.
А) Запоминание текущего состояния CPU.
Б) Восстановление текущего состояния CPU.
Глубина прерывания – количество программ, которые могут прерывать друг друга.
Насыщение системы прерывания – это количество накопившихся запросов на обработку между первым и следующим запросом от одного и того же источника.
Момент обслуживания запроса на прерывание.
А) Обслуживание после выполнения текущей команды.
Б) Обслуживание после выполнения текущей микрокоманды.
В) Немедленное обслуживание.
Количество уровней запроса на прерывание – IRQL (Interrupt Request Level). Представляет собой число, определяющее приоритет. Программный код, выполняемый на данном уровне IRQL, не может быть прерван программным кодом, имеющим равный или более низкий IRQL. CPU сравнивает значение текущего IRQL со значением полученного запроса IRQL.
ОС Windows использует идеализированную систему приоритетов, которая учитывает особенности разных CPU.
Таблица уровней IRQL
Наименование |
Назначение |
HIGH_LEVEL |
Диагностика ЭВМ; ошибка шины. |
POWER_LEVEL |
Прерывание по сбою в электроснабжении. |
IPI_LEVEL |
Прерывания межпроцессорного взаимодействия. |
CLOCK_LEVEL |
Интервальный таймер. |
PROFILE_LEVEL |
Таймер профилирования. |
DIRQL |
Платформенно-зависимое число уровней для прерываний устройств ввода-вывода. |
DISPATCH_LEVEL |
Планирование потоков и выполнение отложенных процедурных вызовов. |
APC_LEVEL |
Выполнение асинхронных процедурных вызовов. |
PASSIVE_LEVEL |
Уровень нормального исполнения потоков. |
