从我们按下键盘上的键开始,直到它出现在您的word文档中
这个问题在我的求职面试中……我只是想看看我是否提供了所有细节……
- 机械开关短路拉起R1电阻端接地
- 特殊的多路复用器将其转换为消息,以减少电线数量
- 由嵌入在键盘中的CPU解释的消息
- 该消息被转换为USB协议消息,并被调制为0到5伏之间的交流电压的一系列电脉冲
- USB接收集线器定期测量采样线电压
- 主机集线器控制器将消息转换为数据
- 数据通过USB总线控制器进入PC,连接到PCIE总线,通过IRQ通知和DMA传输的组合,由总线驱动程序发出
- 总线驱动程序解释消息并将其沿驱动程序堆栈转发,最终转发给HID驱动程序
- HID驱动程序与Windows通信,最终导致窗口消息发送到属于msword进程的窗口
- WM_KEYDOWN由DefWindowProc()转换为WM_CHAR。 当密钥关闭时,可以创建多个WM_CHAR。
- Word应用程序捕获WM_CHAR以向文档模型添加另一个字符并发出UI的重新呈现
- UI呈现引擎通过加载相应的字体将unicode代码点转换为图形图像
- 图形引擎计算整个区域的新图像以避免闪烁,并将其逐个像素地放到屏幕上
- 你听到一声咔哒声;)[但这一步没有必要,可能是10日或20日]
- 键盘信号到kb控制器
- 控制器向CPU发出中断
- OS内核看到了中断
- OS内核向相应的驱动程序发送中断
- 驱动程序告诉CPU从kb控制器读取一个charcode
- CPU呢
- 驱动程序以某种方式告诉内核将“KEY_DOWN”事件发布到UI子系统中
- 内核调度事件
- UI子系统检查是否存在活动窗口
- 它将KEY_DOWN UI事件发送到活动窗口
…呃..累了:)所以,之后它将调度一个键,更新窗口内容,并调用video驱动程序/子系统来绘制该char
呃,如果你有一台旧的旧旧二进制计算机: http : //en.wikipedia.org/wiki/Punched_card
然后,在你按下钥匙的时候,你可能会喝一杯茶!