1

Я нарисую пример того, что я прошу в кристально чистой детализации.Разве драйверы устройств взаимодействуют друг с другом или они асинхронно вызываются?

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

enter image description here

Как картина показывает, не перемещая мышь, но вызов драйвера/обновления экрана постоянно работает. Тем не менее, что, если мы выберем оба, щелкните в списке со списком/выпадающим списком меню и постоянно обновляйте ленту фреймбуфера? Оба драйвера вызываются почти одновременно, и что их вызывает (рабочий стол GUI, приложение напрямую и т. Д.). Поскольку мышь работает ANYWHERE, в приложении или нет, это заставляет меня сомневаться в том, что вход мыши неопределенно называется системой, однако вывод видео зависит больше от того, что приложение (например, ниже, texpad).

ответ

1

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

Ядро не имеет понятия о понятии «указатель мыши». Он экспортирует только интерфейс: «У меня есть устройство ввода, которое дает координаты X и Y». Аналогично с видеодрайвером он экспортирует только интерфейс: «У меня есть устройство, на котором вы можете выводить изображения» - он не знает, что такое указатель мыши.

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

Как содержимое экрана фактически переводится на аппаратное обеспечение, зависит от драйвера и не требует пространства пользователя. GUI просто сообщает ядру: «Я хочу, чтобы экран выглядел так», а ядро ​​обрабатывает все остальное.

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