Прерывания: как устройства зовут процессор (Приложение A)

Опубликовано: 11.04.2026

 

← П. О приложениях 📋 Оглавление B. Компилятор →
КАК УСТРОЕНО ВСЁ — приложение A

Прерывания: как устройства зовут процессор

Механизм, без которого не работает ни клавиатура, ни мышь, ни сеть - и который объясняет, почему процессор не тратит время впустую

В статьях про процессор и операционную систему мы несколько раз упоминали прерывания - вскользь, как нечто само собой разумеющееся. Пришло время разобраться, что это такое на самом деле. Прерывания - один из тех механизмов, которые настолько фундаментальны, что без них современный компьютер в принципе не мог бы работать так, как работает.

🤔 Проблема: как устройство сообщает процессору о событии?

Представьте, что вы ждёте посылку. Есть два способа это делать. Первый: каждые пять минут выходить к двери и проверять, не принесли ли что-нибудь. Второй: заниматься своими делами и открыть дверь, только когда позвонит курьер.

Первый способ называется опрос (polling). Процессор раз за разом спрашивает каждое устройство: «У тебя что-нибудь есть? А у тебя? А у тебя?» Это работает, но расточительно: большую часть времени ответ «нет», а процессор занят бессмысленным обходом. Если устройств много - клавиатура, мышь, сетевая карта, диск, USB, звуковая карта - опрос каждого из них становится заметной нагрузкой.

Второй способ - прерывание. Устройство само сигнализирует процессору, когда ему есть что сообщить. Процессор в это время занимается другой работой и реагирует только тогда, когда его действительно позвали.

💡 Почему это принципиально важно: Без прерываний многозадачность была бы невозможна в том виде, в котором мы её знаем. Планировщик задач сам запускается по прерыванию от таймера - именно оно отсчитывает кванты времени и заставляет ОС переключаться между процессами. Уберите прерывания - и программы будут работать только по одной, без какого-либо управления извне.

⚡ Как работает прерывание - шаг за шагом

Вы нажали клавишу на клавиатуре. Разберём, что за этим следует.

Контроллер клавиатуры фиксирует нажатие и формирует электрический сигнал - запрос на прерывание (IRQ, Interrupt Request). Этот сигнал поступает на специальный чип - контроллер прерываний, который управляет очерёдностью сигналов от разных устройств и передаёт их процессору.

Процессор заканчивает текущую инструкцию - прервать его посередине нельзя - и переходит к обработке прерывания. Для этого он делает несколько вещей: сохраняет своё текущее состояние (содержимое регистров, адрес следующей инструкции) в стек, чтобы потом вернуться ровно туда, где остановился. Затем смотрит в специальную таблицу - таблицу векторов прерываний - и находит адрес обработчика для этого типа прерывания.

Обработчик прерывания — это небольшая функция в ядре ОС, написанная для этого типа устройств. Для клавиатуры она читает из контроллера, какая именно клавиша была нажата, кладёт этот код в буфер, и сообщает той программе, которая сейчас ждёт ввода. Всё это занимает микросекунды.

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

📌 Таблица векторов прерываний: Это массив адресов, хранящийся в памяти. Каждому номеру прерывания соответствует адрес обработчика. Номер 1 - прерывание от таймера, номер 12 - от мыши, номер 14 - от диска, и так далее. ОС заполняет эту таблицу при загрузке, прописывая адреса своих обработчиков. Именно поэтому, когда ОС загружается, она «берёт под контроль» железо - в буквальном смысле переписывает таблицу под себя.

🗂️ Виды прерываний

Не все прерывания приходят от внешних устройств. Их принято делить на три большие группы.

Аппаратные прерывания - те самые, от периферии. Клавиатура нажата, пакет пришёл по сети, диск закончил запись, USB-устройство подключено. Любое физическое событие, о котором нужно сообщить процессору немедленно.

Программные прерывания, или системные вызовы — их генерирует сама программа. Когда браузер хочет открыть файл или отправить данные по сети, он не обращается к железу напрямую: он выполняет специальную инструкцию, которая передаёт управление ядру ОС. С точки зрения железа это тоже прерывание - только вызванное намеренно, а не внешним сигналом.

Исключения - прерывания, которые процессор генерирует сам, когда что-то пошло не так. Деление на ноль, обращение к несуществующему адресу памяти, выполнение запрещённой инструкции - всё это исключения. ОС перехватывает их и решает, что делать: чаще всего завершает программу с сообщением об ошибке.

Вид прерывания Кто генерирует Примеры
Аппаратное Внешнее устройство Нажатие клавиши, приход пакета, готовность диска
Программное (системный вызов) Сама программа Открыть файл, выделить память, отправить данные в сеть
Исключение Сам процессор Деление на ноль, выход за границы памяти, недопустимая инструкция

⏱️ Прерывание от таймера - сердце многозадачности

Из всех аппаратных прерываний самое важное - прерывание от системного таймера. Специальная микросхема на материнской плате генерирует его с точным интервалом: обычно от одного до десяти миллисекунд. Каждый раз, когда это прерывание приходит, управление передаётся планировщику задач.

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

💡 Что значит «отключить прерывания»: Процессор умеет временно запрещать обработку прерываний - специальной инструкцией. Это делается в критических местах ядра, когда нельзя допустить переключения посередине операции. Например, когда ОС меняет таблицу страниц виртуальной памяти: если прерывание придёт в этот момент и планировщик попытается переключить контекст - получится несогласованное состояние. Поэтому ядро на доли микросекунды «глушит» прерывания, делает своё дело и снова их включает. Злоупотреблять этим нельзя: пока прерывания отключены, мышь не реагирует, сеть не принимает пакеты, таймер не тикает.

🔗 Прерывания и всё остальное

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

Прерывание — это не экзотика и не деталь реализации. Это базовый язык, на котором железо разговаривает с операционной системой. Каждое нажатие, каждый байт из сети, каждый тик часов - всё начинается с сигнала, который говорит процессору: «Отвлекись на секунду. Есть кое-что важное».


📍 Привезите технику в сервис ANY.BY — диагностика бесплатно, работаем без выходных.
🚗 Не можете приехать — вызовите мастера на дом.
🛒 Ноутбуки, компьютеры и комплектующие — магазин magaz.by.

📞 +375 (33) 323-70-00 (МТС) | +375 (29) 323-70-00 (A1)
✉️ Telegram | Viber

➡️ Смотреть полный прайс-лист →

← П. О приложениях 📋 Оглавление B. Компилятор →
Расписание работы · ул. Куйбышева, 26
Пн–Пт 10:00–19:00
Суббота 11:00–17:00
Воскресенье 12:00–16:00

★★★★★ 4.8 · 161 отзыв в Google
★★★★★ 4.8 · 41 отзыв в Яндекс
Д
Дима Ковальчук
май 2025
★★★★★

Качественный сервис, ребята знают своё дело. Рекомендую.

О
Ольга
февраль 2025
★★★★★

Очень хороший сервис, мастер всё объяснил и быстро починил компьютер. Спасибо!

С
Сергей
июль 2024
★★★★★

Ремонтировал блок питания. Сделали быстро и качественно. Спасибо!

Т
Татьяна
2017
★★★★★

Хороший мастер, вежливый. Всё работает, нареканий нет.

В
Виктория Р.
октябрь 2023
★★★★★

Мастер очень приятный в общении, всё подробно объясняет. Цены честные, лишнего не навязывают.

Н
Наталья
ноябрь 2024
★★★★★

Огромное спасибо за профессионализм! Буду обращаться ещё.

Д
Дмитрий П.
декабрь 2023
★★★★★

Мастер своего дела. Ремонт выполнен качественно и в срок.

Н
Николай
август 2024
★★★★★

Всё супер. Быстро нашли причину поломки и устранили.

М
Максим
октябрь 2024
★★★★★

Ремонтировал монитор. Сделали быстро, цена устроила. Всё работает исправно.

А
Анна
апрель 2024
★★★★★

Очень довольна ремонтом ноутбука. Быстро и по адекватной цене.


📖 Как устроен компьютер

Цикл статей ANY.BY - от транзистора до интернета.
Простым языком, без лишней теории.

🎓 Читать учебник →