Как операционные системы определяют, куда направить ввод устройства? - PullRequest
0 голосов
/ 07 июня 2018

Позвольте мне дать конкретный контекст для мотивации.

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

Я никогда не понимал, как, если я создаю привязку, скажем, для alt+k,Затем Windows поймет, что нужно сначала сообщить AHK, когда нажата эта комбинация клавиш.И если AHK затем решит создать нажатие клавиши down в ответ, Windows узнает предполагаемую цель для этой команды.

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

Кто-нибудь может пролить свет на то, что здесь происходит за кулисами?И если есть значительные различия в Linux, мне также интересно узнать о них.

1 Ответ

0 голосов
/ 08 июня 2018

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

Каждое устройство ввода-вывода имеет контроллер устройства .Операционная система никогда не связывается с контроллером устройства напрямую.В ОС используется специальное программное обеспечение, называемое драйвер устройства (обычно предоставляемое самим поставщиком), которое устанавливается между контроллером устройства и ОС.

Драйвер устройства понимает контроллер устройства и предоставляет ОС единый интерфейс для связи с устройством.Например: для запуска операции ввода / вывода драйвер устройства загрузит соответствующие регистры в контроллер устройства.Контроллер проверит содержимое регистра и выяснит, какое действие необходимо предпринять (например, прочитать символ с клавиатуры).Контроллер начнет передачу с устройства в локальный буфер.

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

...