Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции СПО

.pdf
Скачиваний:
30
Добавлен:
03.06.2015
Размер:
2.4 Mб
Скачать

одновременно с вызовом процедуры — это свойство про р ммных прерыв ний

поддержив ется ольшинством процессоров.

В результ те про р ммные прерыв ния ч сто используются для выполнения о р ниченно о количеств вызовов функций ядр опер ционной системы, то есть системных вызовов.

Прерыв ниям приписыв ется приоритет, с помощью которо о они

р нжируются по степени в жности и срочности. О прерыв ниях, имеющих

один ковое зн чение приоритет ,

оворят, что они относятся к одному уровню

приоритет прерыв ний.

 

 

Прерыв ния о ычно о р

тыв ются модулями опер ционной системы,

т к к к действия, выполняемые

по прерыв нию, относятся к упр влению

р зделяемыми ресурс ми

вычислительной системы — принтером, диском,

т ймером, процессором и

т. п.

Процедуры, вызыв емые по прерыв ниям,

о ычно н зыв ют о р отчик ми прерыв ний, или процедур ми о служив ния прерыв ний (Interrupt Service Routine, /57?). Апп р тные прерыв ния

о р тыв ются др йвер ми соответствующих внешних устройств, исключения

— специ льными модулями ядр , про р ммные прерыв ния — процедур ми ОС, о служив ющими системные вызовы. Кроме этих модулей в опер ционной системе может н ходиться т к н зыв емый диспетчер прерыв ний, который координирует р оту отдельных о р отчиков прерыв ний.

6.2 Механизм прерываний

 

Мех низм прерыв ний поддержив ется пп р тными

средств ми

компьютер

и про р ммными средств ми опер ционной системы. Апп р тн я

поддержк

прерыв ний имеет свои осо енности, з висящие от тип

процессор

и дру их

пп р тных компонентов, перед ющих си н л з прос прерыв ния от

внешне о

устройств к процессору (т ких, к к контроллер внешне о

устройств , шины подключения внешних устройств, контроллер прерыв ний,

являющийся посредником между си н л ми шины и си н л ми процессор ).

Осо енности

пп р тной

peaлиз ции прерыв ний

ок зыв ют

влияние

н

средств

про р ммной поддержки прерыв ний, р

от ющие в сост ве ОС.

 

 

Существуют

дв

основных

спосо

, с помощью которых шины

выполняют прерыв ния: векторный (vectored)

и

опр шив емый

(polled).

В

о оих спосо

х процессору предост вляется информ ция о

уровне приоритет

прерыв ния н

 

шине подключения внешних устройств. В случ е векторных

прерыв ний в процессор перед ется т кже информ ция о н ч льном

 

дресе

про р ммы о р

 

отки возникше о прерыв ния — о р

отчик

прерыв ний.

 

Устройств м, которые используют векторные прерыв ния, н зн ч ется

вектор

прерыв ний.

Он

предст вляет

со ой

 

электрический

си н л,

выст вляемый

н

соответствующие

шины

процессор

и несущий

в

се е

информ цию о

определенном, з крепленном з

д нным устройством номере,

который

идентифицирует

соответствующий

о р

отчик

прерыв ний.

Этот

вектор

может

 

ыть

фиксиров нным,

конфи урируемым

(н пример,

с

использов нием

 

переключ телей)

или

про р ммируемым.

Опер ционн я

систем

может

предусм трив ть

процедуру

ре истр ции

вектор

о р

отки

прерыв ний для

определенно о

устройств , котор я связыв ет

некоторую

подпро р мму

о р

отки

прерыв ний

с

определенным

вектором.

При

получении си н л

з прос

прерыв ния

процессор

выполняет специ льный

цикл подтверждения

прерыв ния,

в

котором

устройство

должно

идентифициров ть се я. В течение это о цикл

устройство отвеч ет, выст вляя

н шину

вектор

прерыв ний. З тем процессор

использует этот

вектор для

н хождения о р

 

отчик

д нно о прерыв ния. Примером шины подключения

внешних устройств, котор я поддержив ет векторные прерыв ния, является шин VMEbus.

При использов нии опр шив емых прерыв ний процессор получ ет от

з просивше о прерыв ние устройств только

информ цию

о уровне

приоритет прерыв ния (н пример, номере IRQ н шине ISA или номере IPL н

шине SBus компьютеров SPARC). С к ждым уровнем прерыв ний может

ыть

связ но несколько устройств и соответственно

несколько

про р мм

о р отчиков прерыв ний. При возникновении прерыв ния процессор должен

определить, к кое устройство из тех, которые связ ны с д нным уровнем

прерыв ний, действительно з просило прерыв ние. Это дости ется вызовом всех о р отчиков прерыв ний для д нно о уровня приоритет , пок один из

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

устройство, то определение нужной про р ммы о р отки прерыв ния

происходит немедленно, к к и при векторном прерыв нии. Опр шив емые прерыв ния поддержив ют шины ISA, EISA, MCA, PCI и Sbus.

Мех низм прерыв ний некоторой пп р тной пл тформы может

сочет ть векторный и опр шив емый типы прерыв ний. Типичным примером

т кой ре лиз ции является пл тформ персон льных компьютеров н основе

процессоров Intel Pentium. Шины PCI, ISA, EISA или MCA, используемые в

этой пл тформе

в к честве шин

подключения внешних устройств,

поддержив ют

мех низм опр шив емых прерыв ний.

Контроллеры

периферийных устройств выст вляют н

шину не вектор,

си н л з прос

прерыв ния определенно о уровня IRQ. Одн ко в процессоре Pentium систем прерыв ний является векторной. Вектор прерыв ний в процессор Pentium

пост вляет контроллер прерыв ний, который ото р ж ет поступ ющий от шины си н л IRQ н определенный номер вектор .

Вектор прерыв ний, перед в емый в процессор, предст вляет со ой

целое число в ди п зоне от 0 до 255, ук зыв ющее н

одну из 256 про р мм

о р отки прерыв ний, дрес

которых

хр нятся в

т лице

о р

отчиков

прерыв ний. В том случ е, ко д к к ждой линии IRQ подключ ется только

одно устройство, процедур

о р

отки прерыв ний р

от ет т к, к к если ы

систем

прерыв ний ыл

чисто векторной, то есть процедур

не выполняет

ник ких

дополнительных

опросов для

выяснения

то о,

к кое

именно

устройство з просило прерыв ние. Одн ко при совместном использов нии

одно о уровня IRQ

несколькими устройств ми

про р мм о р отки

прерыв ний должн

р от ть в соответствии со

схемой опр шив емых

прерыв ний, то есть дополнительно выполнить опрос всех устройств,

подключенных к д нному уровню IRQ.

 

 

Мех низм прерыв ний ч ще все о

поддержив ет приоритез цию и

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

озн ч ет,

что все источники

прерыв ний делятся н

кл ссы и к ждому кл ссу н зн ч ется свой уровень

приоритет з прос

н

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

о служив ться к к

относительные и

солютные. О служив ние з просов прерыв ний по схеме с

относительными приоритет ми з ключ ется в том, что при одновременном

поступлении з просов прерыв ний из р зных кл ссов вы ир ется з прос,

имеющий высший приоритет. Одн ко в д льнейшем при о служив нии это о

з прос

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

случ е, ко д

появляются

олее приоритетные з просы — решение о вы оре

ново о

з прос приним ется только

в

момент

з вершения

о служив ния

очередно о

прерыв ния.

Если

же

 

олее приоритетным

прерыв ниям

р зреш ется

приост н влив ть

р

оту

процедур о служив ния менее

приоритетных прерыв ний, то это озн ч ет, что р

от ет схем

приоритез ции

ссолютными приоритет ми.

Если

процессор

(или компьютер, ко д поддержк

приоритез ции

прерыв ний вынесен во внешний по отношению к процессору

лок) р от ет

по схеме с

солютными приоритет ми, то он поддержив ет в одном из своих

внутренних

ре истров

переменную, фиксирующую уровень приоритет

о служив емо о в д нный момент прерыв ния. При поступлении з прос из

определенно о кл сс е о приоритет ср внив ется с текущим приоритетом процессор , и если приоритет з прос выше, то текущ я процедур о р отки

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

Упорядоченное о служив ние з просов прерыв ний н ряду со схем ми

приоритетной

о р отки

з просов

может

выполняться

мех низмом

м скиров ния з просов. Со ственно

оворя, в опис нной схеме

солютных

приоритетов

выполняется

м скиров ние — при

о служив нии

некоторо о

з прос

все з просы с р вным или

олее низким приоритетом м скируются, то

есть не

о служив ются. Схем

м скиров ния

предпол

ет

возможность

временно о м скиров ния прерыв ний лю о о кл сс

нез висимо от уровня

приоритет .

 

 

 

 

 

 

 

О о щенно последов тельность действий

пп р тных и про р ммных

средств по о р

отке прерыв ния можно опис ть следующим о р зом.

1. При

возникновении

си н л (для пп р тных

прерыв ний) или

условия (для внутренних прерыв ний) прерыв ния

происходит первичное

пп р тное р спозн в ние тип

прерыв ния. Если прерыв ния д нно о тип в

н стоящий момент з прещены

(приоритетной

схемой

или

мех низмом

м скиров ния), то процессор продолж ет поддержив ть естественный ход выполнения ком нд. В противном случ е в з висимости от поступившей в процессор информ ции (уровень прерыв ния, вектор прерыв ния или тип

условия внутренне о прерыв ния)

происходит

втом тический вызов

процедуры о р отки прерыв ния,

дрес которой н ходится в специ льной

т лице опер ционной системы, р змещ емой ли о в ре истр х процессор ,

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

 

 

 

2. Автом тически сохр няется некотор я ч сть контекст

прерв нно о

поток ,

котор я позволит ядру возо новить исполнение поток процесс после

о р отки

прерыв ния. В это подмножество о ычно включ ются зн чения

счетчик

ком нд, слов

состояния м шины, хр няще о призн ки основных

режимов р

оты процессор (пример т ко о слов — ре истр EFLA6S в Intel

Pentium),

т кже нескольких ре истров о ще о н зн чения, которые тре уются

про р мме о р отки прерыв ния.

Может

ыть сохр нен и полный контекст

процесс ,

если ОС о служив ет

д нное

прерыв ние

со

сменой процесс .

Одн ко

в

о щем случ е

это не

о яз тельно, ч сто

о р

отк

прерыв ний

выполняется ез вытеснения текуще о процесс .

Решение о перепланировании процессов может быть принято в ходе обработки прерывания, например, если это прерывание от таймера и после наращивания значения системных часов выясняется, что процесс исчерпал

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

предназначены другому процессу.

3. Одновременно с з

рузкой

дрес

процедуры о р

отки прерыв ний в

счетчик ком нд может втом тически выполняться з

рузк ново о зн чения

слов состояния м шины

(или

дру ой

системной

структуры,

н пример

селектор

кодово о се мент в

процессоре Pentium),

которое

определяет

режимы р

оты процессор

при о р

отке прерыв ния, в том числе р оту в

привиле иров нном режиме. В некоторых моделях процессоров переход в

привиле иров нный режим з счет смены состояния м шины при о р отке

прерыв ния является единственным спосо ом смены режим . Прерыв ния

пр ктически во всех мультипро р ммных ОС о р тыв ются в

привиле иров нном режиме модулями ядр , т к к к при этом о ычно нужно выполнить ряд критических опер ций, от которых з висит жизнеспосо ность системы, — упр влять внешними устройств ми, перепл ниров ть потоки и т. п.

4.

Временно

з прещ ются

прерыв ния

д нно о

тип ,

что ы

не

о р зов л сь

очередь

вложенных

дру

в

дру

 

потоков

одной

и той

же

процедуры. Дет ли выполнения этой опер ции

з висят

от осо енностей

пп р тной

пл тформы,

н пример

может

 

использов ться

мех низм

м скиров ния прерыв ний. Мно ие процессоры

втом тически уст н влив ют

призн к

з прет прерыв ний в

н ч ле

цикл

о р

отки прерыв ния,

в

противном случ е это дел ет про р мм о р

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

 

 

5. После то о к к прерыв ние о р

от но ядром опер ционной системы,

прерв нный контекст восст н влив ется и

р

от

поток

возо новляется с

прерв нно о мест . Ч сть контекст

восст н влив ется

пп р тно по ком нде

возвр т

из

прерыв ний

(н пример,

дрес следующей

ком нды и слово

состояния м шины),

ч сть — про р ммным спосо ом,

с помощью явных

ком нд извлечения д нных из стек . При возвр те из прерыв ния локировк

повторных прерыв ний д нно о тип сним ется.

6.3 Диспетчеризация и приоритезация прерываний в ОС

Опер ционн я систем должн

и р ть

ктивную роль в ор низ ции

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

Прерыв ния

выполняют очень

полезную

для

вычислительной системы

функцию

— они

позволяют

ре иров ть

н

синхронные но отношению к вычислительному процессу со ытия. В то же

время прерыв ния созд ют дополнительные трудности для ОС в ор низ ции вычислительно о процесс . Эти трудности связ ны с непредвиденными

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

вычислительных р от и з просы н выполнение системных функций

(системные вызовы) от пользов тельских приложений, выполняемые с помощью про р ммных прерыв ний. С ми модули ОС т кже ч сто вызыв ют

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

Опер ционн я систем не может терять контроль н д ходом выполнения системных процедур, вызыв емых по прерыв ниям. Он должн упорядочив ть их во времени т к же, к к пл нировщик упорядочив ет мно очисленные пользов тельские потоки. Кроме то о, с м пл нировщик потоков является

системной процедурой,

вызыв емой

по прерыв ниям ( пп р тным — от

т ймер или контроллер

устройств

ввод -вывод , или про р ммным — от

приложения или модуля ОС). Поэтому пр вильное пл ниров ние процедур,

вызыв емых по прерыв ниям, является нео ходимым условием пр вильно о пл ниров ния пользов тельских потоков. В противном случ е в системе мо ут

возник ть,

н пример, т кие ситу ции, ко д

опер ционн я систем

удет

длительное

время з ним ться не тре ующей

м новенной ре кции

з д чей

упр вления

стримером,

рхивирующим д нные, в

то время,

ко д

высокоскоростной диск

удет прост ив ть и тормозить р

оту мно очисленных

приложений,

о менив ющихся д нными с этим диском. Еще один пример

т кой ситу ции иллюстрирует

рис. 4.12. В д нном

случ е о р

отчик

прерыв ний принтер локирует н

длительное время о р

отку прерыв ния от

т ймер , в результ те че о системное время н

некоторое время «з мир ет» и

поток

2, критически в жный

для

пользов теля,

не

получ ет упр вление в

з пл ниров нное

время.

Остроту

про лемы

несколько

смя ч ет

то

о стоятельство, что во

мно их случ ях

о р

отк

прерыв ния

связ н

с

выполнением все о нескольких опер ций ввод -вывод

и поэтому имеет очень

не ольшую

продолжительность.

Тем

не

менее

ОС

все д

должн

контролиров ть ситу цию и выполнять критичную

р

оту

вовремя,

не

пол

ться н

волю случ я.

 

 

 

 

 

 

 

 

 

 

 

 

 

Для упорядочения р

оты о р

отчиков прерыв ний в опер ционных

систем х применяется тот же мех низм, что и для упорядочения р

оты

пользов тельских

процессов

мех низм

приоритетных

очередей. Все

источники прерыв ний о ычно делятся н

несколько кл ссов, причем к ждому

кл ссу

присв ив ется

приоритет.

В

опер ционной

системе выделяется

про р ммный

модуль, который з ним ется диспетчериз цией о р

отчиков

прерыв ний. Этот модуль в р зных ОС н зыв ется по-р зному, но для определенности удем е о н зыв ть диспетчером прерыв ний.

При возникновении прерыв ния диспетчер прерыв ний вызыв ется

первым. Он з прещ ет нен дол о все прерыв ния,

з тем выясняет причину

прерыв ния. После это о диспетчер ср внив ет

н зн ченный д нному

источнику прерыв ния приоритет и ср внив ет е о с текущим приоритетом поток ком нд, выполнявмо о процессором. В этот момент времени процессор

уже может выполнять инструкции дру о о о р

отчик прерыв ний,

т кже

имеюще о некоторый приоритет. Если

приоритет ново о з прос

выше

текуще о, то выполнение текуще о о р

отчик

приост н влив ется

и он

помещ ется в соответствующую очередь

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

противном случ е в очередь помещ ется о р

отчик ново о з прос .

Рис. 4.12. Неупорядоченн я о р отк прерыв ний

ПРИМЕЧАНИЕ Приоритет обработчиков прерываний не совпадает в общем случае с

приоритетом потоков, выполняемых в обычной последовательности,

определяемой планировщиком потоков. По отношению к обработчикам прерываний любой поток, который назначен на выполнение планировщиком,

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

6.4 Функции централизованного

диспетчера

прерываний

на

примере Windows NT

 

 

 

 

 

Некоторые процессоры или контроллеры прерыв ний компьютер

н

пп р тном уровне поддержив ют приоритез цию з просов н

прерыв ние.

Н пример, в процессор х

MIPS существует

несколько

уровней

пп р тных

з просов н прерыв ния

и несколько уровней про р ммных

з просов.

В

процессоре имеется внутренняя переменн я, н зыв ем я уровнем прерыв ний

процессор .

Прерыв ние

происходит только в том случ е, ко д уровень

з прос н

прерыв ние

выше текуще о уровня прерыв ний процессор .

меется т кже привиле иров нн я инструкция, с помощью которой код ядр ОС может изменить уровень прерыв ний процессор . Нео р от нные з просы н прерыв ния должны хр ниться в контроллер х устройств, что ы не

потеряться и дожд ться о служив ния при снижении уровня прерыв ния

процессор , ко д

он з кончит выполнение

олее срочных р

от. При р оте н

т ко о род

пп р тной пл тформе ОС может пользов ться встроенными в

процессор

средств ми

приоритез ция

прерыв ний для

упорядочив ния

процесс их о р

отки.

Одн ко т кие средств имеются не у всех процессоров,

н пример процессоры семейств

Pentium не имеют встроенной переменной для

фикс ции уровня прерыв ний исполняемо о код

— пп р тные прерыв ния

мо ут ыть ли о полностью

з прещены, ли о

полностью

р зрешены (

н и олее критичные нельзя з претить вовсе).

 

 

 

 

 

Для исключения з висимости от

пп р тной пл тформы в некоторых ОС

вводится

со ственн я про р ммн я

систем

приоритетов

прерыв ний.

Примером т кой ОС может служить Windows NT.

 

 

 

 

 

Диспетчер прерыв ний

Windows NT (т к

н зыв емый Trap Handler)

р от ет с про р ммной моделью прерыв ний, единой для всех

пп р тных

пл тформ,

поддержив емых

Windows

NT. Все

источники

прерыв ний

( пп р тных и про р ммных,

т кже некоторых

в жных для

системы

исключений, н пример исключения по оши ке шины) делятся н

несколько

кл ссов, и

к ждому кл ссу присв ив ется уровень

з прос

прерыв ния —

Interrupt Request Level, IRQL Этот уровень и предст вляет приоритет д нно о

кл сс . Опер ционн я систем про р ммным спосо ом поддержив ет

внутреннюю переменную, н зыв емую IRQL выполняемо о процессором код ,

котор я по н зн чению соответствует уровню прерыв ния процессор . Если процессор, н котором р от ет ОС, поддержив ет т кую переменную, то он используется и IRQL выполняемо о код ото р ж ется н нее, в противном случ е соответствующие функции процессор эмулируются про р ммно.

О щ я схем пл ниров ния о р отки прерыв ний вы лядит в Windows NT следующим о р зом. При поступлении в процессор си н л з прос н