zoukankan      html  css  js  c++  java
  • 中断与中断系统

    中断:没有我,还想提高计算机性能,做梦吧!

    设想一个场景:
    小宏正在吃饭,突然接到公司的电话,要求马上赶到公司开会。此时小宏做了如下几件事情:

    1. 放下碗筷
    2. 拿上车钥匙
    3. 去车库取车
    4. 赶到公司

    如上场景在生活中经常能够见到,放在本文中,有一个术语能够很好的诠释这一场景——中断。

    中断

    公司打来电话要求小宏马上去公司开会,因而小宏必须放下没有吃完的饭,转而赶去公司开会,等开完会再回到家继续吃饭。这几个动作就表现出了中断的概念。而小宏就是一个中断装置。

    什么是中断
    在程序运行过程中出现某种紧急事件,必须中止当前正在运行的程序,转而去处理此事件,然后再恢复原来运行的程序,这个过程就被称为中断。
    什么是中断装置
    中断系统中的硬件部分,其职能是发现并响应中断,具体为:

    1. 识别中断源
    2. 保存现场
    3. 引出中断处理程序

    中断源

    公司打电话要求小宏马上去公司开会,这就是引起小宏不得放下碗筷去公司开会的事件了。在计算机术语中,也称之为中断源。

    引起中断的事件称为中断源

    中断字

    当小宏到了公司,走进会议室开始开会,此时:

    1. 拿出笔记本
    2. 开始记录会议内容
      以上是小宏在处理中断事件,我们称,笔记本是中断记录器,笔记本上记录的内容是中断字。

    在中断装置发现并响应中断后,转到响应的中断处理程序。
    硬件系统为每一个中断源设置一个寄存器,即为中断寄存器,而中断寄存器中保存了与中断事件相关的一些信息,这些信息就称为中断字

    中断类型

    小宏记录了一会,发现自己对于某一内容有疑问,于是标记下来,等待会议的提问阶段抛出此疑问。
    小宏现在所做是其自己有意识的安排,并且使自愿的,我们称此为自愿性中断。既然有自愿性,相对的就有强迫性中断,被公司叫去开会,这就属于强迫性中断

    1. 强迫性中断
      这类中断事件是正在运行的程序锁不期望的,这类中断是否发生,何时发生,无法预知。
      • 时钟中断
      • 输入输出中断
      • 控制台中断
      • 硬件故障中断
      • 程序错误中断
    2. 自愿性中断
      这类中断事件是正在运行的程序有意识的安排,这类中断的发生具有必然性,发生时机,位置确定。

    中断向量

    小宏是在技术部会议室开技术研讨会议,这就是所谓的中断向量。
    技术部会议室对应中断程序入口地址(PC),技术研讨会议对应的是运行环境(PSW),PC和PSW合称中断向量。

    NOTE:
    同类事件的处理方法是相同的,所以不是每一个中断源都有一个中断处理程序,而是每一类中断时间有一个中断处理程序。

    中断嵌套

    小宏在提问阶段抛出疑问时,是在其处理第一个中断事件时发生的,这就是一种嵌套。我们知道,开会时领导发言是不允许被打断的,除非是更高一级的领导才能打断(0.....0),这就是中断的优先级问题以及中断屏蔽。

    中断嵌套主要是嵌套,虽然嵌套可以无休止的进行下去,但是,由于中断优先级的存在使得当前中断只能被更高优先级的事件中断,所以中断嵌套实际上是无法无限的。
    想出现低优先级的事件中断也并非不可行,只需要调整一下优先级,比如说开会时的提问阶段就提高了普通员工的优先级。
    注意:
    中断发生时,需要保存(使用栈保存,栈区位置是由硬件确定的)被中断程序的现场信息,以保证处理完中断事件后可以恢复现场。

    中断优先级

    硬件规定,不可改变,但程序可以适当做出调整。

    就如领导的优先级高于普通员工(你说是谁规定的呢?  ̄▽ ̄)

    中断屏蔽

    中断屏蔽指令可以暂时禁止中断源向处理器发送中断请求。

    哪怕是领导,在一些会议上也是不能打断会议的进行 ︿( ̄︶ ̄)︿。

    中断处理程序

    小宏在会议上做了什么动作,还记得吗?那些动作就组成了一个处理程序。

    中断处理程序处理中断的过程中可能会使用通用寄存器,所以需要进一步保存现场信息。
    保存什么现场信息呢?保存时需要注意些什么吗?
    中断处理完毕返回用户程序时,需要通过一条指令将PC和PSW弹出系统栈,为什么呢?

    保存现场信息: PC,PSW以及通用寄存器内容
    保存时需注意:现场信息保存在系统栈中,在保存和恢复现场的过程中不响应新的中断(中断屏蔽)。
    一条指令恢复PC和PSW:中断向量中程序状态字PSW与指令计数器PC的内容必须由一条指令同时恢复,这样才能保证系统状态由管态转到目态的同时,控制转到上升进程的断点处继续执行。如果不同时恢复,则只能(1)先恢复PSW再恢复PC,在恢复PSW后已经转到目态,操作系统恢复PC的使命无法完成;(2)先恢复PC再恢复PSW,PC改变后转到操作系统另外区域(因为PSW仍为系统状态),PSW无法恢复。

  • 相关阅读:
    Entity Framework6 with Oracle(可实现code first)
    ORACLE官方全托管驱动 Oracle.ManagedDataAccess 12.1.0.1.0
    C#连接Oracle数据库的四种方法
    WPF的TextBox产生内存泄露的情况
    ArcGIS客户端API中加载大量数据的几种解决办法(以Silverlight API为例)
    ArcGISDynamicMapServiceLayer 和 ArcGISTiledMapServiceLayer 区别
    ArcGIS客户端API中加载大量数据的几种解决办法
    MVVM中间接使用事件(命令)
    Tornaod框架
    跨站请求伪造CSRF
  • 原文地址:https://www.cnblogs.com/keepsmart/p/11371430.html
Copyright © 2011-2022 走看看