按下键盘计算机具体发生了点儿啥?

老问题了,在网上搜罗了一圈,没有啥靠谱的回答。其实这种问题,在大学里学习的计算机基础课程里都有很好的回答。可惜网上很少有人能够把这些基础只是串起来。
啥基础知识呢?对于计算机专业的学生来说(cs student),就是《计算机组成原理》以及《操作系统》两门课。
键盘输入,这种操作就是典型的计算硬件和软件(这里的软件就是OS)相互配合来完成的。咋配合呢?
中断机制

interrupt

通俗来说,计算机外设,比如键盘发生事件(比如按下一个键)会通知到CPU, 这时CPU忙完手头的指令,就会转而执行对应的中断程序。

这句话太通俗,太笼统。那么下面细说。

如何通知到CPU?

计算机设备比如键盘会在控制总线(control bus)上发送中断请求(IRQ),CPU每次执行完一个指令都会检查一下control bus上是否有IRQ,如果有,就进入中断处理程序。

终端处理程序是啥?

就是 interrupt handler, 也叫 interrupt service routine(ISR)。操作系统开机加载的时候,会把不同设备的驱动程序也就是ISR写入内存,构成所谓的 interrupt vector table。等待CPU查阅并临幸。

CPU怎么找到ISR?

CPU里有个interrupt register,这玩意也是操作系统开机加载的时候初始化的,内容和内存里的interrupt vector对应起来,CPU根据当前的中断号(interrupt number)去register里一查,然后找到对应内存 interrupt vector 的地址,即找到ISR。

CPU怎么知道当前中断的interrupt number?

设备发送中断请求(IRQ)后,CPU感知到后会回复一个INTA(interrupt acknowledge),设备收到INTA后回复CPU该设备的 interrupt number。

reference

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值