Практически во всех архитектурах ЦП имеется как минимум два механизма перехода из пользовательских (менее привилегированных) в системные (более привилегированные) режимы: прерывания и прерывания.Ловушки являются результатом инструкций, таких как деление на ноль, или специальной инструкции для входа в режим системы.Прерывания вызваны электрическими сигналами, на которые процессор реагирует переключением в системный режим.В любом случае процессор сохраняет достаточно информации, чтобы иметь возможность возобновить выполнение в любом из режимов, и начинает выполнение с заранее подготовленной инструкции в системном режиме.
Таким образом, устройство в стиле клавиатуры может вызывать прерывание, когдаклавиша нажата или отпущена, что заставляет систему переключаться в системный режим для запуска кода, специфичного для этого прерывания (обычно в драйвере устройства).Этот код обычно помещает событие в буфер и пробуждает любого, кто его ждет.
Пользовательская программа может создать ловушку с некоторыми параметрами, чтобы направить ее в драйвер устройства клавиатуры, где она извлечет предыдущеесобытия из буфера или дождитесь, пока события будут доступны, если он был пустым.
Различие между пользователем и системой не является глубоким;это грубый механизм целостности системы.