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

АВС_Лек7_2013 / Система прерываний программ в ЭВМ

.doc
Скачиваний:
71
Добавлен:
10.05.2015
Размер:
92.67 Кб
Скачать

Система прерываний программ в ЭВМ

Важнейшая роль в реализации сложных режимов работы отводится системе пре­рывания программ.

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

Организация и управление прерываниями функционально во многом смыкается с управлением задачами. — одной из базовых функций операционных систем. Основой для управления процессом одновременного решения нескольких задач (равно как и управления прерываниями) являются процедуры:

  • выбора очередной задачи или определения приоритета задачи;

  • сохранения информации о статусе задачи при ее прерывании (формирование слова состояния программы);

  • упреждения и устранения конфликтов между задачами (координации и син­хронизации выполнения задач).

Последовательность действий процессора при реализации прерывания такова. При появлении запроса на прерывание, запланированное заранее или неожидан­ное, процессор, как правило, после завершения выполнения текущей команды программы анализирует допустимость (разрещенность и приоритетность) дан­ного вида прерывания. Если оно разрешено, Процессор производит следующие Действия:

запоминает в стековой памяти текущее состояние прерываемой программы (состояние некоторых регистров МПП, в частности, регистров 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.

Вопросы для самопроверки

  1. Дайте определения алгоритма и программы решения задачи.

  1. Сформулируйте основные необходимые свойства алгоритма и способы его записи.

  2. Назовите основные классы алгоритмических языков и разновидности транс­ляторов.

  3. Приведите и поясните типовой состав машинных команд и возможные их структуры.

  4. Рассмотрите программу расчета квадратов чисел, приведенную в учебнике, и сформулируйте основное ее функциональные особенности.

  1. Назовите виды и особенности адресации ячеек памяти в ПК.

  1. Назовите основные режимы работы компьютеров и дайте им краткую харак­теристику.

  1. Что такое прерывание работы программы и каково назначение прерываний?

9. Назовите и поясните основные виды прерываний.

  1. Как по номеру прерывания определить адрес программы его обработки?

  2. Укажите, последовательность действий машины при выполнении прерыва­ния.

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 – выбор кристалла) генерируется в том случае, если на внешней шине адреса (АВ) зафиксированы адреса, относящиеся к контроллеру прерываний. Программирование контроллера осуществляется по стандартным адресам портов ввода / вывода.