• 操作系统:中断和异常


    1.中断的作用

    CPU上会运行两种程序,一种是操作系统内核程序(是整个系统的管理者),一种是应用程序

    1.中断的特点
    • 在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。
    • “中断”是让操作系统内核夺回CPu使用权的唯一途径。
    • “中断”会使cPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
    2.Cpu状态的切换
    • 内核态→用户态:执行一条特权指令――修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
    • 用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回cPU的使用权。

    2.中断的类型

    在这里插入图片描述

    1.内中断(也称异常,例外)

    与当前执行的指令有关,中断信号来源于CPU内部。

    1.触发条件:
    若当前执行的指令是非法的,则会引发一个中断信号。

    例子1:试图在用户态下执行特权指令

    例子2:执行除法指令时发现除数为0(终止)

    例子3:有时候应用程序想请求操作系统内核的服务,
    此时会执行一条特殊的指令――陷入指令
    该指令会引发一个内部中断信号。

    2.陷入指令
    执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。
    “系统调用”就是通过陷入指令完成的。

    3.异常的分类

    • 陷阱,陷入:由陷入指令引发,是应用程序故意引发的。
    • 故障:由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
    • 终止:由致命错误引起,内核程序无法修复该错误,因此一及不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。
    2.外中断(也称中断,狭义的中断)

    与当前执行的指令无关,中断信号来源于CPU外部。

    例子1:时钟中断――由时钟部件发来的中断信号

    例子2:I/O中断――由输入/输出设备发来的中断信号

    3.中断的基本原理

    不同的中断信号,需要用不同的中断处理程序来处理。
    显然,中断处理程序一定是内核程序,需要运行在“ 内核态”

    1.具体做法
    1. 当CPU检测到中断信号后,
    2. 判断中断信号类型
    3. 若是内中断:CPU在执行指令时会检查是否有异常发生;
    4. 若是外中断:每个指令周期末尾,CPU都会检查是否有外中断信号需要处理。
    5. 然后根据中断信号的类型查询“中断向量表”,
    6. 以此来找到相应的中断处理程序在内存中的存放位置。
  • 相关阅读:
    Pytest电商项目实战(上)
    c++_learning-模板元编程
    ESDA in PySal (1) 利用 A-DBSCAN 聚类点并探索边界模糊性
    Fiddler抓取Https请求配置
    【云原生】zookeeper + kafka on k8s 环境部署
    云上本地化运营,东非第一大电商平台Kilimall的出海经
    MSDC 4.3 接口规范(28)
    如何防范企业内部安全威胁?
    基于【GO】的cmf_password加密密码的逻辑,和校验密码逻辑
    Web APIs——DOM
  • 原文地址:https://blog.csdn.net/qq_61888137/article/details/133150204