• 操作系统【OS】中断和异常


     

    异常(内中断)

    中断(外中断)

    基本概念

    • 由CPU执行指令内部产生的事件
    • 内中断都是屏蔽中断,一旦出现,就要立即处理。
    • 由来自CPU外部的设备发出的中断请求(常用于输入输出)
    • 典型的由外部设备触发的、与当前正在执行的指令无关的异步事件
    • 外部I/O设备通过特定的中断请求信号线向CPU提出中断请求
    • CPU每执行完一条指令就检查中断请求信号线,若检测到中断请求,则进入中断响应期
    • 外部中断都是在一条指令执行完成后(中断周期)才被检测并处理的

    分类

    故障

    • 由指令执行引起的异常
    • 在引起故障的指令启动之后、执行结束前被检测到的异常事件

    自陷

    • 也称陷阱或陷入,是预先安排的一种“异常事件”,就像预先设置好的“陷阱”一样

    终止

    • 若在执行指令的过程中发生了使计算机无法继续执行的硬件故障,那么程序将无法继续执行,只能终止

    可屏蔽中断(INTR)

    • 通过可屏蔽中断请求线INTR向CPU发出的中断请求
    • 通过改变屏蔽字可以实现多重中断

    不可屏蔽中断(NMI)

    • 通过不可屏蔽中断请求线NMI向CPU发出的中断请求
    • 通常是非常紧急的硬件故障,如电源掉电等。
    • 不受中断标志位的影响,即使在关中断的情况下也会被响应

    举例

    故障

    • 指令译码时,出现“非法操作码”
    • 取数据时,发生“缺段”或“缺页”
    • 除数为零
    • 地址越界
    • 运算溢出

    自陷

    • x86机器中,用于程序调试“断点设置”和单步跟踪功能
    • 系统调用指令
    • 条件自陷指令

    终止

    • 控制器出错
    • 存储器校验错
    • 调出中断服务程序来重启系统
    • 终止异常(Abort)和外中断属于硬件中断
    • 故障异常和自陷异常属于软件中断
    • I/O中断:键盘输入,打印机缺纸
    • 时钟中断:一个固定的时间片已经到了,让处理机处理计时、启动定时运行的任务

    执行时间

    • CPU在执行指令时会检查是否有异常发生
    • 每个指令周期末尾,CPU都会检查是否有外中断信号需要处理

    不同点

    • 缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的
    • 异常的检测由CPU自身完成,不必通过外部的某个信号通知CPU
    • 中断不与任何指令相关联,也不阻止任何指令的完成

     

    CPU响应可屏蔽中断需要满足3个条件:

    中断源有中断请求;

    CPU允许中断及开中断;

    一条指令执行完毕,且没有更紧迫的任务。

  • 相关阅读:
    REST API 设计最佳实践
    Huawei_Netconf_Ncclient
    【算法|贪心算法系列No.4】leetcode55. 跳跃游戏 & 45. 跳跃游戏 II
    K8S 1.24部署笔记
    前端性能优化——启用文本压缩
    基于LLVM13 Enzyme 安装
    21天学Python --- 打卡3: Python && Json
    TikTok创意大赛:如何制作病毒性视频
    MySQL视图
    HTML CSS JS 通过键盘上下左右移动球体
  • 原文地址:https://blog.csdn.net/weixin_42932602/article/details/133954492