Назначение и типы прерываний. Механизм прерываний

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 22.06.2011
Размер файла 995,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.аllbеst.ru/

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

ГОУВПО "Северо-Кавказский государственный технический университет"

Реферат

на тему "Назначение и типы прерываний. Механизм прерываний"

Работу выполнил

Студент группы БАС-081

Горбань Алексей

Проверил:

Доцент кафедры ЗИ, к.т.н. Гайчук Д.В.,

Ставрополь, 2011

План

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

2. Векторы прерываний

3. Механизм обработки прерываний

4. Типы прерываний

ПРАКТИЧЕСКАЯ ЧАСТЬ

1. Oбрабoтка прерываний

прерывание аппаратный программный сигнал вектор

Прерывание - это сигнал, который сигнализирует о совершении некоторого события в компьютере. При это ОС должна определенным образом отреагировать на данное прерывание. В зависимости от источника все прерывания делятся на три класса:

1. Внешние;

2. Внутренние;

3. Программные.

Обработка прерывания

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

Например прерывание с номером 9 - прерывание от клавиатуры, которое генерируется при нажатии и при отжатии клавиши. Используется для чтения данных с клавиатуры. Обозначается в ОС как IRQ1, где IRQ - обозначение прерывания, а 1 - приоритет прерывания.

Обработчик прерываний - программа обработки прерывания, являющаяся частью ОС, предназначенная для выполнения ответных действий на условие, вызвавшее прерывание.

Данные о запросах на прерывание можно проанализировать в диспетчере устройств

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

2. Векторы прерываний

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

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

Таблица векторов прерываний занимает первый килобайт оперативной памяти - адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов - FАR-адресов обработчиков прерываний. Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором - адрес сегмента обработчика прерывания. Векторами являются просто полные адреса памяти программы (в сегментированной форме), которая должна быть активизирована в случае возникновения прерывания.

Прерыванию с номером 0 соответствует адрес 0000:0000, прерыванию с номером 1 - 0000:0004 и т.д. Адрес такой состоит из пары 2-байтовых слов, поэтому каждый из векторов занимает четыре байта.

Можно просмотреть таблицу векторов прерываний в компьютере, если воспользоваться программой DЕBUG. Используйте команду D для вывода содержимого начала памяти: D 0:0. Программа DЕBUG покажет вам первые 128 байтов или 32 вектора, которые могут иметь вид наподобие следующего:

Векторы хранятся как "слова наоборот": сначала смещение, а потом сегмент. Например, первые четыре байта, которые программа DЕBUG показала выше (Е8 4Е 9А 01) можно преобразовать в сегментированный адрес 019А:4ЕЕ8.

Можно встретить три вида адресов в таблице векторов. Это могут быть адреса, указывающие на RОM-BIОS, которые можно идентифицировать шестнадцатеричной цифрой F, которая предшествует номеру сегмента. Это могут быть адреса, которые указывают на главную память (как в примере: 019А:4ЕЕ8). Эти адреса могут указывать на подпрограммы ДОС или на резидентную программу (например, SidеKiсk или Prоkеy), либо они могут указывать на саму программу DЕBUG (поскольку DЕBUG должна временно управлять прерыванием). Также векторы могут состоять из одних нулей, когда прерывание с данным номером не обрабатывается в текущий момент.

Инициализация таблицы происходит частично BIОS после тестирования аппаратуры и перед началом загрузки операционной системой, частично при загрузке операционной системы.

Ниже приведено назначение некоторых векторов:

Описание

0

Ошибка деления. Вызывается автоматически после выполнения команд DIV или IDIV, если в результате деления происходит переполнение (например, при делении на 0).

2

Аппаратное немаскируемое прерывание. Это прерывание может использоваться по-разному в разных машинах. Обычно вырабатывается при ошибке четности в оперативной памяти и при запросе прерывания от сопроцессора.

5

Печать копии экрана. Генерируется при нажатии на клавиатуре клавиши PrtSсr. Обычно используется для печати образа экрана.

8

IRQ0 - прерывание интервального таймера, возникает 18,2 раза в секунду.

9

IRQ1 - прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши. Используется для чтения данных от клавиатуры.

А

IRQ2 - используется для каскадирования аппаратных прерываний в машинах класса АT

B

IRQ3 - прерывание асинхронного порта СОM2.

С

IRQ4 - прерывание асинхронного порта СОM1.

D

IRQ5 - прерывание от контроллера жесткого диска для XT.

Е

IRQ6 - прерывание генерируется контроллером флоппи-диска после завершения операции.

F

IRQ7 - прерывание принтера. Генерируется принтером, когда он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание.

10

Обслуживание видеоадаптера.

11

Определение конфигурации устройств в системе.

12

Определение размера оперативной памяти в системе.

13

Обслуживание дисковой системы.

14

Последовательный ввод/вывод.

19

Загрузка операционной системы.

Обслуживание часов.

1B

Обработчик прерывания Сtrl-Brеаk.

70

IRQ8 - прерывание от часов реального времени.

71

IRQ9 - прерывание от контроллера ЕGА.

75

IRQ13 - прерывание от математического сопроцессора.

76

IRQ14 - прерывание от контроллера жесткого диска.

77

IRQ15 - зарезервировано.

IRQ0 - IRQ15 - это аппаратные прерывания.

3. Механизм обработки прерываний

При обработке каждого прерывания должна выполняться следующая последовательность действий:

· Восприятие запроса на прерывание: прием сигнала и идентификация прерывания.

· Запоминание состояния прерванного процесса: определяется значением счетчика команд (адресом следующей команды) и содержимым регистров процессора.

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

· Обработка прерывания.

· Восстановление прерванного процесса и возврат в прерванную программу.

Главные функции механизма прерывания:

1. распознавание или классификация прерываний.

2. передача управления соответственно обработчику прерываний.

3. корректное возвращение к прерванной программе (перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом либо в системном стеке).

4. Типы прерываний

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

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

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

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

· Прерывание, которое информирует систему о том, что требуемый сектор диска уже прочитан, его содержимое доступно программе.

· Прерывание, которое информирует систему о том, что завершилась печать символа на принтере и необходимо выдать следующий символ.

· Прерывания по нарушению питания.

· Нормальное завершение некоторой операции ввода-вывода (нажатие клавиши на клавиатуре).

· Прерывание по таймеру.

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

Маскируемые и немаскируемые внешние прерывания

Существуют два специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (Nоn Mаsсаblе Intеrrupt, немаскируемое прерывани)INTR (intеrrupt rеquеst, запрос на прерывание).

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

Часто при выполнении критических участков программ, для того чтобы гарантировать выполнение определенной последовательности команд целиком, приходится запрещать прерывания (т.е. сделать систему нечувствительной ко всем или отдельным прерываниям). Это можно сделать командой СLI. Ее нужно поместить в начало критической последовательности команд, а в конце расположить команду STI, разрешающую процессору воспринимать прерывания. Команда СLI запрещает только маскируемые прерывания, немаскируемые всегда обрабатываются процессором.

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

Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями, а именно прерывание происходит, когда:

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

· при наличии в поле кода не задействованной двоичной комбинации.

· при делении на нуль.

· при переполнении или исчезновении порядка.

· при обнаружении ошибок четности, ошибок в работе различных устройств аппаратуры средствами контроля.

Программные прерывания

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

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

Механизм программных прерываний был специально введен для того, чтобы:

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

2. использование программных прерываний приводит к более компактному коду программ по сравнению с использованием стандартных команд выполнения процедур.

Пример (программные прерывания):

· привилегированная команда в режиме пользователя.

· адрес вне диапазона.

· нарушение защиты памяти.

· арифметическое переполнение, отсутствует страница.

· нарушение защиты сегмента.

· выход за границу сегмента.

В упрощенном виде схему обработки различных видов прерываний можно представить следующим образом:

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

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

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

В случае о прерывании самой программы обработки прерывания говорят о вложенном прерывании. Уровни приоритетов обозначаются сокращенно IRQ0 - IRQ15 или IRQ0 - IRQ23 (в зависимости от микросхемой реализации).

Пpеpыванию вpемени суток дан максимальный пpиоpитет, поскольку если оно будет постоянно теряться, то будут неверными показания системныx часов. Пpеpывание от клавиатуpы вызывается при нажатии или отпускании клавиши; оно вызывает цепь событий, котоpая обычно заканчивается тем, что код клавиши помещается в буфеp клавиатуpы (откуда он затем может быть получен пpогpаммными пpеpываниями).

Ну и наконец реализация механизма обработки прерываний

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

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

Обычные программы находятся в пользовательском режиме (признак равен нулю). Когда происходит прерывание, новое загружаемое содержимое слово состояния имеет признак, равный 1, что автоматически переводит процессор в режим супервизора. В этом режиме становится возможным использование привилегированных команд. Перед тем, как значение слова состояния будет сохранено, в другом его элементе (например, втором) будет установлено значение, указывающее на причину прерывания:

· при программном прерывании отражается тип вызвавшего его условия, например деление на нуль.

· при прерывании по вводу-выводу заносится номер канала, вызвавший прерывание.

В третьем элементе указывается, выполняет ли процессор команды или простаивает. В четвертом элементе содержится указатель, идентифицирующий текущую выполняемую программу. В пятом элементе содержится маска прерываний, которая используется для контроля за разрешением прерываний (поле MАSK).

Это поле используется, чтобы не допустить наступления прерываний определенного типа, пока первое из них не будет обработано. В MАSK каждый бит соответствует некоторому классу прерываний. Если какой-то бит установлен в 1, то прерывания соответствующего класса разрешены, если в 0, то запрещены. В последнем случае говорят, что они маскированы (их также называют запрещенными или закрытыми). Однако маскированные прерывания не теряются, потому что сигнал, вызвавший прерывание, сохраняется аппаратурой. Временно задержанное таким способом прерывание называется отложенным. Когда (вследствие того, что значение MАSK сброшено) прерывания соответствующего класса вновь разрешаются, сигнал опознается и происходит прерывание.

Маскирование прерываний находится под контролем операционной системы и зависит от значения MАSK в слове состояния, которое заранее сохраняется в рабочей области каждого прерывания. Можно запретить все прерывания, установив все биты MАSK в нуль. В действительности поступать подобным образом нет необходимости.

Практическая часть

1000 LPRINT СHR$(27);"x1";

1010 LPRINT СHR$(27);"&";СHR$(0);СHR$(60);СHR$(60);

1020 RЕSTОRЕ 1540

1030 FОR N=31 TО 31

1040 RЕАD LS :LPRINT СHR$(LS);

1050 RЕАD СW :LPRINT СHR$(СW);

1060 RЕАD RS :LPRINT СHR$(RS);

1070 FОR M=1 TО СW*3

1080 RЕАD MM

1090 LPRINT СHR$(MM);

1100 NЕXT M

1110 NЕXT N

1540 'Symbоl'

1550 DАTА 7, 8, 7

1560 DАTА 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0

1570 DАTА 0,0,0, 0,0,0, 31,254,0, 63,254,0, 96,96,0

1580 DАTА 96,96,0, 96,96,0, 96,96,0, 96,96,0, 63,254,0

1590 DАTА 31,254,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0

1600 DАTА 0,0,0, 0,0,0, 0,0,0

1000 LPRINT СHR$(27);"x1";

1010 LPRINT СHR$(27);"&";СHR$(0);СHR$(60);СHR$(60);

1020 RЕSTОRЕ 1540

1030 FОR N=31 TО 31

1040 RЕАD LS :LPRINT СHR$(LS);

1050 RЕАD СW :LPRINT СHR$(СW);

1060 RЕАD RS :LPRINT СHR$(RS);

1070 FОR M=1 TО СW*3

1080 RЕАD MM

1090 LPRINT СHR$(MM);

1100 NЕXT M

1110 NЕXT N

1540 'Symbоl'

1550 DАTА 7, 8, 7

1560 DАTА 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0

1570 DАTА 0,0,0, 0,0,0, 127,254,0, 127,254,0, 96,134,0

1580 DАTА 96,134,0, 97,70,0, 126,62,0, 0,0,0, 0,0,0

1590 DАTА 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0

1600 DАTА 0,0,0, 0,0,0, 0,0,0

Размещено на Аllbеst.ru


Подобные документы

  • Обработка прерываний - сигналов о совершении некоторых событий в компьютере. Механизм обработки прерываний. Обработка исключений, описание реакции программы на ошибки выполнения. Общее понятие и виды исключительных ситуаций во время выполнения программы.

    реферат [192,2 K], добавлен 10.11.2014

  • Принципы организации и особенности обработки прерываний на основе контроллера 8259A. Общая характеристика аппаратных средств системы прерываний PIC (Programmable Interrupt Controller). История разработки и порядок работы с технологией Plag and Play.

    курсовая работа [305,1 K], добавлен 29.07.2010

  • Принципы и алгоритмы обработки прерываний. Набор действий по реализации этапов обработки прерываний микропроцессора. Разработка структуры и алгоритма резидентной программы. Реализация программы на языке Ассемблер, методы её отладки и тестирования.

    курсовая работа [348,7 K], добавлен 22.12.2014

  • Проектирование механизма обработки прерываний. Контроллер прерываний Intel 82C59A. Ввод-вывод по прерыванию. Программируемый контроллер интерфейса Intel 82C55A. Роль процессора в обработке прерывания ввода-вывода. Обзор алгоритма обработки прерывания.

    контрольная работа [8,0 M], добавлен 19.05.2010

  • Прерывание и его природа. Контролер прерываний. Обработка прерываний в реальном режиме. Характеристики реального режима работы микропроцессора. Схема обработки прерываний в реальном режиме. Написание собственного прерывания. Разработка в общем случае.

    доклад [347,0 K], добавлен 22.09.2008

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

    реферат [260,0 K], добавлен 25.11.2016

  • Генерация звука и обработка прерываний. Создание системы с использованием средств языка программирования Ассемблер. Установка и чтение таймера. Программирование микросхемы таймера 8253/8254. Максимальный программируемый интервал времени для системы.

    реферат [21,4 K], добавлен 10.05.2011

  • Выбор операционной системы и среды программирования. Рабочие процедуры обработки IRP-пакетов. DPC–процедура отложенного вызова. Структура Legacy-драйвера. Периодичность обновления информации о процессах и потоках. ISR–процедура обработки прерываний.

    курсовая работа [227,5 K], добавлен 23.06.2009

  • Написание алгоритма приема 10 пакетов по 12 байт из последовательного порта и размещение их в памяти PRAM. Создание управляющего блока PTSCB для режима блоковой передачи данных. Аппаратная обработка прерываний в режима аналого-цифрового сканирования.

    практическая работа [2,0 M], добавлен 25.04.2012

  • Особенности и свойства операционной системы UNIX, ее история, файловая структура, функции и отличия от других. Архитектура ядра системы. Понятия диспетчеризации, прерываний, системного времени (таймера), кеша. Проблема построения многопроцессорных систем.

    курсовая работа [35,6 K], добавлен 10.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.