
АВС_Лек7_2013 / Система прерываний программ в ЭВМ
.docСистема прерываний программ в ЭВМ
Важнейшая роль в реализации сложных режимов работы отводится системе прерывания программ.
Прерывание — это приостановка выполнения в процессоре программы с целью выполнения какой-то более важной или нужной в данный момент другой программы или процедуры, после завершения которой продолжается выполнение прерванной программы с момента ее прерывания. Прерывание позволяет компьютеру приостановить любое свое действие и временно переключиться на другое, как заранее запланированное, так и неожиданное, вызванное непредсказуемой ситуацией в работе машины или ее компонента. Каждое прерывание влечет за собой загрузку определенной программы, предназначенной для обработки возникшей ситуации — программы обработки прерывания.
Организация и управление прерываниями функционально во многом смыкается с управлением задачами. — одной из базовых функций операционных систем. Основой для управления процессом одновременного решения нескольких задач (равно как и управления прерываниями) являются процедуры:
-
выбора очередной задачи или определения приоритета задачи;
-
сохранения информации о статусе задачи при ее прерывании (формирование слова состояния программы);
-
упреждения и устранения конфликтов между задачами (координации и синхронизации выполнения задач).
Последовательность действий процессора при реализации прерывания такова. При появлении запроса на прерывание, запланированное заранее или неожиданное, процессор, как правило, после завершения выполнения текущей команды программы анализирует допустимость (разрещенность и приоритетность) данного вида прерывания. Если оно разрешено, Процессор производит следующие Действия:
запоминает в стековой памяти текущее состояние прерываемой программы (состояние некоторых регистров МПП, в частности, регистров FL, CS, IP, а в микропроцессорах МП80286 и выше — и слова состояния программы, хранящегося в другом регистре МПП);
посылает источнику запроса на прерывание запрос о причине (коде) прерывания;
□ анализирует код запрошенного прерывания (номер прерывания — Ni) и фор» мирует адрес ячейки (AV), хранящей вектор прерывания (вектор-адрес про граммы обработки прерывания) по формуле AV = 4Ni (векторы прерываний; занимают начальную 1024-байтовую область ОП с адресами ячеек от 00000
■ до 00400h (шестнадцатеричный код) так, что адрес вектора вычисляется про етым умножением номера прерывания на четыре, так как CS и IP занимают по два байта каждый);
-
считывает из ОП и записывает в регистры МПП (в регистры FL, CS, IP и т. д.) вектор прерывания и его атрибуты;
-
сбрасывает (устанавливает в 0) флаги прерывания (IF) и трассировки (TF);
-
выполняет программу обработки прерывания (которую иногда называют драйвером прерывания);
-
после выполнения программы обработки прерывания возвращает из стековой памяти параметры прерванной программы в регистры МПП и восстанавливает процесс выполнения прерванной программы.
Видов (номеров) прерывания может быть всего 256, и, соответственно, векторов прерывания (адресов CS:IP программ обработки прерываний) в ОП насчитывается до 256. Классификация видов прерываний показана на рис. 17.2.
Прикладные прерывания временно устанавливаются пользователем при многопрограммной работе МП для указания приоритета выполнения прикладных программ (при появлении необходимости выполнения более приоритетной программы текущая менее приоритетная программа прерывается).
Псевдопрерывания служат для запоминания важных фиксированных адресов, которые могут быть использованы в программах, в частности, при условных и безусловных передачах управления (запоминание адресов передачи управления как векторов прерывания возможно благодаря аналогии выполнения прерывания и обращения к процедурам).
Аппаратные прерывания инициируются при обращениях к МП со стороны внешних устройств (таймера, клавиатуры, дисководов, принтера и т. д.) с требованием уделить им внимание и выполнить совместно с ними те или иные процедуры. Прерывания от таймера, например, повторяются 18 раз в секунду, от клавиатуры — при каждом программно не запланированном нажатии некоторых клавиш и т. п. Аппаратные прерывания не координируются с работой программы и могут/быть весьма разнообразны. Для их систематизации и определения очередности выполнения при одновременном возникновении нескольких из них обычно используется контроллер прерываний.
Программные прерывания — это обычные процедуры, которые вызывает текущая программа для выполнения предусмотренных в ней стандартных подпрограмм, чаще всего подпрограмм — служебных функций работы с внешними устройствами, то есть, фактически, программные прерывания ничего не прерывают. Они делятся на две большие группы, вызывающие служебные функции:
-
базовой системы ввода-вывода — прерывания BIOS;
-
операционной системы — прерывания DOS.
Программы обработки прерываний DOS, в отличие от программ обработки прерываний BIOS, не встроены в ПЗУ и для разных операционных систем могут быть разными. К программным прерываниям можно отнести также прерывания при пошаговом исполнении программы, при работе с контрольным остановом и т. д.
Технические прерывания (или, иначе, прерывания от схем контроля) возникают при появлении отказов и сбоев в работе технических средств (аппаратуре) ПК. Большинство технических прерываний не маскируются, то есть они разрешаются всегда, а некоторые из них относятся к категории «аварийных» (например, отключение питания), и при их возникновении даже не запрашивается причина прерывания, а просто по возможности спасаются важные промежуточные результаты — записываются в безопасное место, в НЖМД, например.
Логические прерывания возникают при появлении ошибок в выполняемых программах (деление на 0, потеря точности мантиссы, нарушение защиты памяти и т. п.). Многие из логических прерываний также относятся к категории немаскируемых.
Прерывания обслуживаются базовой системой ввода-вывода — модулем расширения BIOS и модулем обработки прерываний DOS. BIOS и блок расширения BIOS имеют дело в основном с непланируемыми техническими и логическими прерываниями, пользовательскими прикладными прерываниями, а также со многими планируемыми прерываниями, обслуживающими систему ввода-вывода, детализированными и не'очень детализированными (прерывания, обслуживаемые BIOS, часто называют прерываниями нижнего уровня).
Модуль обработки прерываний DOS обслуживает в большинстве планируемые прерывания, в том числе и прерывания системы ввода-вывода. Прерывания DOS часто называют прерываниями верхнего уровня, так как, с одной стороны, в этих прерываниях меньше учитываются технические особенности элементов ПК, с другой стороны, при обработке этих прерываний часто случаются обращения к программам прерываний системы BIOS. Большинство прерываний BIOS имеют близкие аналоги среди прерываний DOS.
Следует сказать, что использование прерываний BIOS позволяет, как правило, более детально выполнять обращения к различным системным ресурсам ПК, к элементам информационных структур и их атрибутам. Однако прерывания DOS более просты в использовании при программировании. Поэтому начинающим программистам можно рекомендовать работать с прерываниями DOS, особенно с расширенными функциями DOS для работы с файлами. Схема организации приема запросов на прерывания показана на рис. 17.3.
Для приема внешних прерываний имеются порты двух типов: NMI (None Masked Interrupt) для приема немаскируемых прерываний и INTR (Interrupt) — для приема прочих прерываний (INTR обычно используется для подсоединения контроллера прерываний). Если запрос на прерывание поступает по входу NMI, то прерывание не маскируется (имеет абсолютный приоритет) и сразу выполняется; по входу INTR прерывание разрешается, если в регистре флагов МПП флаг IF-1.
Всего предусмотрено 256 типов (0-255) прерываний. Из них только первые пять жестко закреплены в МП, остальные используются системами BIOS и DOS:
-
Тип 0 — прерывание возникает при делении на 0 или если частное от деления переполняет разрядную сетку МП.
-
Тип 1 — в режиме «трассировка» (при TF = 1) после выполнения каждой команды программы происходит останов.
-
Тип 2 — немаскируемое техническое прерывание.
□ Тип 3 — прерывание по команде INT, включенной в программу: останов и ото- бражение содержимого регистров МПП. оизо
□ Тип 4 — прерывание по команде INTO, включенной в программу, но только если при выполнении предыдущей команды пр шло переполнение разрядной сетки.
-
Типы 8-15 — аппаратные прерывания, инициируемые внешними устройствами, поступают на входы IRQ0-IRQ7 контроллера прерываний (вход IRQ0 имеет высший приоритет, и прерывание, поступившее по этому входу, обрабатывается первым; всего уровней приоритета 8 и вход IRQ7 имеет низший приоритет).
-
Типы 16-31 — планируемые программные прерывания BIOS.
-
Типы 32-255 — программные прерывания DOS (жестко задействовано около 10, а вообще в разных версиях DOS их разное количество).
Прерывания с 0 по 31 и прерывание 64 относятся к прерываниям нижнего уровня, обслуживаемым BIOS; прерывания, начиная с 32, являются прерываниями верхнего уровня (за исключением прерывания 64), причем прерывание 33 (21h) — это комплексное, чаще всего используемое в программах пользователя прерывание, имеющее около 100 разновидностей (служебных функций DOS).
В некоторых типах прерываний BIOS и DOS имеется много разновидностей, иногда более 10. Так, прерывание 10 (Ah) включает в себя 15 разновидностей, прерывание 33 (21h) — около 100 разновидностей: в DOS 1.0 — 47, в DOS 2.0 — 88, в DOS 3.0 и выше — 99 разновидностей (вид действия в рамках каждого прерывания определяется содержимым регистра АН).
В работе [10] приведен список прерываний нижнего и верхнего уровней, а также служебных функций DOS для наиболее часто используемого программистами прерывания 21h.
Вопросы для самопроверки
-
Дайте определения алгоритма и программы решения задачи.
-
Сформулируйте основные необходимые свойства алгоритма и способы его записи.
-
Назовите основные классы алгоритмических языков и разновидности трансляторов.
-
Приведите и поясните типовой состав машинных команд и возможные их структуры.
-
Рассмотрите программу расчета квадратов чисел, приведенную в учебнике, и сформулируйте основное ее функциональные особенности.
-
Назовите виды и особенности адресации ячеек памяти в ПК.
-
Назовите основные режимы работы компьютеров и дайте им краткую характеристику.
-
Что такое прерывание работы программы и каково назначение прерываний?
9. Назовите и
поясните основные виды прерываний.
-
Как по номеру прерывания определить адрес программы его обработки?
-
Укажите, последовательность действий машины при выполнении прерывания.
12. Подробно разберите функции стековой памяти, используемые при прерыва- ниях.
http://do.gendocs.ru/docs/index-223844.html
Упрощенная структурная схема PIC
Описание схемы Структура PIC включает в себя следующие байтные регистры: • IRR – регистр запросов прерываний - связан с внешними входами запросов (IRQ0 – IRQ7); • IMR – регистр маски запросов; • ISR – Interrupt Service Register – регистр обслуживаемых запросов; • ICW1-ICW3 – Initialization Control Word – управляющее слово инициализации (приказы инициализации); • OCW1-OCW3 - Operation Control Word – операционное управляющее слово (рабочие приказы); OCW1 = IMR Кроме регистров в состав PIC входят: блок управления и схема анализа приоритетов (арбитр). Назначением блока управления является выработка внутренних и внешних сигналов управления, с помощью которых осуществляются те или иные элементарные действия (микрооперации) внутри микросхемы. Например, запись байта из внешней шины данных в один из регистров контроллера. Сигналы CAS0-CAS2 используются для реализации каскадирования микросхемы. Входной сигнал CS (Chip Select – выбор кристалла) генерируется в том случае, если на внешней шине адреса (АВ) зафиксированы адреса, относящиеся к контроллеру прерываний. Программирование контроллера осуществляется по стандартным адресам портов ввода / вывода.