Система прерываний 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 Кб (Скачать файл)

Рисунок 1 - Уровни запросов прерываний (IRQL).

 Прерывания обслуживаются в порядке их приоритета, и прерывания с более высоким приоритетом вытесняют обработку прерываний с меньшим приори-

тетом. При возникновении прерывания с высоким приоритетом процессор

сохраняет информацию о состоянии прерванного  потока и активизирует

сопоставленный  с данным прерыванием диспетчер  ловушки. Последний по-

вышает IRQL и вызывает процедуру обслуживания прерывания (ISR). После

выполнения ISR диспетчер прерывания понижает IRQL процессора до исход-

ного  уровня и загружает сохраненные  ранее данные о состоянии машины.

Прерванный  поток возобновляется с той точки, где он был прерван. Когда ядро понижает IRQL, могут «материализоваться» ранее замаскированные прерывания с более низким приоритетом. Тогда вышеописанный процесс повторяется ядром для обработки и этих прерываний. Уровни приоритетов IRQL имеют совершенно иной смысл, чем приоритеты в схеме планирования потоков. Приоритет в этой схеме является атрибутом потока, тогда как IRQL — атрибутом источника прерывания, например клавиатуры или мыши. Кроме того, IRQL каждого процессора меняется во время выполнения команд операционной системы.

         Значение IRQL определяет, какие прерывания может получать данный процессор, IRQL также используется для синхронизации доступа к структурам данных режима ядра (о синхронизации мы поговорим позже). При выполнении поток режима ядра повышает или понижает IRQL процессора либо напрямую (вызовом соответственно KeRaiselrql или KeLowerlrql), либо — что бывает гораздо чаще — опосредованно (через функции, которые обращаются к синхронизирующим объектам ядра). Прерывания от источника с IRQL, превышающим текущий уровень, прерывают работу процессора, а прерывания от источников, IRQL которых меньше или равен текущему уровню, маскируются до тех пор, пока выполняемый поток не понизит IRQL.

Поток режима ядра повышает и понижает IRQL процессора, на котором он

выполняется, в  зависимости от того, что именно делает этот поток. Например, обработчик ловушки (или сам процессор) при прерывании повышает IRQL процессора до IRQL источника прерывания. В результате все прерывания с более низким или равным IRQL маскируются (только на этом процессоре), что не дает прерыванию с таким же или более низким IRQL помешать процессору обработать текущее прерывание, Замаскированные прерывания либо обрабатываются другим процессором, либо откладываются до понижения IRQL.

Поэтому все  системные компоненты, в том числе  ядро и драйверы устройств,

пытаются удерживать IRQL на уровне passive, иногда называемом низким уровнем, Если бы IRQL долго оставался неоправданно высоким, драйверы устройств не смогли бы оперативно реагировать на аппаратные прерывания.

Так как изменения IRQL процессора существенно влияют на функциони-

рование системы, они возможны только в режиме ядра. Потоки пользовательского режима не могут изменять IRQL процессора. Это значит, что при выполнении потоков пользовательского режима значение IRQL процессора всегда равно «passive*. Только при выполнении кода режима ядра IRQL может быть выше этого уровня. 

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

Уровень «high» (высокий) используется ядром, только если оно останавли-

вает систему  в функции KcBugCbeckEx и маскирует все прерывания.

 Уровень  «power fail» (отказ электропитания) был заложен еще в самый пер-

вый проект Microsoft Windows NT. Он определяет поведение системы при

отказе электропитания, но никогда не применялся,

Уровень «inter-processor interrupt» (межпроцессорное прерывание) исполь-

зуется для того, чтобы запрашивать от другого процессора выполнение

какой-либо операции, например, при диспетчеризации конкретного  потока,

обновлении кэша TLB, завершении работы или крахе системы,

Уровень «clock» (часы) используется для системных часов, с помощью ко-

торых ядро отслеживает  время суток, измеряет и распределяет процессорное

время между  потоками.

Уровень «profile» (профиль) используется системным таймером реального

времени, если активизирован  механизм профилирования ядра (kernel profiling),

т. е. измерения его производительности. Когда он активен, обработ-

чик ловушки  профилирования регистрирует адрес  команды, выполнявшейся

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

можно извлечь  и проанализировать с помощью  соответствующих утилит.

В ресурсы Windows 2000 входит утилита Kernel Profiler (Kernprof.exe), по-

зволяющая просматривать  статистику, полученную при использовании

механизма профилирования ядра.

Уровень «device» (устройство) применяется для задания приоритетов пре-

рываний от устройств (о принципах увязки аппаратных прерываний с IRQL

см, предыдущий раздел).

Прерывания уровней  «DPC/dispatch» и «АРС» являются программными пре-

рываниями, генерируемыми  ядром и драйверами устройств (о DPC и АРС

будет рассказано позже).

Самый низкий уровень IRQL, «passive» (пассивный), на самом деле вообще

не является уровнем прерывания. При этом значении IRQL потоки выпол-

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

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

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

·      внутренние - возникают внутри микропроцессора во время вычислительного процесса (по существу - это исключительные ситуации и программные прерывания).   

Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства.

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

    В связи с тем, что существуют два  специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (No Mask Interrupt, немаскируемое прерывание) и INTR (Interrupt Request, запрос на прерывание).  

   Маскируемые прерывания генерируются контроллером прерываний по заявке определенных периферийных устройств. Контроллер прерываний (выполнен в виде специальной микросхемы i8259A) поддерживает восемь уровней (линий) приоритета; к каждому уровню “привязано” одно периферийное устройство. Именно маскируемые прерывания часто называют аппаратными прерываниями.

    В ПК, начиная с IBM PC AT, построенных на базе микропроцессора i80286, используются два контроллера прерываний i8259A; они соединяются последовательно каскадным образом, что увеличивает количество внешних источников прерываний до 15 (каждая по 8).  

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

3. Средства системы прерываний 

3.1. Аппаратные средства системы прерываний  

    К аппаратным средствам системы прерываний относятся:

·      выводы микропроцессора - на них формируются сигналы, извещающие микропроцессор либо о том, что некоторое внешнее устройство «просит  уделить ему внимание» (INTR), либо о том, что требуется безотлагательная обработка некоторого события или катастрофическая ошибка (NMI)

·      INTR - вывод для входного сигнала запроса на прерывание;

·      NMI - вывод для входного сигнала немаскируемого прерывания;

·      INTA - вывод для выходного сигнала подтверждения получения сигнала прерывания микропроцессором (этот сигнал поступает на одноименный вход микросхемы контроллера 8259А);

·      программируемый контроллер прерываний 8259А предназначен для фиксирования сигналов прерываний от восьми различных внешних устройств; он выполнен в виде микросхемы; обычно используют две последовательно соединенные микросхемы, поэтому кол-во возможных источников внешних прерываний до 15 плюс одно немаскируемое прерывание; именно он формирует номер вектора прерывания и выдает его шину данных;

·      внешние устройства (таймер, клавиатура, магнитные диски и т.п.)  

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

    К программным средствам системы прерываний реального режима относятся:

  • ·      таблица векторов прерываний.

    Занимает  первый килобайт ОП (адреса 00000h-003FFh).

    Она содержит адреса (векторы - «векторы», т.к. два значения для указания адреса) обработчиков прерываний и состоит из 256 (0..255) элементов по 4 байта каждый:

    • 2 байта - новое значение для регистра IP
    • 2 байта - новое значение для регистра CS.

    Расположение  таблицы векторов прерываний в процессорах  i80286 и старше определяется значением регистра IDTR.

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

    Каждый  вектор имеет свой номер и называется номером прерывания.

  • ·      два флага в регистре флагов flags/eflags:
  1. IF (Interrupt Flag) - флаг прерывания предназначен для маскирования (запрещения) аппаратных прерываний. Если IF=1, микропроцессор обрабатывает внешние прерывания, если = 0, то игнорирует;
  1. TF (Trace Flag) - флаг трассировки. Если он =1, то микропроцессор переходит в режим покомандной работы. В этом режиме в микропроцессоре генерируется внутреннее прерывание с номером 1;
  • ·      машинные команды микропроцессора: int, into (прерывание по переполнению), iret, cli, sti 
     

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

Обработка прерывания в реальном режиме производится в три этапа:

  1. прекращение выполнения текущей программы; 

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

    Обязательными для сохранения являются регистры cs, ip, flags (пара CS:IP содержит адрес команды, с которой необходимо начать выполнение после возврата, flags - состояние флагов после выполнения последней команды прерванной программы).

    Эти регистры сохраняются микропроцессором автоматически. Сохранение остальных регистров 0олжно обеспечиваться программистом.   

    Наиболее  удобным местом хранения регистров  является стек.

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