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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Система прерываний Windows 2000

Информация:

Тип работы: курсовая работа. Добавлен: 08.07.2012. Сдан: 2010. Страниц: 11. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Федеральное агентство общего и профессионального  образования РФ
Тульский  государственный университет
Кафедра автоматики и телемеханики  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Контрольно-курсовая работа по дисциплине: «Операционные  системы»
на тему:
«Система  прерываний Windows 2000» 
 
 
 
 
 
 

                Выполнил 
                Проверил  
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 
                 

Тула 2009 
 

Содержание 

    Введение………………………………………………………………….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. Общий механизм прерываний 

    Прерывание -  это  кратковременное  приостановка  текущей процедуры программы,  позволяющая выполнить другую  процедуру. После  завершения  прерывания  прерванная программа продолжает выполняться так,  как будто бы ничего не происходило.  Эти две процедуры могут быть несвязанными - и прерывание не окажет никакого воздействия на прерванную  процедуру.  Они  могут  быть взаимозависимы - прерванная программа может быть модифицирована процедурой обработки прерывания. Прерывание может быть вызвано внешним по отношению к выполняемой программе событием или в результате действий самой программы.  Прерывание может быть вызвано аппаратно или командой из программы.
    Механизм  прерывания работает следующим  образом:  каждому из  основных  типов прерываний присвоен свой номер.  Например, прерывание таймера имеет номер 8, гибкие диски, используют номер 14. В самом начале оперативной памяти хранится таблица с адресами программ,  которые должны вызываться при  возникновении различных прерываний. Эти адреса иногда называются векторами  прерываний.  Прерывание  с номером 0 имеет вектор, хранящийся в ячейке с нулевым адресом, прерывание 1 имеет свой вектор в ячейке 4 и так  далее.  Когда происходит прерывание номер "X",  вектор, хранящийся по адресу 4*X,  загружается в регистры адреса программы,  т.е., регистры CS и IP, и компьютер начинает выполнять программу обслуживания прерывания, которая размещается по этому адресу.
    Когда обработка прерывания заканчивается, программа обработки возвращает управление программе,  которая выполнялась  в момент возникновения прерывания, с помощью специальной команды IRET или "возврат из прерывания". Чтобы такой возврат мог быть выполнен, необходимо сохранить в стеке текущие адреса программы до загрузки в регистры CS и IP вектора прерывания.
    В компьютере IBM/PC имеется 256 различных прерываний, с номерами от 0 до 0хff. Для хранения их адресов зарезервирована память с адресами от 0 до 0х400.
    Некоторые из прерываний определены для использования  процессором.  Например,  прерывание 0 возникает при делении на 0. Другие определены  для  вызова  функций  BIOS,  третьи  -  для использования DOS.
    Иногда  бывает необходимо, чтобы работа процессора не прерывалась, например, при выполнении какой-либо критической операции.  Для этого у микропроцессора  имеется специальная команда, которая позволяет отложить обслуживание прерываний, запоминая их,  и парная ей команда, восстанавливающая нормальный режим  обслуживания прерываний.  Когда прерывания запрещаются, запрос прерываний не теряется, он запоминается, и будет обслуживаться, как только будут разрешены прерывания.
    Обычно  прерывания не запрещаются на  сколько-нибудь  продолжительное  время.  Прерывания  допустимо  запрещать лишь на очень короткие промежутки времени,  необходимые для выполнения некоторых внутренних операций процессора, состоящих из небольшого числа команд.  Типичным примером таких операций,  которые не могут быть прерваны на полпути,  может служить загрузка нового набора значений в регистры сегментов.  Поскольку эти  регистры необходимы для правильной работы любой программы, нарушение согласованности загрузки в них значений может привести к полной неразберихе, поэтому необходимо запретить прерывания на время загрузки в них новых адресов.
    Существуют  три типа прерываний, которые получили названия аппаратных, логических и программных. Между ними нет принципиальной разницы, но использование разделяет их на три отдельных категории.
    Аппаратные  прерывания вырабатываются устройствами, требующими внимания процессора. Таких прерываний несколько.  Во-первых,  имеется так называемое немаскируемое прерывание,  используемое для сообщения об отказе питания,  оно имеет номер 2.  Далее, прерывание 8 используется таймером, номер 9 - клавиатурой и 14 - контролером гибких дисков.
    Имеется также  семь зарезервированных номеров  прерываний, 6, 7, с 10 по 13 и 15, которые  могут быть использованы в дальнейшем, если возникнет необходимость в  дополнительных аппаратных прерываниях.  Два из этих семи прерываний уже  нашли  свое назначение,  прерывание 12 зарезервировано для адаптера связи, а прерывание 15 - для интерфейса устройства печати.
    Логические  прерывания формируются самим процессором, когда он встречает какое-либо необычное  условие.  Таких прерываний предусмотрено  четыре. Прерывание 0 возникает при попытке деления на ноль.  Прерывание 1 используется для управления пошаговым режимом работы микропроцессора,  при котором команды выполняются по одной.  Это прерывание выставляется отладчиками для пошагового выполнения программ. Прерывание 3 вырабатывается командой установки "контрольных точек",  которая также  используется при отладке. Прерывание 4 формируется при возникновении условия переполнения, например, если результат арифметической операции не помещается в регистр. Таким образом, четыре логических прерывания распадаются на две пары:  одна для арифметических  операций (деление на ноль и переполнение) и вторая для отладки программ (шаговый режим и контрольные точки).
    Программы прерывания  вызываются  как  процедуры  другими программами.  Для  вызова  процедуры программа должна знать ее адрес, а вызываемая процедура может не знать адреса вызывающей программы,  поскольку механизм вызова автоматически генерирует адрес возврата,  который будет использован вызываемой программой после завершения ее выполнения.
    Программные прерывания обеспечивают такую возможность  путем  выработки  прерывания  самой программой.  Например,  если программе необходимо вычислить время  дня,  ей  совершенно  не требуется  знать адрес программы подсчета времени - достаточно знать только,  что программа подсчета времени дня  запускается программным прерыванием 26.
    Программные прерывания используются для вызова всех  служебных  функций,  представляемых  обычным  пользователям.  Эти функции  включают все процедуры системы BIOS и ПЗУ и  служебные процедуры DOS. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2. Классификация прерываний 

2.1. Виды прерываний  

    В зависимости от источника, прерывания делятся на:
·      аппаратные - возникают как реакция микропроцессора на физический сигнал от некоторого устройства (клавиатура, системные часы, клавиатура, жесткий диск и т.д.), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени. При аппаратном прерывании или исключении процессор записывает статусную информацию, необходимую для возврата к исходной точке в потоке управления и продолжает выполнение команд так, будто ничего не произошло. Для этого процессор создает в стеке ядра прерванного потока фрейм ловушки (trap frame), в котором сохраняет информацию о состоянии выполняемого потока, фрейм ловушки обычно является подмножеством полного контекста потока.
Например, исключение «bus error» (ошибка шины) возникает из-за аппаратной ошибки.
·      программные - вызываются искусственно с помощью соответствующей команды из программы, предназначены для выполнения некоторых действий операционной системы. Программное прерывание ядро обрабатывает либо
при обработке  аппаратного прерывания, либо синхронно  — при вызове по-
током функции  ядра, относящейся к данному программному прерыванию.
·      исключения - являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (например, деление на ноль, прерывание по флагу TF (трассировка)).  
 
 
 

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

Хотя  контроллеры прерываний различают  уровни приоритетов прерываний,
Windows 2000 использует свою схему приоритетов  прерываний, известную под азванием уровни запросов прерываний (interrupt request levels, IRQL). Внутри ядра IRQL представляются в виде номеров от О до 31, причем больший номер соответствует прерыванию с большим приоритетом. Ядро определяет стандартный набор IRQL для программных прерываний, a HAL увязывает IRQL с номерами аппаратных прерываний. IRQL, определенные для архитектуры х8б, показаны на рис. 1.

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

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

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

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

    
      переход к выполнению и выполнение программы обработки прерывания;
    Здесь определяется источник прерывания и  вызывается соответствующий обработчик прерывания.
    В реальном режиме микропроцессора допускается 256 источников - по количеству элементов таблицы векторов прерываний.
    Структура элемента:
    ·      2 байта - значение смещения начала программы-обработчика прерывания от начала кодового сегмента;
    ·     
    и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.