Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
материалы_2_полуг.doc
Скачиваний:
12
Добавлен:
08.09.2019
Размер:
938.5 Кб
Скачать

5.1.5. Программное управление приоритетом

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

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

Метод порога прерывания

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

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

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

Метод маски прерывания

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

Маска прерывания - двоичный код, разряды которого поставлены в соответствие отдельным запросам или классам прерываний. Маска загружается командой программы в регистр маски. Состояние 1 в данном разряде регистра маски разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса. Таким образом можно изменять приоритеты запросов без переключения линий, по которым они поступают. Каждая прерывающая программа может устанавливать свою маску.

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

5.2. Организация системы прерываний микропроцессора х86

Микропроцессор х86 имеет простую, но достаточно универсальную систему прерываний. Каждому прерыванию поставлен в соответствие код типа. Допускается обработка до 256 типов прерываний. Прерывания могут инициироваться внешними устройствами и командами програм­мных прерываний. В некоторых случаях прерывания генерирует сам микропроцессор (рис. 12).

Рис. 12. Возможные источники прерываний

5.2.1. Аппаратные прерывания. Контроллер прерываний

Аппаратное прерывание – прерывание, выполняемое в результате запроса, поступающего от периферийного оборудования.

Контроллер прерываний – устройство, которое обрабатывает сигналы аппаратных прерываний.

В отличие от программных прерываний аппаратные всегда возникают асинхронно от выполняющейся программы. Запросы на прерывания передаются по специальным сигнальным линиям, которые называются IRQ-линиями (Interrupt Request – запрос на прерывание).

Программируемый контроллер прерываний 8259, используемый в машинах IBM AT, предназначен для обработки до 8 приоритетных уровней прерываний. Возможно каскадирование микросхем, при этом общее число уровней прерывания будет достигать 64.

В машинах IBM AT имеется 15 линий сигналов прерывания, для обслуживания которых используются ведущая и одна ведомая микросхемы. Для каскадирования используется линия IRQ2 ведущей микросхемы. Ведомой микросхеме программным методом при­сваивается код, равный номеру входа IRQ ведущей микросхемы, с которым соединен выход запроса прерывания INT ведомой микросхемы. Внутри микросхемы приоритет зависит от номера IRQ и задается программно.

Для идентификации прерываний различных устройств им присваивают номера от 0 до 15. По этим номерам процессор узна­ет, какое устройство выдает запрос на прерывание. Естественно, что при этом все будет функционировать безупречно, если с каж­дым конкретным устройством будет связано определенное преры­вание. Действует стандартное правило: каждому компоненту ПК-системы должно быть назначено свое собственное прерывание.

Исключением являются системы, которые могут работать по методу разделения прерываний. К ним относятся шина EISA, a также системы, соответствующие спецификации Plug and Play фирмы Intel. Разумеется, трудно найти программное обеспечение, которое могло бы управлять разделением прерываний, поэтому стандартное правило «каждому устройству – свое собственное прерывание» должно выполняться (рис. 13).

Рис. 13. Распределение линий сигналов прерывания в машинах IBM AT

Приоритеты прерываний распределены в следующем порядке (по убыванию приоритета):

IRQ0 - прерывание таймера;

IRQ1 - прерывание от клавиатуры;

IRQ8 - прерывание от часов реального времени;

IRQ9 - прерывание от контроллера графической платы;

IRQ10 - зарезервированная линия;

IRQ11 - зарезервированная линия;

IRQ12 - зарезервированная линия;

IRQ13 - прерывание от математического сопроцессора;

IRQ14 - прерывание от контроллера жестких дисков;

IRQ15 - прерывание от IDE-контроллера (CD-ROM);

IRQ3 - прерывание от последовательного порта COM2;

IRQ4 - прерывание от последовательного порта COM1;

IRQ5 - зарезервированная линия;

IRQ6 - прерывание от контроллера гибких дисков;

IRQ7 - прерывание от параллельного порта (от принтера).

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

Даже стандартная ПК-система с самым распространенным набором компонентов предоставляет весьма ограниченный выбор свободных прерываний. С учетом звуковой, сетевой плат и дополнительного хост-адаптера SCSI спи­сок свободных прерываний исчерпы­вается.

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