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

    科技2025-11-20  8

    index

    interrupt如何通知到CPU?终端处理程序是啥?CPU怎么找到ISR?CPU怎么知道当前中断的interrupt number?

    老问题了,在网上搜罗了一圈,没有啥靠谱的回答。其实这种问题,在大学里学习的计算机基础课程里都有很好的回答。可惜网上很少有人能够把这些基础只是串起来。 啥基础知识呢?对于计算机专业的学生来说(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

    Processed: 0.048, SQL: 9