Механизм прерываний

Существует 2 способа, с помощью которых шины выполняют прерывания:

- Векторный

- Опрашиваемый

При использовании векторных прерываний устройствам назначается вектор прерываний (электрический сигнал, несущий инфу об определенном номере, закрепленном за определенным устройством). Устройство запрашивает прерывание. Процессор подтверждает запрос и выполняет цикл подтверждения прерывания, в котором устройство должно себя идентифицировать. Для этого оно выставляет свой вектор прерываний, а процессор, используя этот вектор, находит соответствующий обработчик прерываний.

При использовании опрашиваемых прерываний процессор получает от устройства только инф-ю об уровне приоритета прерывания. С каждым уровнем может быть связано несколько устройств, и чтобы определить нужное, процессор вызывает все обработчики прерываний для данного типа приоритета, пока один из них не «распознает» свое прерывание.

Упорядочивание обработки прерываний достигается за счет приоритезации и маскирования

Приоретизация:

Каждому источнику прерываний назначается класс, каждому классу соответствует свой уровень приоритета.

Приоритеты могут быть:

- относительные (прерывание выбрано на обработку и обрабатывается хоть гром греми)

- абсолютные (прерывание начало обрабатываться, но при поступлении более приоритетного прерывания его обработка прекращается). Это достигается тем, что есть переменная, в которую записывается приоритет прерывания, которое сейчас обрабатывается. С ней сравнивается значение приоритета вновь поступивших прерываний.

Маскирование (собственно, оно есть и в только что описанной схеме приоретизации) – запросы на прерывания маскируются, то есть не обслуживаются. Маскирование предполагает возможность маскирования прерываний любого уровня, вне зависимости от их приоритета.

Диспетчеризация и приоритеты прерываний

Прерывания играют важную роль в работе ОС.И обработка прерываний довольно сложная задача, тк.

- они возникают асинхронно к программе

- связаны с непредвиденными переходами управления

- системные вызовы часто реализуются по прерываниям

- прерывания возникают при возникновении ошибок в программе

- сами модули ОС часто вызывают друг друга по прерываниям

- даже планировщик потоков по сути – системная процедура, вызываемая по прерываниям.

Поэтому прерываниями нужно грамотно управлять.

Этим занимается специальный программный модуль – ДИСПЕТЧЕР ПРЕРЫВАНИЙ.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: