Прерывание

Прерывание

Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.[1]

В зависимости от источника возникновения сигнала прерывания делятся на:

  • асинхронные или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
  • синхронные или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;
  • программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.

Термин «ловушка» (англ. trap) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора.

Содержание

Маскирование

В зависимости от возможности запрета внешние прерывания делятся на:

  • маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов);
  • немаскируемые (англ. Non-maskable interrupt, NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.

Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться. В Windows для этого применяется механизм отложенного вызова процедур.

Приоритизация

До окончания обработки прерывания обычно устанавливается запрет на обработку этого типа прерывания, чтобы процессор не входил в цикл обработки одного прерывания. Приоритизация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание. Приоритеты могут обслуживаться как относительные и абсолютные[источник не указан 985 дней].

  • Относительное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то это прерывание будет обработано только после завершения текущей процедуры обработки прерывания.
  • Абсолютное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то текущая процедура обработки прерывания вытесняется, и процессор начинает выполнять обработку вновь поступившего более приоритетного прерывания. После завершения этой процедуры процессор возвращается к выполнению вытесненной процедуры обработки прерывания.

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

Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора.

Программное прерывание

Программное прерывание — синхронное прерывание, которое может осуществить программа с помощью специальной инструкции.

В процессорах архитектуры x86 для явного вызова синхронного прерывания имеется инструкция Int, аргументом которой является номер прерывания (от 0 до 255). В IBM PC-совместимых компьютерах обработку некоторых прерываний осуществляют подпрограммы BIOS, хранящиеся в ПЗУ, и это служит интерфейсом для доступа к сервису, предоставляемому BIOS. Также, обслуживание прерываний могут взять на себя BIOS карт расширений (например, сетевых или видеокарт), операционная система и даже обычные (прикладные) программы, которые постоянно находятся в памяти во время работы других программ (т. н. резидентные программы). В отличие от реального режима, в защищённом режиме x86-процессоров обычные программы не могут обслуживать прерывания, эта функция доступна только системному коду (операционной системе).

MS-DOS использует для взаимодействия со своими модулями и прикладными программами прерывания с номерами от 20h до 3Fh (числа даны в шестнадцатеричной системе счисления, как это принято при программировании на языке ассемблера x86). Например, доступ к основному множеству функций MS-DOS осуществляется исполнением инструкции Int 21h (при этом номер функции и её аргументы передаются в регистрах). Это распределение номеров прерываний не закреплено аппаратно и другие программы могут устанавливать свои обработчики прерываний вместо или поверх уже имеющихся обработчиков, установленных MS-DOS или другими программами, что, как правило, используется для изменения функциональности или расширения списка системных функций. Также, этой возможностью пользуются вирусы.

См. также

Примечания

  1. Погорелый С. Д., Слободанюк Т. Ф. Глава 2. Язык ассемблера для шестнадцатиразрядного микропроцессора К1810ВМ86. Подпрограммы обработки прерываний // Программное обеспечение микропроцессорных систем: Справочник. — К.: Тэхника, 1989. — С. 56. — 301 с. — ISBN 5-335-00169-0

Литература



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?
Синонимы:

Полезное


Смотреть что такое "Прерывание" в других словарях:

  • Прерывание — По ГОСТ 15971 74 Источник: ОСТ 1 00189 82: Системы бортовые цифровые вычислительные. Состав документов по алгоритмам и программам …   Словарь-справочник терминов нормативно-технической документации

  • прерывание — перебивание, приостановка, пресечение, перерывание, выключение, остановка, разрыв, перебои, прекращение, зуммирование, обрывание, разрывание, прерыв, приостанавливание, порывание. Ant. начало, возобновление Словарь русских синонимов. прерывание… …   Словарь синонимов

  • прерывание —     ПРЕРЫВАНИЕ, перебивание, перебивка, устар., разг. перерыв, разг. обрывание     ПРЕРЫВАТЬ/ПРЕРВАТЬ, перебивать/перебить, устар. перерывать/перервать, разг. обрезать/обрезать, разг. обрывать/оборвать     ПРЕРЫВАТЬСЯ, перебиваться, устар.… …   Словарь-тезаурус синонимов русской речи

  • прерывание — Операция процессора, состоящая в регистрации предшествующего прерыванию состояния процессора и установлении нового состояния. Примечание Прерывание является реакцией процессора на некоторые условия, возникшие в процессоре или вне его [ГОСТ 15971… …   Справочник технического переводчика

  • ПРЕРЫВАНИЕ — приостановка исполнения программы ЭВМ, вызванная наступлением события, возможность которого предусмотрена, но момент наступления заранее не известен. Прерывания организует операционная система ЭВМ, в задачу которой входит правильное определение… …   Большая политехническая энциклопедия

  • прерывание — (не) выдержать характера • прерывание, демонстрация (не) оставляет чувство • действие, субъект, прерывание (не) оставлять надежды • действие, прерывание (не) терять достоинства • обладание, прерывание (не) терять надежды • действие, прерывание… …   Глагольной сочетаемости непредметных имён

  • прерывание — nutraukimas statusas T sritis automatika atitikmenys: angl. break; breaking; interruption vok. Abreißen, n; Abschaltung, f; Auslösen, n; Ausschaltung, f; Unterbrechung, f rus. обрыв, m; прекращение, n; прерывание, n; размыкание, n; разрыв, m… …   Automatikos terminų žodynas

  • прерывание — pertrauktis statusas T sritis automatika atitikmenys: angl. break; interrupt; interruption vok. Interrupt, m; Unterbrechen, n rus. прерывание, n pranc. interruption, f …   Automatikos terminų žodynas

  • прерывание — pertraukimas statusas T sritis radioelektronika atitikmenys: angl. break; interruption vok. Unterbrechung, f rus. прерывание, n pranc. interruption, f …   Radioelektronikos terminų žodynas

  • прерывание ввода-вывода — прерывание от периферийного устройства — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом Синонимы прерывание от периферийного устройства EN peripheral… …   Справочник технического переводчика


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»