计算机如何处理移动鼠标的输入?
How does a computer process input of a moving mouse?
是涉及到寄存器还是缓存内存相关?
我的问题的说明性示例可能很简单,我将鼠标移过我当前正在输入的屏幕。我不点击任何东西,我只是将箭头从左到右、上下移动。 CPU 如何处理我的鼠标相对于显示器显示的瞬时位置变化?
编辑:据我所知,这更多是由操作系统处理的,因为鼠标是外部设备,CPU 只是计算值并执行逻辑。鼠标移动并且在每个时钟信号上操作系统都会获得中断并适当地处理它。
当您 move/click 鼠标时,它会产生一个中断。中断基本上是一种告诉 cpu 发生了需要处理的事件的方法。然后内核将 运行 它的中断处理程序来处理鼠标事件。
例如,PS/2 鼠标通过 3 字节数据包进行通信:
-----------------------------------------------
Byte 1 | YV | XV | YS | XS | 1 | MB | RB | LB |
-----------------------------------------------
Byte 2 | X movement |
-----------------------------------------------
Byte 3 | Y movement |
-----------------------------------------------
MB, RM, LB
标志代表中、右和左按钮点击。
然后内核最终会将这些事件传递给 运行ning 的应用程序。
例如Linux中,X Window Server是处理鼠标事件的进程。通过通用 X 事件协议通知各个图形应用程序。
运行宁代码时总是涉及寄存器和高速缓存。内核中断处理程序经过优化,可以快速处理中断并将其传递。由于 cpu 非常快,因此这种变化被视为接近瞬时。处理器以纳秒分辨率工作,每秒有十亿纳秒。
是涉及到寄存器还是缓存内存相关?
我的问题的说明性示例可能很简单,我将鼠标移过我当前正在输入的屏幕。我不点击任何东西,我只是将箭头从左到右、上下移动。 CPU 如何处理我的鼠标相对于显示器显示的瞬时位置变化?
编辑:据我所知,这更多是由操作系统处理的,因为鼠标是外部设备,CPU 只是计算值并执行逻辑。鼠标移动并且在每个时钟信号上操作系统都会获得中断并适当地处理它。
当您 move/click 鼠标时,它会产生一个中断。中断基本上是一种告诉 cpu 发生了需要处理的事件的方法。然后内核将 运行 它的中断处理程序来处理鼠标事件。
例如,PS/2 鼠标通过 3 字节数据包进行通信:
-----------------------------------------------
Byte 1 | YV | XV | YS | XS | 1 | MB | RB | LB |
-----------------------------------------------
Byte 2 | X movement |
-----------------------------------------------
Byte 3 | Y movement |
-----------------------------------------------
MB, RM, LB
标志代表中、右和左按钮点击。
然后内核最终会将这些事件传递给 运行ning 的应用程序。
例如Linux中,X Window Server是处理鼠标事件的进程。通过通用 X 事件协议通知各个图形应用程序。
运行宁代码时总是涉及寄存器和高速缓存。内核中断处理程序经过优化,可以快速处理中断并将其传递。由于 cpu 非常快,因此这种变化被视为接近瞬时。处理器以纳秒分辨率工作,每秒有十亿纳秒。