Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интерфейсы_Шпоры.docx
Скачиваний:
4
Добавлен:
25.09.2019
Размер:
213.2 Кб
Скачать

6. Обработка прерываний

Прерывания обеспечивают реакцию процессора на события происх асинхронно по отношению к исполняемому програмн коду. Процессоры семейства х86 поддерживают таблицу векторов прерывания, содержащую определение до 256 процедур прерываний. Различают 4 источника прерываний: 1.внутреннее прерывание процнссора и сопроцессора 2. немаскируемые внешние прерывания 3. маскируемые внешние прерывания. 4. программные прерывания.

Программные прерывания в прямом смысле программными прерыв не явл. Они представл собой специф способ вызова процедур. Это вызов не по адресу а по вектору прерывания. Фактически прогр прерыван это коды момент их возникновения строго привязан к тесту программы. Условие возникновения прерываний проверяются процессором на границе выполнения инструкций. В этом случае необх запомнит минимум информац для возврата в основную процед. Обработка прерываний начинается с сохранения в стеке слова состояния в которое входит регистр флага, регистр кодового сегмента и указатель следующей инструкции. После этого проц сбрасывает флаг разрешения прерываний по завершении обработки прерывания происходит автоматически восстановление слова состояния. После этого проц переходит к выполнению инструкции следующей за той после которой исполнялась обработка прерывания. Умышленное или случайное изменение указателя стека или самого стека во время обработки прерыв может привести к возврату процессора по другому адресу и даже к зависанию. Прерывание может быть вложенным если процедура обработки прерывания установит флаг прерывания в регистр флагов. В таких случаях может возникнуть опасность переполнения стека, поскольку каждое вложение использует стек для сохранения данных. Переполнение стека также может быть причиной зависания. Длинные процедуры обработки прерываний со сброшенным флагом разрешения прерываний могут привести к потери системного времени, поскольку часы ос используют аппаратное прерыв от таймера. Независимые прерывания обработ проц без анализа флага состояния к таким прерываниям относятся прерывания приходящиеся по входу процессора NMI вход немаскируемых прерыв а для процессоров, поддерживающих режим системного управления еще и по линии smi. Если во время исполнения немаскируемого прерывания приходит еще один сигнал NMI то вложенного прерывания не будет, тк повторный вызов программы обработ прерывания не производится. Прерыв SMI возникает от схемы чипсета участвующих в управлении энергопотреблением, это прерыв имеет наивысший приоритет и обраб неск иначе чем классич прерыв.

В этом случае ну вызывается подпрограмма обработки прерыв и процедур не польз стеком. Обработка маскируемых прерваний может запрещаться командой DI или разрешаться командой EI. Эти прерывания обрабатываются контроллером прерыв программно совместимым с контроллером прерыв первых IBM совместимых машин. Такой контролер имеет 8 входов запросов прерываний и один выход по которому сигнал запроса прерыв подается на проц.

При обработке прерывания процессор формирует мнимый сигнал подтверждения прерывания INTA на который контроллер выдает 8 ми битный вектор прерывания, этот вектор и явл номером по которому вызывается соотвтетств проц-ра обработки прерыв. С целью увеличенрия кол-ва вх проц вводится каскадное включ контроллеров прерыв эля этого ко вх IRQ2 ведущего контроллера подключ ведомый контрол который обслуж прерывания с IRQ8..IRQ15. на входы контроллеров прерывания поступают запросы от системн устройств 1 клава сист таймер. CMOS – тайм и сопроц, а также сигналы от плат расширения. Традиционно все линии запросов сист утср выводятся на слоты шины ISA или EISA. Номера векторов соответств линиям запроса контроллера, система приоритетов и некоторые др параметры задаются программно но при инициализ перехъодят из поколения в поколение ПК с целью совместимости с ПО. Назначение номеров прерываний выполняются с двух сторон . во первых адаптер, нуждающийся в использовании прерывания должен быть сконфигурирован на использование конкретной линии запроса прерыв. Во вторых ПО поддерживающее данный адаптер должно быть информировано о потере используемого вектора.

Поскольку линий запроса прерываний в компьютере насыщенном дополнит адаптерами обычно не хватает, возникает желание использовать эти линии разделяемо между неск адаптерами. обработка одного устройства в этом случае определив, что источник прерывания не его, должен вызвать обработчик другого устройства., конкурирующ на линии прерывания. Однако на шине ISA прерыв обрабатываются по положительному фронту, что не позволяет подключать параллельно к одной шине запроса прер несколько выходов с открытым коллектором. Плохо это и с точки зрения помехоуст. Для запросов прерывания по шине PCI используется 4 линии запросов прерывания: INTR A, INTR B, INTR C, INTR D. Линии циклически сдвиг на слотах и независимо коммутируются на доступные линии. IRQ с помощью конфигурационных регисторов чипсета. Линии IRQ используемые шиной PCI становятся недоступными для шины ISA. Распределение линий между шинами выполняются настройками BIOS а также системой PnP. В установках BIOS которые озаглавлены ISA или LEGAСY произв статич распределение входов запросов прерываний между традиционн адаптерами шины ISA, а в разделе PCI/PnP производится распределение линий запросов прерыв между адаптерами шины PCI или адаптерами использ технологию PnP на шине ISA . и такое распределение происходит динамически. Современные чипсеты могут иметь и другие настройки по совместимости с первыми контроллерами прерыв