计算机如何处理移动鼠标的输入?

cha*_*ger 3 mouse cpu-registers cpu-cache

是否涉及寄存器或与高速缓存相关?

我的问题的一个说明性示例可能足够简单,我将鼠标移动到当前正在输入的屏幕上。我不点击任何东西,我只是将箭头从左到右上下移动。CPU 如何处理我的鼠标相对于显示器显示的位置变化,这似乎是瞬时的?

编辑:我知道这更多是由操作系统处理的,因为鼠标是外部设备,而 CPU 只是计算值并执行逻辑。鼠标移动,在每个时钟信号上,操作系统都会收到一个中断并进行适当的处​​理。

roh*_*t89 5

当您移动/单击鼠标时,它会产生一个中断。中断基本上是一种告诉 cpu 发生了需要处理的事件的方法。然后内核将运行其中断处理程序来处理鼠标事件。

例如,PS/2 鼠标通过一个 3 字节的数据包进行通信:

-----------------------------------------------
Byte 1 | YV | XV | YS | XS | 1 | MB | RB | LB |
-----------------------------------------------
Byte 2 |             X movement               |
-----------------------------------------------
Byte 3 |             Y movement               |
-----------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这些MB, RM, LB标志代表中间、向右和向左按钮的点击。

内核最终会将这些事件传递给正在运行的应用程序。

例如,在 Linux 中,X Window Server是处理鼠标事件的进程。单个图形应用程序通过通用 X 事件协议获知它们。

运行代码时总是涉及寄存器和高速缓存。内核中断处理程序经过优化,可以快速处理中断并将其传递。由于 cpu 的速度非常快,因此这种变化几乎是瞬间发生的。处理器以纳秒分辨率工作,每秒有十亿纳秒。