Система прерываний Windows 2000

Автор работы: Пользователь скрыл имя, 15 Декабря 2010 в 22:24, курсовая работа

Краткое описание

Компьютер должен обладать способностью реагировать на события, происходящие вне его микропроцессора, например, воспринимать информацию, вводимую с клавиатуры.


Существует два способа организации такой реакции. Один способ состоит в постоянном ожидании события. Такой способ называется "сканированием" или "опросом", и такой опрос может занимать большую часть времени компьютера. Другой способ позволяет компьютеру спокойно выполнять свою работу, пока не произойдет событие, требующее его внимания. Такой подход называется использованием "прерываний". Прерывания и исключения — такие ситуации в операционной системе, в которых нормальный поток выполнения кода процессором прерывается. Эти ситуации обнаруживаются как программным, так и аппаратным обеспечением.

Содержание работы

•Введение………………………………………………………………….3
•1. Общий механизм прерываний………………………………………..4
•2. Классификация прерываний………………………………………….8
2.1. Виды прерываний…………………………………………….8

2.2.Уровни запросов программных прерываний………………..9

2.3. Предопределенные IRQL……………………………………11

2.4. Общая классификация прерываний………………………...12


•3. Средства системы прерываний………………………………………14
3.1. Аппаратные средства системы прерываний………………..14

3.2. Программные средства системы прерываний ………..……14

3.3. Обработка прерывания в реальном режиме ………………..15

3.4. Обработка прерываний в защищенном режиме …..………. 17

3.5. Классификация прерываний в защищенном режиме………18

3.6. Диспетчеризация прерываний……………………………….20

3.7. Обработка аппаратных прерываний…………………………20

3.8. Таблица дескрипторов прерываний IDT…………………….23

3.9. Особенности таблицы IDT……………………………………24

3.10. Обобщенная схема обработки прерывания в защищенном режиме………………………………………………………………25


•Вывод………………………………………………………………………29
•Библиографический список………………………………………………31

Содержимое работы - 1 файл

Операционные системы ККР.doc

— 297.50 Кб (Скачать файл)

    После сохранения регистров в стеке  микропроцессор сбрасывает бит флага  IF (т.е.=0)  (В стеке при этом записан регистр flags с еще установленным IF). Этим предотвращается возможность возникновения вложенных внешних прерываний и порчи регистров исходной программы вследствие неконтролируемых действий со стороны программы - обработчика вложенного прерывания. После того как необходимые действия по сохранению контекста завершены, обработчик аппаратного прерывания может разрешить вложенные прерывания командой sti. 

    
  1.   переход к выполнению и выполнение программы обработки прерывания;

    Здесь определяется источник прерывания и  вызывается соответствующий обработчик прерывания.

    В реальном режиме микропроцессора допускается 256 источников - по количеству элементов таблицы векторов прерываний.

    Структура элемента:

  • ·      2 байта - значение смещения начала программы-обработчика прерывания от начала кодового сегмента;
  • ·      2 байта - значение базового адреса сегмента, в котором находится программа-обработчик.

    Как определить адрес, по которому находится  вектор прерывания с номером N?

    Смещение  элемента таблицы векторов прерываний  =  N * 4

    Полный  размер таблицы (4*256=1024)  

    Итак, на втором этапе микропроцессор   

  1. По номеру источника прерывания определяет смещение в таблице векторов прерываний   
  2. Помещает первые два байта в регистр IP   
  3. Помещает вторые два байта в регистр CS   
  4. Передает управление по адресу CS:IP

    Далее выполняется сама программа обработки  прерывания. Она тоже может быть прервана поступлением запроса от более приоритетного источника. Все источники прерывания имеют приоритеты.  

    3) возврат управления  прерванной программе.

    Необходимо  привести стек в состояние, в котором  он был сразу после передачи управления данной процедуре. Для этого программист  должен указать необходимые действия по восстановлению регистров и очистке стека. Этот участок необходимо защитить от возможного искажения содержимого регистров (в результате появления аппаратного прерывания) с помощью команды cli.

    Последние команды в в обработчике прерывания - sti, iret

    sti - разрешить аппаратные прерывания (устанавливает флаг IF=1, не имеет операндов).

    iret - извлечь последовательно три слова из стека и поместить их соответственно в регистры ip, cs, flags. 

3.4. Обработка прерываний в защищенном режиме 

    Защищённый  режим (режим защищённого виртуального адреса) — режим работы процессора. Разработан фирмой Digital Equipment (DEC) для 32-разрядных компьютеров VAX-11, а также фирмой Intel для своих процессоров начиная с 32-разрядных процессоров 80386. Несмотря на то, что защищённый режим частично был реализован уже в процессоре 80286, но там существенно отличался способ работы с памятью, так как процессоры еще были 16-битные и не была реализована страничная организация памяти. Применяется в процессорах других производителей. Данный режим позволил создать многозадачные операционные системы, такие, как семейства Microsoft Windows, UNIX и другие.

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

Потому  что:

  1. В защищенном режиме немного изменено распределение номеров векторов прерываний.
  2. Принципиально иным является механизм обработки прерываний.
 

3.5. Классификация прерываний в защищенном режиме 

    Прерывания  и исключения можно разделить на несколько групп:

  1. сбой;
  2. ловушка;
  3. аварийное завершение.

    Это деление производится в соответствии со следующими признаками:

  • ·      какая информация сохраняется о месте возникновения прерывания (исключения);
  • ·      возможно ли возобновление прерванной программы.

    Исходя  из этих признаков, можно дать следующие  характеристики вышеперечисленным группам:

    Сбой (ошибка) прерывание или исключение, при возникновении которого в стек записываются значения регистров cs:ip, указывающие на команду, вызвавшую данное прерывание. Это позволяет, получив доступ к сегменту кода, исправить ошибочную команду в обработчике прерывания и, вернув управление программе, фактически осуществить ее рестарт (вспомните, что в реальном режиме при возникновении прерывания в стеке всегда запоминается адрес команды, следующей за той, которая вызвала это прерывание).

    Ловушка прерывание или исключение, при возникновении которого в стек записываются значения регистров CS:IP, указывающие на команду, следующую за командой, вызвавшей данное прерывание.

    Так же, как и в случае ошибок возможен рестарт программы. Для этого  необходимо лишь исправить в обработчике прерывания соответствующие код или данные, послужившие источником ошибки. После этого перед возвратом управления нужно скорректировать значение IP в стеке на длину команды, вызвавшей данное прерывание.

    Механизм  ловушек похож на механизм прерываний в реальном режиме, хотя не во всем. Здесь есть один тонкий момент. Если прерывание типа ловушки возникло в команде передачи управления jmp, то содержимое пары CS:IP в стеке будет отражать результат этого перехода, то есть соответствовать команде назначения.

    Аварийное завершение прерывание, при котором информация о месте его возникновения недоступна или неполна и поэтому рестарт практически невозможен, если только данная ситуация не была запланирована заранее. 

    Замечания.

    Для некоторых номеров прерываний в реальном режиме возможны 2 источника прерывания (развитие микропроцессоров).

    Некоторые прерывания при своем возникновении дополнительно генерируют и записывают в стек так называемый код ошибки. Этот код может впоследствии использоваться для установления источника прерывания. Код ошибки записывается в стек вслед за содержимым регистров eflags, cs и eip.

Þ можно распознать истинный источник прерывания (если есть неоднозначность). 
 
 
 

    3.6. Диспетчеризация прерываний 

    Аппаратные  прерывания обычно генерируются устройствами ввода-вывода, которые таким образом уведомляют процессор о необходимости уделить им внимание. Устройства, управляемые на основе прерываний, позволяют операционной системе максимально полно использовать процессор, совмещая основную обработку с обслуживанием ввода-вывода. Выдав запрос на ввод-вывод, поток может заняться другой работой, пока устройство выполняет запрошенную операцию, Закончив, устройство генерирует прерывание, и процессор переключается на обслуживание этого устройства. Прерываниями управляются, как правило, координатные устройства, принтеры, клавиатуры, дисковые устройства и сетевые платы.

    Системное программное обеспечение также  может генерировать прерывания. Ядро способно отключать прерывания, чтобы не прерывать работупроцессора, однако это делается нечасто — только в критические моменты, например при обработке прерываний или диспетчеризации исключения.

    Для обработки аппаратных прерываний ядро устанавливает обработчики ловушек прерываний, которые передают управление внешней процедуре (ISR) или внутренней процедуре ядра, реагирующей на прерывания определенного типа. Драйверы устройств предоставляют ISR для обслуживания прерываний от своих устройств, а ядро — внутренние процедуры для обработки других типов прерываний. 
 

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

    В системах типа х8б прерывания, связанные с внешним вводом-выводом, поступают по одной из линий контроллера прерываний. Контроллер в свою очередь связан с процессором единственной линией, по которой и уведомляет о прерывании. Как только процессор прерывается, он требует от контроллера запрос прерывания (interrupt request, IRQ). Контроллер транслирует IRQ в номер прерывания, используемый как индекс в структуре, называемой таблицей диспетчеризации прерываний (interrupt dispatch table, IDT), и передает управление соответствующей процедуре, При загрузке Windows 2000 заносит в ГОТ указатели на процедуры ядра, обрабатывающие каждое прерывание и исключение.

    Windows 2000 увязывает аппаратные IRQ с номерами  прерываний через IDT. Эта таблица используется системой и при конфигурировании обработчиков ловушек для исключений. Так, номер #8б-исключения для ошибки страницы (это исключение возникает, когда поток пытается получить доступ к отсутствующей или не определенной в виртуальной памяти странице) равен Охе. Следовательно, запись Охе в ЮТ указывает на системный обработчик ошибок страниц. Хотя архитектура х86 поддерживает до 256 элементов ЮТ, число IRQ на конкретной машине определяется архитектурой используемого в ней контроллера прерываний.

    В большинстве систем х8б применяется либо программируемый контроллер прерываний (Programmable Interrupt Controller, PIC) 18259A, либо его разновидность, усовершенствованный программируемый контроллер прерываний (Advanced Programmable Interrupt Controller, APIC) 182489. Новые компьютеры, как правило, оснащаются APIC. Стандарт PIC был разработан для оригинальных IBM PC. PIC работает только в однопроцессорных системах и имеет 15 линий прерываний. APIC способен работать в многопроцессорных системах и предлагает 256 линий прерываний. Intel совместно с другими компаниями создали спецификацию Multiprocessor (MP) Specification, стандарт для многопроцессорных систем А~86, основанный на использовании APIC. Для совместимости с однопроцессорными операционными системами и загрузочным кодом, запускающим многопроцессорную систему в однопроцессорном режиме, APIC поддерживает PIC-совместимый режим с 15 линиями прерываний и передачей прерываний лишь главному процессору- Архитектура APIC показана на рис. 2. На самом деле APIC состоит из нескольких компонентов: APIC ввода-вывода, принимающего прерывания от устройств, локальных APIC, принимающих прерывания от APIC ввода-вывода и прерывающих работу того процессора, с которым они связаны, а также 18259А-совместимого контроллера прерываний, транслирующего входные сигналы APIC в соответствующие PIC-эюшваленты. APIC ввода-вывода отвечает за реализацию алгоритмов перенаправления прерываний, и операционная система выбирает нужный ей алгоритм (в Windows 2000 выбор возлагается на HAL). Эти алгоритмы равномерно распределяют между процессорами нагрузку, связанную с обработ кой прерываний, и в максимальной мере используют все преимущества локальности, направляя прерывания тому процессору, который только что обрабатывал прерывания аналогичного типа.

    

    Рисунок 2 – Архитектура x68 APIC 

    У каждого процессора имеется своя IDT, так что разные процессоры могут при необходимости выполнять разные ISR. Например, в многопроцессорной системе каждый процессор получает прерывания системного таймера, но

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

    Большинство процедур, обрабатывающих прерывания, находится в ядре.

Информация о работе Система прерываний Windows 2000