CS-Notes 学习笔记
Java 后端 · 操作系统

外中断、异常和陷入有什么区别?

先自己想一想,再看参考要点

参考要点

  • 外中断由 CPU 外部的事件引起,与当前执行的指令无关,是异步的,例如磁盘完成 I/O 后发出的中断、周期性的时钟中断(时间片轮转的基础)
  • 异常由正在执行的指令引起,是同步的,例如第一次写刚分配的内存触发缺页异常,内核分配物理页后同一条指令重新执行,除数为 0 触发除法错误
  • 陷入由程序主动执行的指令引起,同样是同步的,系统调用就是通过陷入实现的,例如 x86-64 的 syscall 指令
  • 外中断和异常通过中断描述符表(IDT)找到处理程序,syscall 指令直接跳转,不经过 IDT
在学习站中自测这道题

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。