Найти в Дзене
AnyMobdev

Когда компьютер говорит: "Стоп, это срочно!" или Зачем нам нужен Неудержимый Перерыв

Когда компьютер говорит: "Стоп, это срочно!" или Зачем нам нужен Неудержимый Перерыв Ладно,
давай я тебе объясню одну забавную штуку, которая происходит внутри
твоего компьютера, когда он вдруг решает, что всё, хватит, нужно срочно
вмешаться. Это как если бы ты сидел на скучном совещании, а тут вдруг
объявляют пожарную тревогу. Все остальные прерывания, это как записка от
коллеги, которая просит тебя выйти на секунду поговорить. Ты можешь её
прочитать, а можешь и подождать. Но когда срабатывает НМИ, то есть
Немаскируемое Прерывание, это уже не записка, а вот та самая сирена. И
тут уж извини, но ты просто обязан всё бросить и бежать.
Собственно,
NMI, это сигнал, который приходит к центральному процессору напрямую,
минуя все остальные очереди и разрешения. Обычные прерывания, их еще
называют маскируемыми, можно временно "отключить". Например, когда
процессор занят какой-то очень важной операцией, которую нельзя
прерывать. Он просто говорит всем остальным: "Подождите, я за


Когда компьютер говорит: "Стоп, это срочно!" или Зачем нам нужен Неудержимый Перерыв
Когда компьютер говорит: "Стоп, это срочно!" или Зачем нам нужен Неудержимый Перерыв

Ладно,
давай я тебе объясню одну забавную штуку, которая происходит внутри
твоего компьютера, когда он вдруг решает, что всё, хватит, нужно срочно
вмешаться. Это как если бы ты сидел на скучном совещании, а тут вдруг
объявляют пожарную тревогу. Все остальные прерывания, это как записка от
коллеги, которая просит тебя выйти на секунду поговорить. Ты можешь её
прочитать, а можешь и подождать. Но когда срабатывает НМИ, то есть
Немаскируемое Прерывание, это уже не записка, а вот та самая сирена. И
тут уж извини, но ты просто обязан всё бросить и бежать.

Собственно,
NMI, это сигнал, который приходит к центральному процессору напрямую,
минуя все остальные очереди и разрешения. Обычные прерывания, их еще
называют маскируемыми, можно временно "отключить". Например, когда
процессор занят какой-то очень важной операцией, которую нельзя
прерывать. Он просто говорит всем остальным: "Подождите, я занят", и
продолжает работать. Но НМИ не подчиняется этому правилу. У него, как у
пожарной сигнализации, есть только одна команда: "Реагировать
немедленно".

Теперь давай разберемся, что же такого страшного
должно произойти, чтобы НМИ объявил всеобщую мобилизацию. Обычно это
какая-то критическая ошибка, связанная с самим "железом". Например,
вдруг перестала работать оперативная память, или, что еще хуже,
произошла какая-то проблема с шиной, по которой данные движутся внутри
компьютера. Это как если бы у тебя вдруг отключился свет посреди
операции. Если бы процессор просто проигнорировал это событие, то всё,
что он делал, могло бы привести к полному краху системы или, еще хуже, к
повреждению данных. Представь, что он пишет какой-то важный файл, а тут
бац, память дала сбой. Если он об этом не узнает, он может записать
полную ерунду, и файл будет испорчен. NMI, это как раз тот самый
"охранник", который тут же сообщает процессору: "Тревога! Сбой в
памяти!"

И что же делает процессор, когда получает такой сигнал?
Он тут же прекращает всё, чем занимался, и переходит к выполнению
специальной процедуры. Он не может просто "подумать" или "подождать". В
зависимости от типа ошибки, это может быть что угодно. Например, он
может записать все данные об ошибке в какой-нибудь журнал, чтобы потом
можно было разобраться, что именно пошло не так. А потом... ну, потом
он, скорее всего, просто "упадёт", то есть выведет на экран то самое
страшное сообщение об ошибке, которое ты можешь видеть на экране, или
просто перезагрузится. Он не может больше работать в таком состоянии,
ведь основа его работы, это исправное "железо". А раз оно сломалось, то и
работать он уже не может.

В общем, НМИ, это своего рода
последний рубеж обороны. Он защищает твою систему от совсем уж
катастрофических сбоев. Конечно, тебе бы не хотелось, чтобы он
срабатывал каждый день, потому что это означает, что с твоим "железом"
что-то не так, и тебе нужно обратиться к специалисту, чтобы он это
починил. Но если уж он сработает, ты можешь быть уверен, что он делает
это не просто так, а потому что ситуация действительно того требует. Это
не какой-то глюк в программе, это серьезный аппаратный сбой, который не
должен быть проигнорирован. Вот так вот, даже у компьютеров есть свои
"аварийные кнопки".