Бройдо В.Л. Вычислительные системы, сети и телекоммуникации (2002) (1186248), страница 65
Текст из файла (страница 65)
Последовательность действий процессора при реализации прерывания такова. При появлении запроса па прерывание, запланированное заранее или неожиданное, процессор, как правило, после завершения выполнения текущей команды программы анализирует лопустимость (разрешенность и приоритетность) данного вида прерывания. Если оно разрешено, процессор произволит слелуюшие лействия; а запоминает в стековой памяти текущее состояние прерываемой программы (состояние некоторых регистров МПП, в частности регистров Р1, С8, 1Р, а в микропроцессорах МП80286 и выше — и слова состояния программы, храняшегося в других регистрах МПП); 277 Режимы работы компьютеров посылает источнику запроса иа прерывание запрос о причине (коде) прерывания; гз анализирует код запрошеипого прерывания (номер прерывания — йгг) и формирует адрес ячейки (А1г), храияшей вектор прерывания (вектор-адрес программы обработки прерывания) по формуле; А)г = 4 дг'(векторы прерываний занимают начальную 1-килобайтную область ОП с адресами ячеек от 00000 до 00400Н (шестнадцатеричныйй код) так, что адрес вектора вычисляется простым умножением номера прерывания па четыре, так как СЯ и 1Р занимают по 2 байт каждый); й считывает из ОП и записывает в регистры МПП (в регистры Г1., С5, 1Р и т.
д.) вектор прерывания и его атрибуты; о гасит (устанавливает в О) флаги прерывания (1Г) и трассировки (ТГ); гз выполняет программу обработки прерывания (которую иногда называют драй- вером прерывания); г'й после выполнения программы обработки прерывания возвращает из стековой памяти параметры прерванной программы в регистры МПП и восстанавливает процесс выполнения прерванной программы. Видов (иомеров) прерывания может быть всего 256, и, соответственно, векторов прерывания (адресов СВ:1Р программ обработки прерываний) в ОП может находиться до 250. Классификация видов прерываний показана иа рис. 9.2.
р Программные Программные ВЮЗ гг08 Технические Логические Рис. 9.2. Классификация видов прерываний в МП Прикладные прерывания временно устанавливаются пользователем при миогоп- рограмм работе М П для указания приоритета выполнения прикладных программ г78 Глава 9. Прог аммное управление — основа автоматизации (при появлении необходимости выполнения более приоритетной программы текуШая менее приоритетная программа прерывается).
Псеедопрерыванил используются для запоминания важных фиксированных адресов, которые могут быть использованы в программах, в частности, при условных и безусловных передачах управления (запомннание адресов передачи управления как векторов прерывания возможно благодаря аналогии выполнения прерывания и обращения к процелурам). Аппаратные прерывания инициируются при обрагцениях к МП со стороны внешних устройств (таймера, клавиатуры, дисководов, принтера и т.
д.) с требованием уделить им внимание и выполнить совместно с ними те или иные процелуры. Прерывания от таймера, например, повторяются 18 раз в каждую секунду, от клавиатуры — при каждом программно не запланированном нажатии некоторых клавиш и т. п, Аппаратные прерывания пе координируются с работой программы и могут быть весьма разнообразны.
Для их систематизации н определения очередности выполнения при одновременном возникновешщ нескольких из пих обычно используется контроллер прерываний. Программные прерывания — это обычные процедуры, которые вызывает текущая программа лля выполнения предусмотренных в ней стандартных подпрограмм, чаще всего подпрограмм — служебных функций работы с внешними устройствами, то есть фактически программные прерывания ничего не прерывают. Программные прерывания делятся на две большие группы, вызывающие служебные функции: гз базовой системы ввода-вывода — прерывания В108; операционной системы — прерывания 008. Программы обработки прерываний 008, в отличие от программ обработки прерываний В108, не встроены в ПЗУ и для разных операционных систем могут быть разными.
К программным прерываниям можно отнести также прерывания при пошаговом исполнении программы, при работе с контрольным остановом и т. л. Технические прерывания (или, иначе, прерывания от схем контроля) возникают при появлении отказов и сбоев в работе технических средств (аппаратуре) ПК. Большинство технических прерываний не маскируются, то есть они разрешаются всегда, а некоторые из них относятся к категории «аварийных» (например, отключение питания), и при их возникновении даже не запрашивается причина прерывания, а просто, по возможности, спасаются важные промежуточные результаты— записываются в безопасное место, в НЖМД, например. Логические прерывания возникатт при появлении ошибок в выполняемых программах (леление на О, потеря значности мантиссы, нарушение защиты памяти и т. п.).
Многие из логических прерываний также относятся к категории немаскируемых. Прерывания обслуживаются базовой системой ввода-вывода — модулем расширения В108 и молулем обработки прерываний 008. В108 и блок расширения В108 имеют дело в основном с не планируемыми техническими и логическими прерываниями, пользовательскими прикладными прерываниями, а также со многими планируемыми прерываниями, обслуживающими систему ввода-вывода, детали- 279 Режимы работы компьютеров Устройство приема запросов на прерывания МП Тип О Тип 1 Типы 32-255 Тип 2 Тип 4 Типы 16-31 Пошаговый режим Ошибка деления Прерывание по ~МТ Прерывание по!ЫТО Прерывания В!08 Прерывания 008 Рис. 9.3.
Оргайизация приема запросов на прерывания Для приема внешних прерываний имеются порты двух типов: ХМ! (Холе Мазкег( 1пгепирт) — для приема немаскируемых прерываний и 1ХТК (1птеггпрг) — для приема прочих прерываний (1ХТК обычно используется для подсоединения контроллера прерываний). Если запрос на прерывание поступает по входу ХМ1, то прерывание не маскируется (имеет абсолютный приоритет) и сразу выполняется; по входу 1ХТК прерывание разрешается, если в регистре флагов МПП флаг !Е !.
Всего предусмотрено 256 типов (0-255) прерываний. Из них только первые 5 жестко закреплены в МП, остальные используются системами В!О5 и РОВ. О Тип Π— прерывание возникает при делении на О или если частное от деления переполняет разрядную сетку МП; зированными и не очень детализированными (прерывания, обслуживаемые В105, часто называют прерываниями нижнего уровня), Модуль обработки прерываний РОВ обслуживает в основном планируемые прерывания, в том числе и прерывания системы ввода-вывода. Прерывания Р05 часто называют прерываниями верхнего уровня, так как, с одной стороны, в этих прерываниях меньше учитываются технические особенности элементов ПК, с другой стороны, при обработке этих прерываний часто имеют место обращения к программам прерываний системы В!03. Болыцинство прерываний В! ОВ имеют близкие аналоги среди прерываний РОВ.
Следует сказать, что использование прерываний В105 позволяет, как правило, более детализировано выполнить обращения к различным системным ресурсам ПК, к элементам информационных структур и их атрибутам. Однако прерывания РОВ более просты в использовании при программировании. Поэтому начинающим программистам можно рекомендовать использование прерываний РОВ, особенно расширенных функций РОВ для работы с файлами. Схема организации приема запросов на прерывания показана на рис.
9.3. 280 Глава 9. Прог аммное управление — основа автоматизации д Тип 1 — в режиме «трассировка» (при Тг = 1) после выполнения кажлой команды программы происходит останов; о Тип 2 — немаскируемое техническое прерывание; и Тип 3 — прерывание по команде 1о1Т, включенной в программу: останов и отображение содержимого регистров МПП; »«Тип 4 — прерывание по команле 1НТО, включенной в программу, но толькб если при выполнении прелыдущей команлы произошло переполнение разрялной сетки; а Типы 8-15 — аппаратные прерывания, инициируемые внешними устройствами, поступают на вхолы 1КЯΠ— 1КЯ7 контроллера прерываний (вход! ЩО имеет высший приоритет, и прерывание, поступившее по этому входу, обрабатывается первым; всего уровней приоритета 8 и вход 1Щ7 имеет низший приоритет); гз Типы 16 — 31 — планируемые программные прерывания В108; гз Типы 32-255 — программные прерывания РОЯ (жестко задействовано около 10, а вообще в разных версиях Р08 их разное количество).
Прерывания с 0 по 31 и прерывание 64 относятся к прерываниям нижнего уровня, обслуживаемым В108; прерывания, начиная с 32 — прерывания верхнего уровня (за исключением прерывания 64); причем прерывание 33 (21Н) — это комплексное, чаще всего используемое в программах пользователя прерывание, имеющее около 100 разновилностей (служебных функций РОЯ). В некоторых типах прерываний В108 и Р08 имеется явного разновидностей, иногда более 10. Так, прерывание 10 (АН) имеет 15 разновидностей, прерывание 33 (21Н)— около 100 разновидностей: в РОЯ 1.0 — 47, в Р08 2.0 — 88, в Р08 3.0 и выше— 99 разновидностей (вид работы в рамках каждого прерывания определяется содержимым регистра АН).