Задать вопрос
vs_convoy
@vs_convoy

Как работают прерывания?

Объясните пожалуйста на пальцах как работают прерывания программные и апаратные
  • Вопрос задан
  • 1215 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Программное - просто вызов подпрограммы, адрес которой записан в таблице векторов прерваний, только стек при этом формируется немного другим образом.
Аппаратное зависит от реализации. На x86, ЕМНИП, используется отдельный контроллер. Поступивший на него от устройства сигнал защёлкивает соответствующий триггер, процессор на определённом этапе выполнения команды проверяет состояние всех триггеров в порядке приоритета. При обнаружении сигнала берётся нужный адрес из той же таблицы прерываний и вызывается подпрограмма по этому адресу. Подпрограмма обработки прерывания перед своим завершением должна сбросить триггер, чтобы следующий поступивший сигнал снова мог его взвести.
Ответ написан
Комментировать
@dixoNich
frontend developer
Что конкретно вас интересует? Вот процессор работает, выполняет какие-то команды, опа, прерывание, значит надо обработать, останавливает работу и отдаёт управление обработчику команд, обработчик что-то выполняет и возвращает управление.

Аппаратные от программных отличаются тем, что программные вы вызываете в коде программа, а аппаратные, например, от флешки/внешнего жёсткого диска/что-то ещё.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
master2016
@master2016
Всё нормально.
Очень просто. Вот представьте, вы процессор, сидите дома, занимаетесь своими делами. Вдруг, бац! прерывание - вам звонит классная руководительша вашего сына и просит завтра зайти к директору школы. Приходится ставить эту задачу в очередь на выполнение :-)
Ответ написан
Комментировать
@AmikoYuki
Откройте для себя Wikipedia.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы