Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АСВТ.doc
Скачиваний:
35
Добавлен:
20.04.2019
Размер:
5.09 Mб
Скачать

Характеристики систем прерывания

Эффективность систем прерывания ЭВМ может оцениваться по весьма многочисленным характеристикам, которые отражают особенности их технической реализации. Однако для изучения общих принципов построения систем прерывания достаточно рассмотреть только самые обобщенные. К их числу относятся следующие характеристики.

  • Общее количество запросов прерывания

Количество запросов прерывания (источников запросов прерывания – ИЗП) существенно различается у ЭВМ различных типов и может достигать десятков. В системах прерывания радиальной структуры это понятие может совпадать с понятием количества входов в систему прерывания. При цепочечной организации системы прерывания эти понятия не совпадают.

  • Время реакции

Время реакции определяется как временной интервал между появлением запроса прерывания и началом выполнения прерывающей программы.

На рис. 6.2 приведена упрощенная временная диаграмма процесса прерывания в предположении, что управление запоминанием и возвратом возложено на сам обработчик. В этом случае он состоит из трех частей – подготовительной и заключительной, обеспечивающих переключение программ, и собственно прерывающей программы, выполняющей затребованные запросом операции. Кроме того, предполагается, что запрос представлен уровнем потенциала.

Для одного и того же запроса задержка в исполнении прерывающей программы (обработчика данного запроса) зависит от того, сколько запросов со старшим приоритетом ожидает обслуживания, поэтому время реакции определяется для запроса с наивысшим приоритетом. На рис. 6.2 оно обозначено tp.

  • Задержка прерывания (издержка прерывания)

Задержка прерывания (tзад) определяется суммарным временем на запоминание (tз) и восстановление (tв) программы (см. рис. 6.2):

.

  • Глубина прерывания

Глубина прерывания определяет максимальное число программ, которые могут прерывать друг друга. Если после перехода от основной программы к прерывающей обслуживание остальных запросов запрещено, то считается, что система имеет глубину прерывания, равную 1. Глубина равна n, если допускается последовательное прерывание до n программ. Глубина прерывания обычно совпадает с числом уровней приоритетов в системе прерывания. Если глубина прерывания не равна 1, то упрощенно это можно изобразить диаграммой (рис. 6.3). Здесь имеется в виду, что приоритет прерываний возрастает у каждого следующего запроса. Системы с большим значением глубины прерывания обеспечивают более быструю реакцию на срочные запросы.

  • Насыщение системы прерывания

Если запрос окажется не обслуженным к моменту прихода нового запроса от того же источника (т.е. того же приоритета), то возникает явление, называемое насыщением системы прерывания. В этом случае часть запросов прерывания будет утрачена, что для нормальной работы ЭВМ недопустимо. Поэтому быстродействие ЭВМ, характеристики системы прерывания и частоты возникающих запросов должны быть строго согласованы, чтобы насыщение было невозможно.

  • Допустимые моменты прерывания программ

В большинстве случаев прерывания допускаются после выполнения любой текущей команды, когда время реакции на прерывание определяется, в основном, длительностью выполнения одной команды.

При работе ЭВМ с быстрыми технологическими процессами в реальном масштабе времени (т.е. в контурах управления реальных физических процессов) это время может оказаться недопустимо большим. Кроме того, существуют задачи, при выполнении которых требуется немедленная реакция на ошибку, обнаруженную, например, аппаратурой контроля, чтобы не допустить выполнения ошибочно сформированного кода команды. Такие ситуации характерны для управляющих ЭВМ военного назначения.

В этом случае в системе прерывания реализуется возможность прерывания после любого такта выполнения команды программы. Однако это требует запоминания, а потом восстановления гораздо большего объема информации, чем в случае прерывания после окончания команды, поэтому такая организация прерываний возможна только в ЭВМ с быстродействующей сверхоперативной памятью достаточного объема.

  • Число уровней прерываний

Уже отмечалось, что в ЭВМ число различных источников запросов (причин) прерывания может достигать десятков и даже сотен. Однако в ряде случаев многие запросы поступают от групп однотипных устройств, для обслуживания которых требуется одна и та же прерывающая программа (обработчик). Запросы от однотипных устройств целесообразно объединить в группы, каждой из которых будет соответствовать свой сигнал запроса прерывания.

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

Технически такое объединение может быть реализовано по-разному. На рис. 6.4 приведен возможный вариант решения этой задачи при условии, что все поступающие запросы фиксируются в разрядах регистра запросов прерывания (РгЗП).

Запросы от всех источников поступают в РгЗП, устанавливая соответствующие его разряды (флажки) в состояние 1, указывающее на наличие запроса прерывания. Запросы классов прерывания ЗПК1-ЗПКk формируют элементы ИЛИ, объединяющие разряды РгЗП, относящиеся к соответствующим уровням. Еще одна схема ИЛИ формирует ОСП, поступающий в УУ процессора. Он формируется при любом запросе (поднятом флажке) прерывания.

Информация о действительной причине прерывания (конкретном источнике запроса), породившей запрос данного класса, содержится в коде прерывания, который отражает состояние разрядов РгЗП, относящихся к данному классу прерываний. В процессе обработки прерывания эти разряды (содержащийся в них код) подвергаются анализу. Такое объединение прерываний в классы уменьшает объем аппаратуры, но замедляет работу системы прерывания. После передачи управления прерывающей программе соответствующий триггер РгЗП сбрасывается.

Прерывания: семейство процессоров Intel 80x86 и MS-DOS

Семейство микропроцессоров Intel 80x86 поддерживает 256 уровней приоритетных прерываний, вызываемых событиями трех типов:

  • внутренние аппаратные прерывания

  • внешние аппаратные прерывания

  • программные прерывания

Внутренние аппаратные прерывания, иногда называемые отказами (faults), генерируются определенными событиями, возникающими в процессе выполнения программы, например попыткой деления на нуль. Закрепление за такими событиями опреденных номеров прерываний зашито в процессоре и не может быть изменено.

Внешние аппаратные прерывания инициируются контроллерами периферийного оборудования или сопроцессорами (например, 8087/80287). Источники сигналов прерываний подключаются либо к выводу немаскируемых прерываний процессора (NMI) либо к выводу маскируемых прерываний (INTR). Линия NMI обычно предназначает для прерываний, вызываемых катастрофическими событиями, такими, как ошибки четности памяти или авария питания.

Вместо непосредственного подключения к ЦП прерывания от внешних устройств могут поступать в процессор через специальное устройство - программируемый контроллер прерываний (РIС) 8259А. ЦП управляет контроллером через набор портов ввода-вывода, а контроллер в свою очередь сигнализирует процессору через вывод INTR. РIС предоставляет возможность программно разрешать и запрещать прерывания от конкретных устройств, а также назначать им приоритеты.

Изготовители компьютерных систем так же, как и изготовители периферийного оборудования, назначают внешним устройствам определенные уровни контроллера прерываний 8259A. Эти назначения выполняются в виде физических электрических соединений и не могут быть изменены программным образом.

Программные прерывания. Любая программа может инициировать синхронное программное прерывание просто путем выполнения команды INT. MS-DOS использует для взаимодействия со своими модулями и прикладными программами прерывания от 20Н до 3FH. (Например, доступ к диспетчеру функций MS-DOS осуществляется выполнением Int 21Н.) Программы BIOS, хранящиеся в ПЗУ, и прикладные программы IBM PC используют другие прерывания, с большими или меньшими номерами. Это распределение номеров прерываний условно и никаким образом не закреплено аппаратно.

Таблица векторов прерываний.

Нижние (с меньшими адресами) 1024 байт системной памяти носят название таблицы векторов прерываний (рис. 1.10). Каждый 4-байтный элемент таблицы соответствует типу прерывания (от 0 до 0FFH) и содержит сегмент и относительный адрес обработчика прерывания данного уровня. Прерывания от 0 до 1FH (самые нижние уровни) используются как прерывания внутренней аппаратуры; MS-DOS использует прерывания от 20Н до 3FH, все остальные прерывания могут использоваться внешней аппаратурой, системными драйверами и прикладными программами.

Если контроллер прерываний 8259А или другое устройство посылает в ЦП прерывание через вывод INTR, оно должно также поместить тип прерывания в виде 8-разрядного числа (от 0 до 0FFH) на системную магистраль для передачи в ЦП. Процессор, умножив это число на 4, определяет адрес используемого вектора прерывания.

Рис. 1.10 Таблица векторов прерываний

Обслуживание прерываний. ЦП, обнаружив сигнал прерывания, помещает в машинный стек слово состояния программы (определяющее различные флаги ЦП), регистр программного сегмента (CS) и указатель команд (IP) и блокирует систему прерываний. Затем ЦП с помощью 8-разрядного числа, установленного на системной магистрали прерывающим устройством, извлекает из таблицы векторов адрес обработчика и возобновляет выполнение с этого адреса.

Состояние системы в момент передачи управления обработчику прерываний совершенно не .зависит от того, было ли прерывание возбуждено внешним устройством или явилось результатом выполнения программой команды INT. Это обстоятельство удобно использовать при написании и тестировании обработчиков внешних прерываний, отладку которых можно почти полностью выполнить, возбуждая их простыми программными средствами.

Обработчики прерываний и MS-DOS. Для установки корректных обработчиков прерываний таким образом, чтобы они не вступали в конфликт с функциями операционной системы или другими обработчиками прерываний, MS-DOS предоставляет специальные средства в виде функций программного прерывания Int 21H, приведенные в таблице 1.1.

Таблица 1.1 Функции MS-DOS для работы с прерываниями

Функция

Действие

Int 21H, функция 25H

Установить вектор прерывания

Int 21H, функция 35H

Получить вектор прерывания

Int 21H, функция 31H

Завершить и оставить резидентной

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

В системе MS-DOS на функционирование обработчиков внешних аппаратных прерываний накладывается ряд весьма жестких ограничений:

  • в силу отсутствия свойства повторной входимости у версий MS-DOS обработчик аппаратных прерываний в процессе обработки прерывания не должен вызывать функции MS-DOS

  • как только обработчик получает управление, он должен немедленно разблокировать прерывания, чтобы не нарушать работу других устройств и не снижать точность системных часов

Ограничения, накладываемые на функционирование обработчиков прерываний, заменяющих стандартные обработчики MS-DOS для внутренних аппаратных прерываний или системных исключительных состояний (таких, как Ctrl-C или критическая ошибка), не столь жестки, однако программировать обработчики следует все же с большой осторожностью, чтобы не допустить разрушения системных таблиц или перевода операционной системы в неустойчивое состояние.

При составлении программы обработчика прерывания следует иметь в виду правила:

  • для модификации вектора прерывания использовать системные функции Int 21H; не записывать в таблицу прерываний непосредственно

  • если ваша программа не единственный процесс в системе, использующий данный уровень прерываний, то после выполнения собственной обработки прерывания следует вернуться в предыдущий обработчик, к которому привязан ваш

  • если ваша программа не остается резидентной в памяти, следует получить и сохранить текущее состояние вектора прерываний перед его модификацией, а по завершении программы - восстановить исходное содержимое

  • если ваша программа остается резидентной в памяти, используйте одну из функций завершения и сохранения в памяти (предпочтительно Int 21H с функцией 31H), чтобы зарезервировать для вашего обработчика требуемый объем памяти

  • если вы собираетесь обрабатывать аппаратные прерывания, следует, насколько возможно, сокращать время, в течение которого прерывания заблокированы, а также длину программы обработки прерывания

В приведенном ниже листинге содержится пример установки вектора прерывания по делению на нуль (номер прерывания 0):

mov ah, 25h

;номер функции

mov al, 0

;номер прервывания

mov dx, seg zdiv

;адрес обработчика

mov ds, dx

mov dx, offset zdiv

int 21h

;переход в MS-DOS

.

.

.

zdiv:

;обработчик прерывания int 00h

iret

;(ничего не делает)

Лекция 7. Системы ввода-вывода

Общие принципы организации ввода/вывода. Программный ввод/вывод. Ввод/вывод по прерываниям. Ввод/вывод в режиме прямого доступа к памяти. Системные и локальные шины. Устройства ввода/вывода

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]