cha*_*ger 3 mouse cpu-registers cpu-cache
是否涉及寄存器或与高速缓存相关?
我的问题的一个说明性示例可能足够简单,我将鼠标移动到当前正在输入的屏幕上。我不点击任何东西,我只是将箭头从左到右上下移动。CPU 如何处理我的鼠标相对于显示器显示的位置变化,这似乎是瞬时的?
编辑:我知道这更多是由操作系统处理的,因为鼠标是外部设备,而 CPU 只是计算值并执行逻辑。鼠标移动,在每个时钟信号上,操作系统都会收到一个中断并进行适当的处理。
当您移动/单击鼠标时,它会产生一个中断。中断基本上是一种告诉 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 的速度非常快,因此这种变化几乎是瞬间发生的。处理器以纳秒分辨率工作,每秒有十亿纳秒。