2025-11-20 06:27:44
软中断是程序自己发出来的警报,比如当你用鼠标点击的时候,程序会告诉CPU要处理这个动作,这时候CPU就会暂停当前任务,转去执行对应的操作。而内中断是硬件设备自己发出来的警报,比如电脑自己发警报说内存没电了或者键盘没反应了。两者都是让CPU暂停工作去处理事情,但一个是程序主动要求的,一个是硬件被动触发的。
为什么软中断不是内中断呢?因为内中断是硬件直接产生的信号,比如键盘按下去就会立刻触发中断请求,这时候CPU会立刻暂停当前程序去检查键盘状态。而软中断需要程序主动发送指令,比如调用系统函数的时候,程序会专门发送一个信号给CPU,这时候CPU才会暂停处理。根据《计算机组成原理》教材里的数据,x86架构里软中断的中断号范围是0x80到0xFF,而内中断的中断号都是0x00到0x1F。比如系统调用的时候,程序会主动触发一个中断号0x80,这时候CPU就会切换到内核模式,执行内核代码。而像时钟中断这种内中断,中断号固定是0x20,不管程序怎么运行都会被触发。所以软中断和内中断的根本区别在于触发方式和中断号范围,就像手机主动打电话和电话铃自动响是一样的道理。
本题链接: