Прерывания в IBM-совместимых РС
IBM РС может выполнять 256 различных прерываний, каждое из которых имеет свой номер (двухразрядное шестнадцатеричное число).
Все прерывания делятся на две группы: прерывания с номера 00h по номер 0Fh (16 прерываний) называются прерываниями базовой системы ввода-вывода - BIOS; прерывания с номера 10h по номер FFh называются прерываниями DOS. Прерывания DOS имеют более высокий уровень организации, чем прерывания BIOS, они строятся на использовании модулей BIOS в качестве элементов.
Прерывания BIOS – это, как правило, аппаратные прерывания. Они вырабатываются устройствами и передаются по специальным линиям – IRQ (Interrupt-Requests). Каждое устройство имеет свой номер IRQ.
Стандартное распределение прерываний BIOS приведено в таблице 3.2. Вектор – это адрес ОП, где расположен обработчик прерывания.
Номера векторов, соответствующих линиям IRQ, система приоритетов и другие параметры задаются программно при инициализации контроллеров устройств. Эти настройки сохраняются традиционно для совместимости с программным обеспечением.
Общая схема формирования запросов прерываний изображена на рис. 3.4. Для запросов прерывания с шины PCI используются 4 линии запросов прерывания: INTА, В, С, D. Эти линии работают по низкому уровню, что дает возможность их совместного (разделяемого) использования. Линии циклически сдвигаются в слотах и независимо коммутируются на доступные линии IRQx с помощью конфигурационных регистров чипсета. Линии IRQx, используемые шиной PCI, становятся недоступными для шины ISA. Распределение линий между шинами задают настройки параметров CMOS Setup, а также система РпР. В параметрах настройки «ISA» или «Legacy» подразумевают использование линий IRQx традиционными адаптерами шины ISA (статическое распределение), а «PCI/PnP» — использование адаптерами шины PCI или адаптерами РпР для шины ISA (динамическое распределение).
Каждому устройству, для работы которого требуются прерывания, должен быть назначен свой номер прерывания. Назначения номеров прерываний выполняются с двух сторон.
Во-первых, адаптер, нуждающийся в прерываниях, должен быть сконфигурирован на использование конкретной линии шины (джамперами или программно).
Во-вторых, программное обеспечение, поддерживающее данный адаптер, должно быть проинформировано о номере используемого вектора. В процессе назначения прерываний может участвовать система РnР для шин ISA и PCI, для распределения линий запросов между шинами служат специальные параметры CMOS Setup.
Прерывания DOS - это, как правило, программные прерывание. Запрос на программное прерывание формируется по команде INTn, где n–номер вызываемого прерывания.
Связь между номером прерывания и адресом основной памяти, соответствующим точке входа в обработчик прерывания, осуществляется через таблицу векторов прерываний, занимающую 1 Кбайт сегмента 0 основной памяти.
Команда INT, кроме определения адреса обработчика прерывания, выполняет следующие действия:
•сохраняет в стеке часть слова состояния процессора;
•сбрасывает флаги разрешения прерывания и трассировки;
•заносит адрес точки входа обработчика прерываний в регистры CS и IP.
Команда INT относится к парным командам, – каждый обработчик прерывания заканчивается командой IRET (возврат из прерывания).
Кроме команд INT и IRET в IBM PC, с прерываниями работают команды регистра флагов: СLI (запрещение маскируемых прерываний) и STI (отмена запрета прерывания).
.
Дата добавления: 2016-01-26; просмотров: 2307;