Одним из распространенных способов организации системы прерывания являетсявекторное приоритетное прерывание. Этот способ реализуется с помощью дополнительныхаппаратных средств в виде интерфейсных БИС и называются контроллерами прерываний. Система прерывания при такой организации имеет несколько уровней прерываний (линийзапросов прерываний) к которым могут подключаться различные устройства, причемкаждый уровень имеет свой вектор прерывания. Для реализации векторного приоритетного прерывания необходимо распределитьприоритеты между уровнями и обеспечить механизм взаимодействия подпрограммобслуживания прерывания соответствующих уровней. Распределение приоритетов между уровнями могут реализовываться различнымиспособами. Одним из этих способов является векторное прерывание с фиксированнымприоритетом. Каждому уровню (входу) запросов прерывания присваивается фиксированныйприоритет в порядке возрастания. Запрос с более высоким приоритетом прерываетобслуживание прерывания с меньшим приоритетом. Вторым способом является векторное прерывание с циклическим приоритетом.Каждому входу, как и в предыдущем случае, присваивается фиксированный приоритет.После запроса прерывания и выполнения соответствующей подпрограммы обслуживанияприоритеты изменяются в круговом порядке таким образом, что последний обслуженныйвход будет иметь низший приоритет. Этот способ характерен для таких применений, в которых ПУ имеют одинаковыйприоритет и ни одному из них нельзя отдать предпочтения. Реализация векторного прерывания с адресуемым приоритетом аналогична второмуспособу, но допускает программное определение уровня запросов прерывания, которомуназначается низший приоритет. Запрещение прерывания на время обслуживания любого ПУ может привести к потерезапросов прерываний высокоприоритетных устройств, появляющихся при обслуживанииустройств с меньшими приоритетами. Для исключения такой ситуации возникаетнеобходимость использования механизма вложения прерываний, который позволитобеспечить взаимодействие подпрограмм обслуживания соответствующих уровней междусобой. Прерывание подпрограмм обслуживания прерываний называется вложеннымпрерыванием. На рис.3.6. показан процесс вложения прерываний. В момент t1 запрашивает обслуживание устройство ПУ4 и микропроцессор переходитна его подпрограмму обслуживания. В свою очередь, эта подпрограмма прерывается вмомент времени t2 запросом ПУ3 с более высоким приоритетом. Подпрограммаобслуживания ПУ3 в момент времени t3 прерывается запросом ПУ2 с еще более высокимприоритетом, и по завершении обслуживания ПУ2 в момент времени t4 управлениевозвращается к продолжению обслуживания ПУ3. В интервале t5-t6 аналогичным образомобслуживается запрос ПУ1 с максимальным приоритетом, после чего управлениепоследовательно возвращается к прерванным подпрограммам обслуживания ПУ3 и ПУ4.Наконец, в момент t8 возобновляется выполнение основной программы. Для того, чтобы процессор реагировал на запросы прерываний в начале каждой подпрограммы обслуживанияих необходимо разрешать командой EI. Для организации вложенных прерываний в каждой подпрограмме обслуживанияпрерываний необходимо выполнить следующие действия: - разрешить прерывание; - временно запомнить приоритет прерванной программы; - загрузить в схему приоритетных прерываний новый текущий приоритет; - собственно обслужить прерывание; - восстановить прежний приоритет; - возобновить прерванную программу с помощью команды RTI.