• 中断和异常


    中断和异常

    知识总览

    中断机制的诞生

    各程序只能串行执行,系统资源利用率低

    为解决上述问题,人们发明了操作系统(作为计算机的管理者),引入中断机制,实现多道程序并发执行

    本质:发生中断就意味着需要操作系统介入,开展管理工作

    中断的概念和作用

    1.当中断发生时,CPU立即进入核心态

    2.当中断发生后,当前运行的程序暂停运行,并由操作系统内核对其中断处理

    3.对于不同的中断信号,会进行不同的处理

    发生了中断,就意味着需要操作系统的介入,开展管理工作,由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序的并发执行。

    遗留问题:用户态核心态的切换是怎么实现的?

    用户态----->核心态 是通过中断实现的,并且中断是唯一途径

    核心态------>用户态 的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”

    中断的分类

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

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

    指令中断 如系统调用时使用的访管指令(又称陷入指令、trap指令)

    硬件故障 如缺页

    软件中断 如整数除0

    陷入 有意为之的异常 如系统调用

    故障 由错误条件引起的,可能被故障处理程序修复,如缺页

    终止 不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0

    外中断的处理过程

    step1:执行完每个指令之后,CPU都要检查当前是否有外部中断信号

    step2:如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)

    step3:根据中断信号类型转入相应的中断处理程序

    知识回顾

     

  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/mayrain/p/12383841.html
Copyright © 2020-2023  润新知