Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции ПУ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.19 Mб
Скачать

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

Прерывания обеспечивают реакцию процессора на события происх асинхронно по отношению к исполняемому програмн коду. Процессоры семейства х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 . и такое распределение происходит динамически. Современные чипсеты могут иметь и другие настройки по совместимости с первыми контроллерами прерыв