Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемДаниил Бутков
1 Система прерываний в защищенном режиме процессора Intel
2 Базовая система прерываний (реальный режим) 256 векторов прерываний 00000h 00004h 00008h 0000Ch 000FCh селектор int FFh int 00h int 01h int 02h int 03h сегмент
3 Обработка вызова прерывания (реальный режим) int N N*4 = X … Таблица векторов прерываний Вектор N offsetsegment Системная область памяти Обработчик iret … pushf push cs push ip pop ip pop cs popf
4 Interrupt Description Table (IDT) База IDTЛимит IDT IDTR Системный дескриптор сегмента … -Шлюз прерывания (6 или E) -Шлюз ловушки (7 или F) -Шлюз задачи (5) 8 байт база доступ…база лимит база
5 Байт доступа – системный сегмент 1 – не системный сегмент тип дескриптора 5 – шлюз задачи 6 – 16-битный шлюз прерывания 7 – 16-битный шлюз ловушки E – 32-битный шлюз прерывания F – 32-битный шлюз ловушки
6 Описание таблицы IDT ; таблица дескрипторов прерываний IDT IDT label byte ; все эти дескрипторы имеют тип 0Eh - 32-битный шлюз прерывания ; INT dw 8 dup(so int_handler,SEL_32bitCS,8E00h,0) ; INT 08 (irq0) dw so irq0_7_handler,SEL_32bitCS,8E00h,0 ; INT 09 (irq1) dw so irq1_handler,SEL_32bitCS,8E00h,0 ; INT 0Ah - 0Fh (IRQ2 - IRQ8) dw 6 dup(so irq0_7_handler,SEL_32bitCS,8E00h,0) ; INT 10h - 6Fh dw 97 dup(so int_handler,SEL_32bitCS,8E00h,0) ; INT 70h - 78h (IRQ8 - IRQ15) dw 8 dup(so irq8_15_handler,SEL_32bitCS,8E00h,0) ; INT 79h - FFh dw 135 dup(so int_handler,SEL_32bitCS,8E00h,0) idt_size = $ - IDT ; размер IDT idtr dw idt_size-1 ; лимит IDT dd ? ; линейный адрес начала IDT ; содержимое регистра IDTR в реальном режиме idtr_real dw 3FFh,0,0 + Зубков. Гл
7 Обработчики прерываний Обработка обычного прерывания int_handler: iretd
8 Обработчик аппаратных прерываний IRQ0-IRQ7 irq0_7_handler: push eax mov al,20h out 20h,al pop eax iretd + Зубков. Гл
9 Обработчик аппаратного прерывания IRQ8-IRQ15 irq8_15_handler: push eax mov al,20h out 0A1h,al pop eax iretd + Зубков. Гл
10 Обработчик прерывания клавиатуры Зубков, гл. 10.5, процедура irq1_handler
11 Загрузка IDT и IDTR ; вычислить линейный адрес IDT pop eax add eax,offset IDT mov dword ptr idtr+2,eax ; загрузить IDT lidt fword ptr idtr
12 Схема обработки прерываний int N N*8 IDTR IDT дескриптор + Обработчик iretd
13 Обработка исключений Исключения – внутренние ситуации, возникающие при выполнении программы и требующие определенной реакции процессора Номера исключений совпадают с номерами аппаратных прерываний, поэтому если система обрабатывает исключения, то контроллер прерывания должен быть перепрограммирован так, чтобы аппаратные прерывания не попадали в область 0-1Fh (Зубков, гл ) Ряд исключений оставляет на стеке код ошибки, который должен быть прочитан со стека до выполнения iretd. В противном случае может возникнуть зависание системы
14 Формат кода ошибки
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.