LINUX.ORG.RU

Линукс и прерывания, прерывания по фронту и по уровню

 , , ,


0

2

Хотя линукс не при чём, вопрос скорее по части архитектуры компуктеров в целом. Вот есть некий SoC с процессором и контроллером прерываний, есть другой внешний девайс, который выставляет свой пин в 1 при наступлении некоторого события и сбрасывает его в 0 после чтения соответствующего регистра в нём. Правильно я понимаю, что если прерывание будет срабатывать по уровню 1, а не по нарастающему фронту, то обработчик прерывания может вызываться много раз, пока тот девайс физически не сбросит свой пин в 0? Что может занять некоторое время после чтения регистра. И чем быстрее выполняется обработчик прерываний, тем больше прерываний увидит ОС? Является ли это дефолтным ожидаемым поведением в большинстве случаев?

★★★★★

Правильно я понимаю, что если прерывание будет срабатывать по уровню 1, а не по нарастающему фронту, то обработчик прерывания может вызываться много раз, пока тот девайс физически не сбросит свой пин в 0?

Да.

И чем быстрее выполняется обработчик прерываний, тем больше прерываний увидит ОС?

Если устройство настолько медленное - да.

Является ли это дефолтным ожидаемым поведением в большинстве случаев?

Это единственно возможное поведение при level-triggered.

tailgunner ★★★★★ ()

Что-то экзотика ненужная, обычно в обработчике сбрасывается бит в устройстве,ну или несколько, и бит в контроллере прерываний, если прерывание обработано, только тогда повторное прерывание возможно. Смысл влетать несколько раз.

ilovewindows ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.