Таблица векторов прерываний | Гаджетус

Таблица векторов прерываний

Запросы на прерывания

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

Было бы ужасно, если бы компьютер постоянно ожидал то или иное событие и лишь при его появлении начинал свою работу. Представьте себе, что вы пользуетесь старинным телефоном без звонка и ждете, когда ваш собеседник подойдет к своему аппарату. Если он далеко, вы будете вынуждены бесцельно проводить время у своего аппарата до появления долгожданного события — «Алло?» в трубке. Индикатор событий — звонок избавляет вас от столь непродуктивного занятия. Теперь вы можете делать любую работу и прервать ее для разговора со своим собеседником только при появлении звонка.

Так же работает ваш компьютер. Но вместо звонка он использует механизм прерываний, который аппаратно реализован специальной микросхемой — контроллером прерываний. Как уже отмечалось, происходит периодический опрос, клавиатуры и других узлов компьютера на предмет выявления событий в среднем 50 раз в секунду. Если событий не происходит, компьютер спокойно продолжает свою работу — считает все что нужно по введенной в него прикладной программе. Если событие произошло, то компьютер приостанавливает работу и обращается к таблице векторов прерываний, которая расположена начиная с нулевого адреса.

Таблица прерываний IRQ (InteRrupt reQuest) состоит из сдвоенных двухбайтовых ячеек, в которых содержатся сегменты и смещения 16-разрядных адресов подпрограмм BIOS, ведущих обработку прерываний. Эти подпрограммы выполняют действия, адекватные событиям — например, если не хватило памяти, то работа ПК прекращается и на экран дисплея выводится сообщение об ошибке — нехватке памяти. В некоторых случаях используются обработчики ошибок, которые могут устранить причину ошибки и автоматически продолжить выполнение программы.

Все запросы на прерывания могут быть заблокированы программными средствами. Говорят, что они «маскированы». Но есть одно прерывание с названием немаскируемое или NMI (Non-Maskable Interrupt), которое нельзя замаскировать. Оно указывает на аппаратные ошибки при работе с памятью. Запросы на прерывания имеют определенный приоритет — в порядке убывания старшинства. Наибольший приоритет имеет NMI. Каждое прерывание характеризуется своим номером и адресом подпрограммы обработки прерывания.