лекции СПО
.pdfодновременно с вызовом процедуры — это свойство про р ммных прерыв ний
поддержив ется ольшинством процессоров.
В результ те про р ммные прерыв ния ч сто используются для выполнения о р ниченно о количеств вызовов функций ядр опер ционной системы, то есть системных вызовов.
Прерыв ниям приписыв ется приоритет, с помощью которо о они
р нжируются по степени в жности и срочности. О прерыв ниях, имеющих
один ковое зн чение приоритет , |
оворят, что они относятся к одному уровню |
|
приоритет прерыв ний. |
|
|
Прерыв ния о ычно о р |
тыв ются модулями опер ционной системы, |
|
т к к к действия, выполняемые |
по прерыв нию, относятся к упр влению |
|
р зделяемыми ресурс ми |
вычислительной системы — принтером, диском, |
|
т ймером, процессором и |
т. п. |
Процедуры, вызыв емые по прерыв ниям, |
о ычно н зыв ют о р отчик ми прерыв ний, или процедур ми о служив ния прерыв ний (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 следующим о р зом. При поступлении в процессор си н л з прос н