Операционные системы 09.02.03 2 курс. Автономной некоммерческой образовательной организации профессионального образования
![]()
|
Лекция №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 функционально состоит и трех частей: регистр, требующий обработку прерываний (IRR); используется для того, чтобы заполнить возникшие прерывания (их может быть несколько) (8 прерываний) регистр ISR обслуживает прерывания, указывает на то, какое прерывание обслуживает система в данный момент регистр маскирования прерывания 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 ;с клавиатуры Обработка прерывания может происходить в соответствии с тремя основными схемами. Сначала вызывается системный обработчик, затем добавленный. Данный способ используется для дополнения системной обработкой какой- либо функции. Последовательность: Pushf – в стек заносим флаги Call SYS – системная обработка USER – переход в нашу программу Iret – завершение (возврат из прерывания) Сначала выполняется пользовательская обработка, затем системная. USER – пользовательская обработка, сохранение SP и CS. JMP SYS MSER mov ah, 20h out 20h, al iret |