Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

I. Система прерываний программ в ПК

Читайте также:
  1. D. Программы использования
  2. I «Волевые* метапрограммы_________________________ 161
  3. I. РАБОЧАЯ ПРОГРАММА
  4. I. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ
  5. II. Модульное структурирование содержания образовательной программы
  6. II. Система зажигания

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

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

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

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

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

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

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

- запоминает в стековой памяти текущее состояние прерываемой программы (со­стояние некоторых регистров МПП, в частности регистров FL, CS, IP, а в мик­ропроцессорах МП80286 и выше — и слова состояния программы, хранящего­ся в других регистрах МПП);

- посылает источнику запроса на прерывание запрос о причине (коде) прерывания;

- анализирует код запрошенного прерывания (номер прерывания — Ni) и форми­рует адрес ячейки (Л V), хранящей вектор прерывания (вектор-адрес программы обработки прерывания) по формуле: A V = 4 • Ni (векторы прерываний занимают начальную 1-килобайтную область ОП с адресами ячеек от 00000 до 00400Н (шестнадцатеричный код) так, что адрес вектора вычисляется простым умножением номера прерывания на четыре, так как CS и IP занимают по 2 байт каждый);


- считывает из ОП и записывает в регистры МПП (в регистры FL, CS, IP и т. д.) вектор прерывания и его атрибуты;

- гасит (устанавливает в 0) флаги прерывания (IF) и трассировки (TF);

- выполняет программу обработки прерывания (которую иногда называют драй­вером прерывания);

- после выполнения программы обработки прерывания возвращает из стековой памяти параметры прерванной программы в регистры МПП и восстанавливает процесс выполнения прерванной программы.

Видов (номеров) прерывания может быть всего 256, и, соответственно, векторов прерывания (адресов CS:IP программ обработки прерываний) в ОП может нахо­диться до 256. Классификация видов прерываний показана на рис. 9.2.

Рис. 9.2. Классификация видов прерываний в МП

Прикладные прерывания временно устанавливаются пользователем при многопро­граммной работе МП для указания приоритета выполнения прикладных программ

(при появлении необходимости выполнения более приоритетной программы те­кущая менее приоритетная программа прерывается).

Псевдопрерывания используются для запоминания важных фиксированных адре­сов, которые могут быть использованы в программах, в частности, при условных и безусловных передачах управления (запоминание адресов передачи управления как векторов прерывания возможно благодаря аналогии выполнения прерывания и обращения к процедурам).

Аппаратные прерывания инициируются при обращениях к МП со стороны вне­шних устройств (таймера, клавиатуры, дисководов, принтера и т. д.) с требовани­ем уделить им внимание и выполнить совместно с ними те или иные процедуры. Прерывания от таймера, например, повторяются 18 раз в каждую секунду, от кла­виатуры — при каждом программно не запланированном нажатии некоторых кла­виш и т. п. Аппаратные прерывания не координируются с работой программы и могут быть весьма разнообразны. Для их систематизации и определения очеред­ности выполнения при одновременном возникновении нескольких из них обычно используется контроллер прерываний.

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

- базовой системы ввода-вывода — прерывания BIOS;

- операционной системы — прерывания DOS.

Программы обработки прерываний DOS, в отличие от программ обработки пре­рываний BIOS, не встроены в ПЗУ и для разных операционных систем могут быть разными. К программным прерываниям можно отнести также прерывания при пошаговом исполнении программы, при работе с контрольным остановом и т. д.

Технические прерывания (или, иначе, прерывания от схем контроля) возникают при появлении отказов и сбоев в работе технических средств (аппаратуре) ПК. Большинство технических прерываний не маскируются, то есть они разрешаются всегда, а некоторые из

 

 

них относятся к категории «аварийных» (например, отклю­чение питания), и при их возникновении даже не запрашивается причина преры­вания, а просто, по возможности, спасаются важные промежуточные результаты -записываются в безопасное место, в НЖМД, например.

Логические прерывания возникают при появлении ошибок в выполняемых програм­мах (деление на 0, потеря значности мантиссы, нарушение защиты памяти и т. п.). Многие из логических прерываний также относятся к категории немаскируемых.

Прерывания обслуживаются базовой системой ввода-вывода — модулем расши­рения BIOS и модулем обработки прерываний DOS. BIOS и блок расширения BIOS имеют дело в основном с не планируемыми техническими и логическими преры­ваниями, пользовательскими прикладными прерываниями, а также со многими планируемыми прерываниями, обслуживающими систему ввода-вывода, детализированными и не очень детализированными (прерывания, обслуживаемые BIOS, часто называют прерываниями нижнего уровня).

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

Следует сказать, что использование прерываний BIOS позволяет, как правило, более детализировано выполнить обращения к различным системным ресурсам ПК, к элементам информационных структур и их атрибутам. Однако прерывания DOS более просты в использовании при программировании. Поэтому начинаю­щим программистам можно рекомендовать использование прерываний DOS, осо­бенно расширенных функций DOS для работы с файлами. Схема организации приема запросов на прерывания показана на рис.
9.3.

Рис. 9.3. Организация приема запросов на прерывания

Для приема внешних прерываний имеются порты двух типов: NMI (None Masked Interrupt) — для приема немаскируемых прерываний и INTR (Interrupt) — для при­ема прочих прерываний (INTR обычно используется для подсоединения контрол­лера прерываний). Если запрос на прерывание поступает по входу NMI, то преры­вание не маскируется (имеет абсолютный приоритет) и сразу выполняется; по входу INTR прерывание разрешается, если в регистре флагов МПП флаг IF = 1.

 

Всего предусмотрено 256 типов (0-255) прерываний. Из них только первые 5 же­стко закреплены в МП, остальные используются системами 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 (21Н) — это комплекс­ное, чаще всего используемое в программах пользователя прерывание, имеющее около 100 разновидностей
(служебных функций DOS).

В некоторых типах прерываний BIOS и DOS имеется много разновидностей, иногда более 10. Так, прерывание 10 (АН) имеет 15 разновидностей, прерывание 33 (21Н) -около 100 разновидностей: в DOS 1.0 - 47, в DOS 2.0 - 88, в DOS 3.0 и выше -99 разновидностей (вид работы в рамках каждого прерывания определяется со­держимым регистра АН).

В работе [10] приведен список прерываний нижнего и верхнего уровня, а также служебных функций DOS наиболее часто используемого программистами преры­вания 21Н.


Дата добавления: 2015-12-07; просмотров: 296 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.008 сек.)