<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5</id>
	<title>Прерывание - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://camokathomelab.servebeer.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5"/>
	<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;action=history"/>
	<updated>2026-07-16T17:58:56Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://camokathomelab.servebeer.com/mediawiki/index.php?title=%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=16202&amp;oldid=prev</id>
		<title>imported&gt;Jumpow: добавлена категория &quot;Прерывания&quot;</title>
		<link rel="alternate" type="text/html" href="https://camokathomelab.servebeer.com/mediawiki/index.php?title=%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=16202&amp;oldid=prev"/>
		<updated>2026-01-14T19:59:15Z</updated>

		<summary type="html">&lt;p&gt;добавлена категория &amp;quot;Прерывания&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Прерывание&amp;#039;&amp;#039;&amp;#039; — одна из базовых концепций [[вычислительная техника|вычислительной техники]], которая заключается в том, что при наступлении какого-либо события происходит передача управления специальной процедуре, называемой [[обработчик прерывания|обработчиком прерываний]] (ISR, {{lang-en|Interrupt Service Routine}}){{sfn|Таненбаум|2018|c=452}}. В отличие от условных и безусловных переходов, прерывание может быть вызвано в любом месте программы, в том числе если выполнение программы приостановлено, и обусловлено обычно внешними по отношению к программе событиями. После выполнения необходимых действий, обработчик прерываний, как правило, возвращает управление прерванной программе{{sfn|Погорелый|1989|с=56}}.&lt;br /&gt;
&lt;br /&gt;
== Назначение ==&lt;br /&gt;
Как правило, прерывания используются для работы с периферийными устройствами. К примеру, требуется направить запрос на загрузку данных с диска в память, и пока идёт загрузка — производить какие-либо другие операции, либо остановить выполнение до получения прерывания, а после окончания загрузки перейти к обработчику прерывания, который начнёт обработку поступивших данных{{sfn|Таненбаум|2018|с=452}}. С помощью прерываний также может быть реализована [[многозадачность]], [[отладка]] программ, [[эмуляция]] определённых устройств и т.д.&lt;br /&gt;
&lt;br /&gt;
==Виды==&lt;br /&gt;
В зависимости от источника возникновения сигнала прерывания делятся на:&lt;br /&gt;
* асинхронные, или внешние (аппаратные) — события, которые исходят от внешних аппаратных устройств (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как &amp;#039;&amp;#039;запрос на прерывание&amp;#039;&amp;#039; ({{lang-en|Interrupt request, IRQ}}): устройства сообщают, что они требуют внимания со стороны ОС;&lt;br /&gt;
* синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении [[Машинный код|машинного кода]]: деление на ноль или [[переполнение стека]], обращение к недопустимым адресам памяти или недопустимый код операции;&lt;br /&gt;
* программные (частный случай внутреннего прерывания) — инициируются исполнением специальной [[Код операции|инструкции]] в коде [[компьютерная программа|программы]]. Программные прерывания, как правило, используются для обращения к функциям встроенного программного обеспечения ([[firmware]]), [[драйвер]]ов и [[операционная система|операционной системы]].&lt;br /&gt;
&lt;br /&gt;
Термин «ловушка» ({{lang-en|trap}}) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора.&lt;br /&gt;
&lt;br /&gt;
== Маскирование ==&lt;br /&gt;
Внешние прерывания, в зависимости от возможности запрета, делятся на:&lt;br /&gt;
* маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в [[x86]]-процессорах — сбросом флага &amp;lt;tt&amp;gt;IF&amp;lt;/tt&amp;gt; в [[Регистр флагов|регистре флагов]]);&lt;br /&gt;
* немаскируемые ({{lang-en|Non-maskable interrupt, NMI}}) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.&lt;br /&gt;
&lt;br /&gt;
Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы не могут обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться. В Windows для этого применяется механизм [[DPC|отложенного вызова процедур]].&lt;br /&gt;
&lt;br /&gt;
== Приоритизация ==&lt;br /&gt;
До окончания обработки прерывания обычно устанавливается запрет на обработку этого типа прерывания, чтобы процессор не входил в цикл обработки одного прерывания. Приоритизация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание{{sfn|Таненбаум|2018|с=454=456}}.&lt;br /&gt;
* Относительное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то это прерывание будет обработано только после завершения текущей процедуры обработки прерывания.&lt;br /&gt;
* Абсолютное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то текущая процедура обработки прерывания вытесняется, и процессор начинает выполнять обработку вновь поступившего более приоритетного прерывания. После завершения этой процедуры процессор возвращается к выполнению вытесненной процедуры обработки прерывания.&lt;br /&gt;
&lt;br /&gt;
== Таблица прерываний ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Вектор прерывания&amp;#039;&amp;#039;&amp;#039; — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в [[таблица векторов прерываний|таблицу векторов прерываний]], содержащую адреса обработчиков прерываний{{sfn|Таненбаум|2018|c=453}}. Местоположение таблицы зависит от типа и режима работы процессора.&lt;br /&gt;
== Прозрачность ==&lt;br /&gt;
Предполагается, что прерывание должно обеспечивать прозрачность — то есть за исключением данных, которые должны быть изменены исходя из назначения прерывания, после окончания обработки прерывания процессор должен быть возвращён в то же состояние, в котором он был в момент его вызова{{sfn|Таненбаум|2018|с=454}}. В простейшем случае достаточно сохранить состояние всех регистров процессора в стек.&lt;br /&gt;
&lt;br /&gt;
== Программное прерывание ==&lt;br /&gt;
Программное прерывание — синхронное прерывание, которое может осуществить [[Компьютерная программа|программа]] с помощью специальной инструкции.&lt;br /&gt;
&lt;br /&gt;
В процессорах архитектуры [[x86]] для явного вызова синхронного прерывания имеется [[Int (инструкция x86)|инструкция &amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;]], аргументом которой является номер прерывания (от 0 до 255). В [[IBM PC-совместимый компьютер|IBM PC-совместимых компьютерах]] обработку некоторых прерываний осуществляют подпрограммы [[BIOS]], хранящиеся в [[Постоянное запоминающее устройство|ПЗУ]], и прерывание служит интерфейсом для доступа к сервису, предоставляемому BIOS. Также обслуживание прерываний могут взять на себя BIOS карт расширений (например, [[Сетевая плата|сетевых]] или [[Видеокарта|видеокарт]]), операционная система и даже обычные (прикладные) программы, которые постоянно находятся в памяти во время работы других программ (т. н. [[Резидентная программа|резидентные программы]]). В отличие от [[Реальный режим|реального режима]], в [[защищённый режим|защищённом режиме]] x86-процессоров обычные программы не могут обслуживать прерывания, эта функция доступна только системному коду (операционной системе).&lt;br /&gt;
&lt;br /&gt;
[[MS-DOS]] использует для взаимодействия со своими модулями и прикладными программами прерывания с номерами от 20h до 3Fh (числа даны в [[Шестнадцатеричная система счисления|шестнадцатеричной системе счисления]], как это принято при программировании на [[Язык ассемблера|языке ассемблера]] x86). Например, доступ к основному множеству функций MS-DOS осуществляется исполнением инструкции &amp;lt;code&amp;gt;Int 21h&amp;lt;/code&amp;gt; (при этом номер функции и её аргументы передаются в [[Регистр процессора|регистрах]]). Это распределение номеров прерываний не закреплено аппаратно и другие программы могут устанавливать свои обработчики прерываний вместо или поверх уже имеющихся обработчиков, установленных MS-DOS или другими программами, что, как правило, используется для изменения функциональности или расширения списка системных функций. Также этой возможностью пользуются [[Компьютерный вирус|вирусы]].&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
== Литература ==&lt;br /&gt;
* {{книга&lt;br /&gt;
|часть = Глава 2. Язык ассемблера для шестнадцатиразрядного микропроцессора К1810ВМ86. Подпрограммы обработки прерываний&lt;br /&gt;
|заглавие = Программное обеспечение микропроцессорных систем: Справочник&lt;br /&gt;
|ссылка = https://archive.org/details/programmnoeobesp0000pogo&lt;br /&gt;
|автор = Погорелый С. Д., Слободанюк Т. Ф.&lt;br /&gt;
|isbn = 5-335-00169-0&lt;br /&gt;
|страниц = 301&lt;br /&gt;
|год = 1989&lt;br /&gt;
|место = {{К.}} &lt;br /&gt;
|издательство = Тэхника&lt;br /&gt;
|ref=Погорелый&lt;br /&gt;
}}&lt;br /&gt;
* {{книга|автор=[[Эндрю Таненбаум|Э. Таненбаум]], Т. Остин|заглавие=Архитектура компьютера|оригинал=Structured Computer Organization|издание=6-е издание|издательство=Питер|год=2018|серия=Классика Computer Science|страниц=816|isbn=978-5-496-00337-7|страницы=452−456|ref=Таненбаум}}&lt;br /&gt;
* Intel 64 and IA-32 Architectures Software Developer’s Manual (в пяти томах):&lt;br /&gt;
** [https://web.archive.org/web/20081221050950/http://download.intel.com/design/processor/manuals/253668.pdf Том 3A. System Programming Guide. CHAPTER 6. INTERRUPT AND EXCEPTION HANDLING]{{ref|en}}&lt;br /&gt;
&lt;br /&gt;
{{Аспекты операционных систем}}&lt;br /&gt;
{{Технологии CPU}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Технологии процессоров]]&lt;br /&gt;
[[Категория:Управление потоком]]&lt;br /&gt;
[[Категория:Прерывания]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Jumpow</name></author>
	</entry>
</feed>