Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_PU.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

12. Особенности контроллера прерываний, организация запросов, адресное пространство контроллера.

Контроллер прерываний позволяет маскировать отдельные входы запросов и организовывать систему приоритетов запросов от различных входов. В машинах класса AT применяется каскадное со­единение двух контроллеров. При этом поддерживается вложенность приоритетов.

Контроллеры расположены по адресам 20-21h (8259A#1) и A0-Alh (8259A#2), обращаться к ним следует как к однобайтным портам ввода-вывода.

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

Контроллер прерываний формирует общий запрос маскиру­емого прерывания для процессора, а когда процессор подтверждает этот запрос, контроллер сообщает процессору вектор прерывания, по которому выбирается программная процедура обработки прерываний.

Для запросов прерывания с шины PCI используются 4 линии запросов прерыва­ния, которые обозначают как INTR А, В, С, D. Эти линии работают по низкому уров­ню, что дает возможность их разделения (совместного использования).

13. Алгоритм контроллера прерываний.

После ини­циализации (процедурой POST и при загрузке ОС) все неиспользуемые входы контроллеров замаскированы (на запросы прерываний реагировать не будут), а их векторы прерываний указывают на «заглушку» — процедуру с единственной инструкцией IRET. Первым делом программа должна загрузить в память свой об­работчик и подставить указатель на его начало в соответствующее место таблицы прерываний. Далее следует размаскировать вход, для чего выполняется чтение регистра маски, обнуление соответствующего бита и запись в регистр нового значения маски. При работе с контроллером прерываний от программы требуется лишь управление маской своего запроса (при инициализации программы нужно обнулить маску требуемого запроса) и корректное завершение обработки прерываний. Каждая процедура обработки аппаратного прерывания должна завершаться командой EOI (End Of Interruption).

По возникновении события, требующего реакции, адаптер (контроллер) устройства формирует запрос прерывания, который поступает на вход контрол­лера прерываний. Контроллер прерываний формирует общий запрос маскиру­емого прерывания для процессора, а когда процессор подтверждает этот запрос, контроллер сообщает процессору вектор прерывания, по которому выбирается программная процедура обработки прерываний. Процедура должна выполнить действия по обслуживанию данного устройства, включая сброс его запроса для обеспечения возможности реакции на следующие события и посылку команды завершения в контроллер прерываний. Вызывая процедуру обработки, процессор автоматически сохраняет в стеке значение всех флагов и сбрасывает флаг IF, что запрещает маскируемые прерывания. При возврате из процедуры (по инструкции I RET) процессор восстанавливает сохраненные флаги, в том числе и установленный IF, что снова разрешает прерывания. Если во время работы обработчика прерыва­ний требуется реакция на иные прерывания (более приоритетные), то в обработ­чике должна присутствовать инструкция STI. Особенно это касается длинных об­работчиков; здесь инструкция STI должна вводиться как можно раньше, сразу после критической (не допускающей прерываний) секции. Следующие прерывания того же или более низкого уровня приоритета контроллер прерываний будет обслужи­вать только после получения команды завершения прерывания ЕОI (End Of Interrupt).