中断的作用
中断机制允许操作系统从用户态切换到内核态,从而重新获得对CPU的控制权。这个过程对于系统的并发和多任务处理至关重要。没有中断机制的话,CPU在运行应用程序时将无法被打断,这将导致无法实现任务的切换和调度。
中断机制的基本原理
- 时钟中断:时钟中断是由时钟部件发出的信号。时钟部件会定期向CPU发送中断信号,例如每隔50毫秒发送一次。这些中断信号用于操作系统的任务调度,帮助操作系统决定是否需要切换任务或调整时间片分配。
- I/O中断:I/O中断是由输入输出设备发出的信号。当I/O操作完成时,设备会向CPU发送中断信号。操作系统会处理这些信号,完成数据的处理或启动下一步操作。例如,当硬盘完成数据读取或写入时,硬盘控制器会发出中断信号。
中断类型
中断可以分为内中断和外中断两类,每类中断的来源和处理方式都不同。
内中断(异常)
内中断是由CPU内部引发的,与当前执行的指令有关。内中断包括以下几种情况:
陷阱:陷阱是应用程序主动发起的中断,用于请求操作系统内核的服务。通常,应用程序通过执行特殊的陷入指令来实现陷阱。这些指令将CPU的控制权交给操作系统,以便执行如文件操作或进程控制等系统服务。系统调用就是通过陷阱指令实现的。
故障:故障是由于程序错误或异常条件引发的中断,这些错误通常可以被操作系统内核修复。操作系统会尝试修复故障,并在修复后将CPU控制权还给应用程序,允许程序继续执行。一个典型的例子是缺页故障,当页面不在内存中时需要通过页面调度来解决。
终止:终止是由致命错误引发的中断,这种错误通常无法被修复。内核无法解决致命错误时,应用程序会被直接终止,相关资源也会被释放。常见的致命错误包括执行非法指令或除数为零等。
外中断
外中断是由CPU外部引发的,与当前执行的指令无关。外中断的信号来自外部设备或系统硬件。外中断包括以下几种情况:
中断向量表:中断向量表是一个存储中断处理程序地址的数据结构。当中断发生时,CPU会使用中断向量表找到对应的中断处理程序,并执行相应的处理。
检查中断信号:在每个指令周期的末尾,CPU会检查是否有外中断信号。如果有,中断机制会被触发。对于内中断,CPU会在执行指令时检查是否发生了异常或错误。
-
具体情况
-
时钟中断——由时钟部件发来的中断信号
-
时钟部件每隔一个时间 片(如 50ms)会给CPU 发送一个时钟中断信号
-
操作系统内核决定 接下来让另一个应 用程序上CPU运行
-
-
I/O中断——由输入/输出设备发来的中断信号
-
当输入输出任务完成时, 向CPU发送中断信号
-
-