В реальном режиме прерывания работают довольно просто, и их обработчики могут находиться в любом месте физически адресуемой памяти (ОЗУ или ПЗУ). В таблице прерываний, начинающейся с нулевого адреса, каждый вектор прерываний представляется дальним указателем на процедуру обработки (16-байтные смещение и сегмент). Внедрение собственных обработчиков прерываний представляет собой несложную задачу, если прерывание используется монопольно одним устройством и соответствующим ему единственным модулем ПО. В реальном режиме любая программа может управлять флагом разрешения аппаратных прерываний; некорректное управление флагом может приводить к различным неприятностям - от сбоя системного времени до «зависания» компьютера.
В защищенном режиме прерывания работают гораздо сложнее. Таблица прерываний здесь содержит 8-байтные дескрипторы прерываний. Их обработчики должны быть подключены к ядру ОС, постоянно присутствующему в физической памяти. Иначе возможна ситуация, когда, например, аппаратное прерывание вызовет обработчик, выгруженный в данный момент на диск менеджером виртуальной памяти. Обработка такого прерывания будет чрезвычайно долгой (потребуется подкачка страницы). Позволять любой программе управлять флагом разрешения прерываний для многозадачных ОС нельзя из соображений общей устойчивости системы. Сам процесс обработки прерываний (и исключений) в защищенном режиме существенно отличается от прерываний реального режима, и в современных процессорах и ОС имеются средства виртуализации прерываний, о чем подробнее можно прочитать в [6,7]. Заметим, что в ОС Windows 9x каждое окно MS-DOS представляет собой отдельную виртуальную машину с собственной таблицей прерываний «реального» вида, и работа с прерываниями в ней практически не отличается от работы в «чистой» MS-DOS. Для установки обработчиков прерываний, требуемых программам защищенного режима, используются вызовы специальных сервисов ОС, и обработчик оформляется особым образом в соответствии с согла-шениями этой ОС (не так, как для MS-DOS).
