精华内容
下载资源
问答
  • 单片机中断的基本概念

    千次阅读 2019-10-09 05:31:51
    **软件中断CPU具有相应的软件中断指令,当MCU执行这条指令时能进入软件中断服务,以完成特定的功能(通常用于调试),但是一般的单片机不具备软件中断的指令。  2)、中断控制与终端响应条件:单片机中,...
    单片机中断系统的优点:
      1、实现实时处理。
      2、实现分时操作。
      3、进行故障处理。
      4、待机状态的唤醒。单片机嵌入式系统的应用中,为了减少电源的功耗,当系统不处理任何事物,处于待机状态时,可以让单片机工作在休眠的低功耗方式。通常,恢复到正常工作方式往往也是利用中断信号来唤醒。

    中断处理过程:
       中断系统中,MCU正常情况下运行的程序称为 主程序 ,把产生申请中断信号的单元和事件称为 中断源 ,由中断源向MCU所发出的申请中断信号称为 中断请求 ,MCU接受中断申请并停止现行程序的运行而转向为中断服务称为 中断响应 ,为中断服务的程序称为 中断服务程序 ,现行程序打断的地方称为 断点 ,执行完中断处理程序后返回断点处继续执行主程序称为 中断返回
    8BBQjbpfSkeLIAAAAASUVORK5CYII=  其中K就是断点,由于中断服务程序执行完后仍要返回主程序,因此,在执行中断处理程序之前,要将主程序中断点处的地址保存,即中断返回后要执行的命令地址,这个地址就是程序计数器PC的值。这个过程称为 保护断点 。又由于MCU在执行中断处理程序时,可能会使用和改变主程序使用过的寄存器、标志位、甚至内存单元,因此,在执行中断服务程序前,还要把有关的数据保护起来,称为 中断现场保护 。在MCU执行完中断处理程序后,又要恢复原来的数据,并返回主程序的断点处继续执行,称为 恢复现场
     中断过程中,断点的保护和恢复操作是由单片机内部硬件自动实现,即保存和恢复计数器PC。
     中断现场的保护和恢复,需要自己设计中断处理程序时编程实现。在使用中断时,要认真和仔细考虑中断现场的保护和恢复。

    中断的三个概念: 中断源、 中断信号、 中断向量(中断入口地址);系统有若干个中断源,每个中断源对应一个中断向量,中断向量只是中断服务程序的一个入口地址,所有中断向量连续存放在固定区域,构成了中断向量区。


    中断优先级和中断嵌套:
      中断优先级的概念是针对有多个中断源同时申请中断时,MCU如何响应中断,以及响应哪个中断而提出来的。
    中断优先级的确定:
       某中断对应的中断向量地址越小,其中断优先级越高(硬件确定方式)
      ▋通过软件对中断控制器的设定,改变中断的优先级(用户可设置方式,但是AVR不支持)
      一些单片机(如8051)的硬件能够自动实现中断嵌套的处理,即单片机内部的硬件电路能够识别中断的优先级,并根据优先级的高低,自动完成对高优先级中断的优先响应,实现中断的嵌套处理。
    ** AVR单片机,硬件系统不支持自动实现中断嵌套的处理。如果在系统设计中,必须使用中断嵌套处理,则需要由用户编写相应的程序,通过软件设置来实现中断嵌套的功能。


    中断的响应条件与中断控制:
      1)、中断的屏蔽:通常存在一些特殊的标志位用于控制开放或关闭(屏蔽)MCU对中断响应处理,这些标志称为中断屏蔽标志位或中断允许控制位。注意,屏蔽中断信号,不是取消。
      中断源分为:非屏蔽中断、可屏蔽中断、软件中断。**软件中断是指CPU具有相应的软件中断指令,当MCU执行这条指令时能进入软件中断服务,以完成特定的功能(通常用于调试),但是一般的单片机不具备软件中断的指令。
      2)、中断控制与终端响应条件:单片机中,对应每一个中断源都有一个相应的中断标志位,该中断标志位将占据中断控制器中的一位。当单片机检测到某一中断源产生符合条件的中断信号时,其硬件会自动将该中断源对应的中断标志位置“1”,这就意味着有中断信号产生了,向MCU申请中断。
          中断标志位置“1”,并不代表MCU一定响应该中断。为了合理控制中断响应,在单片机内部还有相关的用于中断控制的中断允许标志位。 最重要的一个中断允许标志位是全局中断允许标志位。当该标志位为“0”,表示禁止MCU响应所有的可屏蔽中断的响应。此时不管是否有中断产生,MCU不会响应任何中断请求。只有全局中断允许标志位为“1”,MCU才响应。
          全局中断标志位为“1”,MCU响应可屏蔽中断,每个中断源对应一个各自独立的中断允许标志位。当某个中断允许标志位为“0”时,表示MCU不响应该中断的中断申请。
       MCU响应一个可屏蔽中断源的中断请求的条件是:响应A中断 = 全局中断允许标志位 AND 中断A允许标志 AND 中断A标志;这些标志位全部要置“1”。
       所以,只有当全局中断允许标志位为“1”(由用户软件设置),中断A允许标志位为“1”(由用户软件设置),中断A标志位为“1”(符合中断条件时由硬件自动设置或由用户软件设置)时,MCU才会响应中断A的请求信号(如果有多个中断请求信号同时存在的情况下,还要根据中断A的优先级来确定)。


    转载于:https://www.cnblogs.com/meihao1203/p/10259978.html

    展开全文
  • 中断的应用--程序断点

    千次阅读 2017-05-25 16:01:18
    1.1 程序断点程序断点就是处理器的指令断点。通俗的说,就是当程序运行到某个函数的某个地方时就会停下来。程序断点又可以分为软件程序断点和硬件程序断点。 - 软件程序断点:处理器在运行的过程中如果遇到了一条...

    1 断点的分类

    断点分为程序断点和数据断点。

    1.1 程序断点

    程序断点就是指处理器的指令断点。通俗的说,就是当程序运行到某个函数的某个地方时就会停下来。程序断点又可以分为软件程序断点和硬件程序断点。
    - 软件程序断点:处理器在运行的过程中如果遇到了一条非法或无效的指令,就会出现一个异常中断,软件程序断点就是利用这个特性实现的。当设置了一个软件程序断点时,调试工具就在我们所想设置的内存位置上放置一条非法的指令,同时将被替换的指令保留起来。当程序运行到了被非法指令替换的地方,处理器所产生的异常中断一方面在中断服务程序中恢复被替换的指令,另一方面将控制权交给调试工具。
    - 硬件程序断点:硬件程序断点是通过配置处理器的断点寄存器的方式实现的。当处理器运行到断点寄存器所指示位置的指令时就会产生中断,调试工具通过中断是我们获得干预的机会。

    1.2 数据断点

    数据断点与硬件程序断点很相似,需要在处理器的寄存器中设置所监视数据变量的内存地址。当被监视的内存单元被修改时处理器将产生中断,调试工具利用这一中断让我们获得检查程序的机会。

    2 中断的应用:程序断点

    2.1 程序断点的基本概念

    • 断点指的是调试工具用于暂停代码执行的指令位置
    • 断点的实现原理为处理器的中断支持
      • 软件断点:利用非法指令异常产生中断实现
      • 硬件中断:利用中断寄存器的特性产生中断实现

    2.2 程序断点的实现原理

    1. 获取原程序指定行对应的代码地址
    2. 把代码地址中的指令替换为中断触发指令
    3. 在中断服务程序中将控制权交给调试程序
    4. 调试程序读写源程序上下文信息
    5. 调试程序将代码地址中的指令还原
    6. 原程序从断点处继续向下执行
      这里写图片描述

    修改记录


    时间动作
    2017.5.25首次上传

    参考资料


    唐老师 — 狄泰软件学院 — 十二月提升计划

    李云 — 《专业嵌入式软件开发 全面走向高质量编程》

    展开全文
  • 发生中断事件时的中断断点 A、 引起中断的那一个事件 B、 中断控制器向处理器发出的信号 C、 正在执行的程序的当前指令 D、 中断处理程序入口的第一条指令 答案:C 目前没找到具体出处 欢迎补充 6、(5分...
    • 1、(5分)

      控制和状态寄存器用于控制处理器的操作,在某种特权级别下可以访问、修改。下列哪一个不是控制和状态寄存器

       

       A、 

      程序计数器(PC) 

       B、 

      指令寄存器(IR) 

       C、 

      程序状态字(PSW) 

       D、 

      通用寄存器(EAX) 

    答案:D

    • 2、(5分)

      x86系列处理器提供了4个处理器特权级别,又称特权环。下列哪一个特权级别最高?

       

       A、 

      R0 

       B、 

      R1 

       C、 

      R2 

       D、 

      R3 

    答案:A

    • 3、(5分)

      下列对中断和异常的描述中,哪一个是正确的?

       

       A、 

      中断和异常都是由正在执行的指令引发的 

       B、 

      中断是由外部事件引发的,而异常则是由正在执行的指令引发的 

       C、 

      异常是由外部事件引发的,而中断则是由正在执行的指令引发的 

       D、 

      中断和异常都是由外部事件引发的 

    答案:B

    • 4、(5分)

      中断和异常都是改变执行程序的控制流,处理完成后再恢复执行,但是二者是有区别的。下列选项中,哪一项是异常?

       

       A、 

      运行过程中出现了栈溢出 

       B、 

      定时器到达规定的时间点 

       C、 

      右击鼠标 

       D、 

      存储器校验出错 

    答案:A

    • 5、(5分)

      中断机制是计算机系统中的核心机制之一。发生中断事件时的中断断点是指

    •  

       A、 

      引起中断的那一个事件 

       B、 

      中断控制器向处理器发出的信号 

       C、 

      正在执行的程序的当前指令 

       D、 

      中断处理程序入口的第一条指令 

    答案:C

    目前没找到具体出处 欢迎补充

    • 6、(5分)

      中断向量(中断描述符)的作用非常重要,因为它保存了

       

       A、 

      中断码和中断处理程序入口地址 

       B、 

      中断断点的地址和中断码 

       C、 

      中断码和程序状态字 

       D、 

      程序状态字和中断入口程序地址 

    答案:D

    • 7、(5分)

      函数fork()属于下列哪一类系统调用?

       

       A、 

      进程控制类 

       B、 

      文件操作类 

       C、 

      设备管理类 

       D、 

      信息维护类 

    答案:A

    fork()函数为创建一个新进程,为进程控制类

    • 8、(5分)

      系统调用扩充了机器指令,增强了系统功能,方便了用户使用。下列哪一项功能不属于系统调用?

       

       A、 

      搜索数组中的最大数 

       B、 

      用户程序创建一个新进程 

       C、 

      打开磁盘上的一个文件 

       D、 

      向某一个进程发送一个消息 

    答案:A

    • 9、(5分)

      系统调用与一般过程调用是不同的,下列描述中哪一个是正确的?

       

       A、 

      过程调用和系统调用均位于内核态 

       B、 

      过程调用和系统调用均位于用户态 

       C、 

      过程调用时调用程序位于用户态,被调用程序位于内核态 

       D、 

      系统调用时调用程序位于用户态,被调用程序位于内核态 

    答案:D

    • 10、(5分)

      在操作系统中,只能在内核态下运行的指令是

       

       A、 

      算术运算指令

       B、 

      I/O指令

       C、 

      移位指令

       D、 

      禁止中断指令

       E、 

      陷入指令

       F、 

      设置时钟

    答案:BDF

    I/O需要系统调用特权命令来管理

    中断类指令必须运行在内核状态下才能确保系统安全

    设置时钟应为特权指令,否次用户随意更改时钟会使系统处于危险状态

    • 11、(5分)

      中断和异常都是将正常执行的程序打断,完成处理后再恢复执行,但是二者是有区别的。下列选项中,哪一些属于中断事件?

       

       A、 

      浮点溢出

       B、 

      电源掉电

       C、 

      访问内存时地址越界

       D、 

      内存校验错

       E、 

      网卡适配器缓存满

       F、 

      用户程序试图执行特权指令

    答案:BDE 解释摘自博主闲狗博客

    • 12、(5分)

      从用户态转换到内核态是通过设置程序状态字(PSW)寄存器的某一位(某几位)完成的。F

      正确 错误

    • 13、(5分)

      操作系统所能执行的指令集合是特权指令集合。F

    • 正确 错误

    • 操作系统能执行特权指令也能执行非特权指令

    • 14、(5分)

      中断系统中保存现场的工作都是由硬件部件完成的。F

      正确 错误

    • PC和PSW等重要的寄存器内容由硬件保存,通用寄存器的内容等由中断处理程序即软件保存

    • 15、(5分)

      系统调用的功能是由内核函数实现的。T

    • 系统调用需要进入内核态执行

      正确 错误
    • 16、(5分)

      系统调用执行时,参数传递可以利用通用寄存器完成。T

      正确 错误

     

    展开全文
  • 中断机制是操作系统中极为重要的一个部分。操作系统在管理输入输出设备时,在处理外部的各种事件时,都需要通过中断机制进行处理。所以也有人把操作系统称为是由“中断驱动”或者“(中断)事件驱动”的。 由于中断机制...

    中断机制是操作系统中极为重要的一个部分。操作系统在管理输入输出设备时,在处理外部的各种事件时,都需要通过中断机制进行处理。所以也有人把操作系统称为是由“中断驱动”或者“(中断)事件驱动”的。

    由于中断机制的实现必须依靠相关的硬件支持,所以硬件中断装置是操作系统运行环境中的一个极为重要的组成部分。中断的实现是硬件中断装置和相应的中断处理软件共同完成的。在本节中,首先介绍中断的概念,然后叙述中断系统的工作原理,最后分析中断处理的过程。

    一、中断与异常的概念

    1、中断与异常

    (1)中断的概念

    所谓中断是指处理器对系统中或系统外发生的异步事件的响应。异步事件是指无一定时序关系的随机发生的事件,如外部设备完成了数据传输任务,某一实时控制设备出现异常情况等。

    “中断”这个名称来源于:当发生某个异步事件后,中断了处理器对当前程序的执行,而转去处理该异步事件(称作执行该事件的中断处理程序)。在该异步事件处理完了之后,处理器再转回原程序的中断点继续执行。这种情况很像我们日常生活中的一些情况。例如,某人正在看书,此时电话响了(异步事件),于是用书签记住正在看的那一页(中断点),再去接电话(响应异步事件并进行处理),接完电话后再从被打断那页继续向下看(返回原程序的中断点执行)。

    最初,中断技术是用于向处理器报告某个“设备已完成操作”的一种手段,以免处理器不断地测试设备状态而消耗大量宝贵的处理器时间,后来,中断技术的应用越来越广泛。中断是所有要打断处理器的正常工作次序,并要求其去处理某一事件的一种常用手段。我们把引起中断的事件称为中断事件或中断源;中断源向处理器发出的请求信号称为中断请求;而把处理中断事件的程序称为中断处理程序;发生中断时正在执行的程序的暂停点叫作中断断点;处理器暂停当前程序转而处理中断的过程称为中断响应中断处理结束之后恢复原来程序的执行被称为中断返回

    一个计算机系统提供的中断源的有序集合一般被称为中断字,这是一个逻辑结构,在不同的处理器有着很不相同的实现方式。在一台计算机中有多少中断源,是根据各个计算机系统的需要安排的。 Intel的x86微处理器能处理256种不同的中断。

    为了使得中断装置可以找到恰当的中断处理程序,专门设计了中断处理程序入口地址映射表,又称中断向量表。表中的每一项称为一个中断向量,主要由程序状态字PSW和指令计数器PC的值组成。不同性质的中断源需要用不同的中断处理程序来处理,也就是对应不同的中断向量。通过中断向量,可以找到中断处理程序在内存中的位置。

    中断技术解决了主机和外设并行工作的问题,消除了因外设的慢速而使得主机等待的现象,为多机操作和实时处理提供了硬件基础。一般来说中断具有以下作用。

    能充分发挥处理器的使用效率。因为输入输出设备可以用中断的方式同处理器通信,报告其完成处理器所要求的数据传输的情况和问题,这样可以免除处理器不断地査询和等待,从而大大提高处理器的效率。

    提高系统的实时能力。因为具有较高实时处理要求的设备,可以通过中断方式请求及时处理,从而使处理器立即运行该设备的处理程序(也是该中断的中断处理程序)。所以目前的各种微型机、小型机及大型机均有中断系统。

    从用户的角度来看,中断正如字面的含义,即正常执行的程序被打断,当完成中断处理后再恢复执行。这完全由操作系统控制,用户程序不必做任何特殊处理。这一过程可以用图24示意。

    (2)异常

    最早中断和异常并没有区分,都把它们叫作中断。随着它们的发生原因和处理方式的差别愈发明显,才有了现在的中断和异常之分。

    中断是由外部事件引发的,而异常则是由正在执行的指令引发的

    2、中断与异常的分类

    无论是哪种计算机都有很多中断源,不同的系统依据这些中断源引起的中断特点等方面的不同,划分为若干个不同中断类型。这种分类在不同的系统中往往差异比较大。

    典型的中断包括

    1)时钟中断,由处理器内部的计时器产生,允许操作系统以一定规律执行函数,如时间片到时、硬件实时钟到时等;

    2)输人输出(IO)中断,由LO控制器产生,用于通知一个L/O操作的正常完成或者发生的错误;

    3)控制台中断,如系统操作员通过控制台发出命令等;

    4)硬件故障中断,由掉电、存储器校验错等硬件故障引起等

    异常发生的时间以及位置具有确定性,典型的异常包括:

    1)程序性中断,在某些条件下由指令执行结果产生,例如算术溢出、被零除、目态程序试图执行非法指令、访问不被允许访问的存储位置、虚拟存储中的缺页等;

    2)访管指令异常,目的是要求操作系统提供系统服务。

    由于中断与异常的硬件机制工作原理类似,为方便起见,之后的叙述中以中断涵盖两个概念

    二、中断系统

    中断系统是现代计算机系统的核心机制之一,它不是单纯的硬件或者软件的概念,而是硬件和软件相互配合、相互渗透而使得计算杋系统得以充分发挥能力的计算模式。

    中断的发生会激活很多事件,这包括硬件和软件的方面的事件,所以对于整个中断事件的接收、响应和处理需要有计算机的硬件和软件两方面的配合,共同完成。

    可以把中断系统分为两大组成部分:中断系统的硬件中断装置和软件中断处理程序。硬件中断装置负责捕获中断源发出的中断请求,并以一定的方式响应中断源,然后将处理器的控制权移交给特定的中断处理程序。中断处理程序则针对对中断事件的性质而执行相应的系列操作。

    1、中断请求的接收

    中断系统如何接收中断源的中断请求,这往往因机器而异。不过从原理上讲,它们是通过在计算机硬件的中断逻辑线路和中断寄存器实现的

    中断逻辑线路用于接收中断信号,并把收到的中断信号寄存在线路中的硬件触发器中。在中断逻辑线路中有若干个专门接受中断信号的触发器,每个触发器称为一个中断位。通常规定,一个触发器的值为1时,表示该触发器收到中断信号,为0时表示无中断信号。这些触发器的全体称为中断寄存器,所以中断寄存器是由若干个中断位组成的。

    在有的计算机中,为了不丢失和区分每个中断信号,对每个中断源都用一个固定的触发器来寄存中断信号。而在有的计算机中,对某些没有得到响应的、不重要的中断信号,就不予保存下来,而把它丢弃掉。

    2、中断响应

    中断请求的响应机制如下。处理器的控制部件中设置有中断信号扫描结构,它在每条指令执行周期内的最后时刻扫描中断寄存器,查看是否有中断信号到来。若无中断信号,处理器就继续执行下一条指令。若有中断到来,处理器接收由硬件中断装置发来的中断向量代号。

    接着,处理器开始为后续的软件处理中断做必要的准备工作:保存中断点的程序执行上下文环境(又称保存现场)。这是因为中断处理结束之后,处理器还要继续被中断程序的执行,所以原有中断点程序执行的所有必要信息都必须保存下来。这个上下文环境通常包括程序状态字PSW、程序计数器PC中的下一条指令位置和一些寄存器的值。它们一般保存在个专门的系统堆栈中。处理器状态此时被切换到管态。

    处理器根据中断向量代号查询中断向量表,获得与该中断源相联系的中断处理程序的入口地址,并将PC置成该地址。随后控制权转移到中断处理程序。

    整个中断请求的响应过程,如图25所示。

    图25中的中断请求响应的工作过程是:

    ①处理器接收中断信号;

    ②保护现场,将中断断点的程序状态字PSW和程序计数器PC值存入系统堆栈;

    ③分析中断向量,取得中断处理程序的入口地址;

    ④将处理器的PC值置为中断处理程序的入口地址;

    ⑤调用中断处理程序。

    3、中断处理

    这里讨论在中断信号已经被中断系统的硬件中断装置接收和响应之后,对应的软件中断处理程序进行中断处理的具体过程

    在处理器的控制权转移到中断处理程序之后,中断处理程序开始工作,其中包括检查I/O相关的状态信息,操纵I/O设备或者在设备和内存之间传送数据等。具体的中断处理程序的内容,完全是依据中断请求的类别和要求的不同,而分别设计的。

    在中断处理程序结束工作之后,处理器会检测到一条中断返回指令。在执行中断返回指令时,处理器会把原先被中断的程序的上下文环境从系统堆栈中恢复。处理器状态也从管态恢复成被中断时的目态。整个中断处理结束。处理器开始一个新的指令周期,继续执行原来被中断的程序。

    上述整个中断信号的接收、响应和处理过程,可以简要地归纳为:接收和响应中断,保护中断断点现场,分析中断向量,调用中断处理程序,中断处理结束恢复现场,原有程序继续执行

    4、几种典型中断的处理

    这里介绍几种计算机系统中比较典型的中断处理,包括I/O中断、时钟中断、硬件故障中断、程序性中断和系统服务请求(自愿性中断)

    (1)I/O中断

    I/O中断一般由I/O设备的控制器或者通道发出。I/0中断通常可分成两大类:I/O操作正常结束以及I/O异常。对于前者来说,如果要继续进行I/O操作,则需要在准备好以后重新启动I/O。若请求I/O的程序正处于等待I/O的状态,则应该将其唤醒。对于后者,常常需要重新执行失败的I/O操作,不过这个重试的次数常常有一个上限,因为错误可能由硬 件损伤引起,当重试次数过大的时候,系统将判定硬件故障,并通知管理员。

    比如,我们平常在PC上用 CD-ROM观看VCD或DVD的碟片时,有时会碰到读碟出错。在重复读碟几次之后,如果读碟岀错继续,系统就会停止读碟,并报告岀错,甚至退岀碟片。

    (2)时钟中断

    时钟中断是计算机系统多道能力的重要条件之一(有关时钟的概念,参看本章的后面部分)。时钟中断处理程序通常要做较多的与系统运转、管理和维护相关的工作,它们对于整个系统是非常重要的,主要内容如下。

    维护软件时钟。系统有若干个软件时钟,控制着定时任务以及进程的处理器时间配额,时钟中断需要维护,定时更新这些软件时钟。

    处理器调度。维护当前进程的时间片软件时钟,并在时间片到时后运行调度程序选择下一个被调度的进程。

    控制系统定时任务。通过软件时钟和调度程序定时激活一些系统任务,例如监测死锁、进行系统记账、对系统状况进行审计等。

    实时处理,例如产生系统“心跳”,激活系统看门狗等。

    当然,在不同的操作系统设计中,时钟中断处理的内容也不一样。很多系统的时钟中断通常只处理软件时钟,并在一定条件下激活系统调度程序。

    一般来说,调度程序并不在时钟中断里,因为时钟中断的优先级往往比较高,而且频繁发生,如果时钟中断处理时间过长,就会使一些较低优先级的中断丢失。

    (3)硬件故障中断

    硬件故障一般是由硬件的问题引起的,排除此类故障通常需要人工的干预,例如复位硬件或者更换设备等。

    硬件故障中断处理程序需要做的工作是保存现场,使用一定的手段警告管理员并提供些辅助的诊断信息。此外在高可靠的系统中,中断处理程序还需要评估系统的可用性,并尽可能地恢复系统。

    例如,使用 WindowsXP的系统在关键硬件发生故障时,会出现系统蓝屏死机。这时操作系统实际上进入了相应的故障处理程序,并发现这个故障是不可恢复的,于是在屏幕上打印出了发生故障时的程序位置(通常在某个管态驱动程序中),并且开始进行内存转储(将定范围的内存内容写到磁盘上去,实际上是系统发生故障时的全系统“快照”),以备日后进行程序调试级故障诊断。

    (4)程序性中断

    程序性中断多数是程序指令出错、指令越权或者指令寻址越界而引发的系统保护。它的处理方法可以依据中断是否可以被用户程序自行处理,而分成两类。

    第一类为程序性中断,只能由操作系统完成。这种情况多为程序试图做自己不能做的操作引起的系统保护,例如访问合法的但是不在内存的虚地址引发的缺页中断等。这时候的处理一般由操作系统的相关扩展功能模块完成。

    第二类为程序性中断,可以由程序自己完成。例如一些算术错误。因为不同的程序可能有不同的处理方法,所以很多操作系统提供由用户自行处理这类中断的“绿色通道”。一般来说,系统调试中断,如断点中断、单步跟踪等,用以支持各种程序的调试,是可以被用户程序处理的。

    (5)系统服务请求(自愿性中断)

    系统服务请求一般由处理器提供的专用指令(又称访管指令)来激发。例如x86处理器提供int指令,用来激发软件中断,其他的不少处理器则专门提供系统调用指令 syscall执行这些指令的结果是系统被切换到管态,并且转移到一段专门的操作系统程序处开始执行。这种指令的格式通常是指令名加上请求的服务识别号(有时是中断号)。操作系统利用处理器提供的这种接口建立自己的系统服务体系。处理器一般不负责定义系统调用所传递的参数格式。因为不同的系统会提供不同的系统调用,而不同的系统调用需要不同的参数,所以给系统服务例程传递什么样的参数,以及如何传递这些参数都由操作系统规定。

    这方面的实例可以看一下 MS-DOS定义的2h号中断的系统服务功能以及参数列表,这可以在有关MS-DOS程序设计的书的附录中查到。

    现代操作系统一般不会提供直接使用系统调用指令的接口,通常的做法是提供一套方便、实用的应用程序函数库(又称为应用程序设计接口API。这些函数从应用的较高层面重新封裝了系统调用,一方面屏蔽了复杂的系统调用传参问题(用汇编语言传参),另一方面是高级语言接口,有助于快速开发。还有的系统在更高层面提供了系统程序设计的模板库和类库。

    三、中断优先级、中断屏蔽与中断嵌套

    1.多级中断与中断优先级

    现代的微处理器都提供有多级中断系统,从硬件上看,多级中断系统表现为有多根中断请求线从不同设备连接到中断逻辑线路上。连接在不同中断请求线上的中断信号,表示它们有不同的中断级别。中断信号的级别代表了该中断信号是否具有被优先处理的特权,以及这个特权的大小。可见,在多级中断系统中,硬件决定了各个中断的优先级别。

    多级中断的第一个作用是,对各类中断信号依据其紧急程度和重要性划分级别。在需要处理的各类中断信号中,它们的紧急程度和重要性是不同的。系统当然应该优先处理最紧急的或者最重要的中断信号。而中断信号本身的紧急或重要性,则由该中断的级别的高低来标识。在多级中断系统中,在同时有多个中断请求时,处理器接收中断优先级为最高的中断(如果其中断优先级高于当前运行程序的中断优先级时),而忽略其中断优先级较低的中断。比如,计算机的电池即将没有电了,这种掉电中断显然应该有非常高的优先级别。

    多级中断的第二个作用是,解决如果有重要程度相当的多个中断信号同时到达时,如何选择首个被处理的中断信号的问题。比如,在一套计算机系统上接有一台打印机和一台扫描仪,在打印机发出了打印完毕的信号的同时,扫描仪也发出了扫描完毕的信号。在一般情况下,这两个中断信号具有同等的优先级。

    如果在同一中断级中的多个设备接口中同时都有中断请求时,一般有两种办法可以采用

    1)固定的优先数:给每个设备接口安排一个不同的、固定的优先顺序。比如以该设备在总线中的位置来定优先顺序,离处理器近的设备,其优先数高于离处理器远的设备。

    2)轮转法:用一个表格,依次轮转响应,这是一个较为公平合理的方法。

    2、中断屏蔽

    在整个中断系统中,可以允许或者禁止中断系统对某些类别中断的响应。我们已经知道,在程序状态字PSW中设计有中断屏蔽位,主机是否允许响应或禁止某些中断,则由PWS中的中断屏蔽位决定,这些屏蔽位标识了被屏蔽的中断类或者中断。

    一旦某个I/O中断被程序状态字PSW中的中断屏蔽位加以屏蔽,那么此时即使有I/O中断信号,处理器也不予响应。

    对于被屏蔽的中断信号,通常仍然保存在中断寄存器中,有些可以在以后继续响应,而有些将被简单地丢弃。

    很显然,有了中断屏蔽,中断系统中原先由硬件事先给定的中断优先级,就可能发生改变。例如,在一个计算机系统中,由CD-ROM到硬盘的数据传送的优先级别低于硬盘内部的数据操作。但是,如果一旦机器正在进行 CD-ROM到硬盘的数据传送,对硬盘内部的其它数据操作就被暂时屏蔽,这些硬盘操作必须在该 CD-ROM到硬盘的数据传送结束之后才能进行。换句话说,此时 CD-ROM到硬盘的数据传送的优先级别高于硬盘内部的数据操作。

    还有一类中断信号是不可屏蔽的,一般这类中断信号属于机器故障中断。比如内存奇偶校验错,以及掉电等使得机器无法继续操作一类的故障。一旦发生这类不可屏蔽的中断,不管管程序状态字中的屏蔽位是否建立,处理器都要立即响应这类中断,并进行处理。

    3、中断嵌套

    一般的计算机系统中都有多个中断源,在这样的系统中,如果一个中断的处理过程中又发生了中断,那么将引起多个中断处理问题。对多个中断的处理策略一般有如下两种。

    对于多个中断进行处理的第一种策略是,正当处理一个中断时禁止其他中断,此时系统将对任何新发生的中断置之不理。在这期间发生的中断将保持挂起状态。当处理器再次允许中断时,这个新的中断信号会被处理器检测到,并做出处理。

    这种处理方法可以用软件简单地实现,只要在任何中断处理之前使用禁止中断指令,在处理结束之后,再使用开放中断指令就可以了。这样,所有的中断将严格地按照发生的顺序被处理。不过,这样的处理策略没有考虑到中断信号的紧急程度,无法达到比较严格的中断处理时间要求。

    对于多个中断进行处理的第二种策略是中断嵌套。即中断按照优先度分级,允许优先级较高的中断打断优先级较低的中断处理过程,于是引起中断处理的嵌套,如图26所示。

    只要合适地定义中断的优先级别,第一种策略的弊端大都可以被第二种中断嵌套策略所克服。

    由于在中断嵌套中优先级较高的中断可以打断优先级较低的中断处理过程,因此必须把优先级较低的中断处理过程的现场也保存起来。这些被保护现场的次序,与恢复现场的次序正好相反,所以应该采用堆栈作为现场保护区 域。堆栈应该处于系统空间中,以防止被破坏,又称为系统堆栈。

    在中断发生时,硬件中断装置将程序状态字PSW、指令计数器PC的值以及其他重要现场信息压入系统堆栈。如果发生中断嵌套,被中断的处理的程序状态字PSW、指令计数器PC的值,以及其他重要现场信息也被压入系统堆栈。

    每发生中断嵌套一次,就保护一次被中断的处理过程的现场,进行相关的压栈操作。而每结束一层嵌套的处理时,就从系统堆栈中弹出对应的程序状态字PSW、指令计数器PC的值以及其他重要现场信息,逐层恢复现场。

    作为中断嵌套策略的一个例子,考虑在一个系统中存在总线、硬盘以及扫描仪三个设备同时操作时的处理情况。假定三者的中断优先级依次分别为9、5、3,其中数字大的具有较高的优先级。扫描动作的处理从某个时间开始,它的处理时间较长,其间发生了一次网络数据的传送请求,于是扫描仪中断处理被打断,处理器转而去处理网络通信时的总线服务请求。在处理网络通信的总线服务请求期间,用户恰好提交了一个硬盘存储文件的请求。但是因为硬盘中断优先级较低,于是硬盘中断的处理就被推迟到总线请求处理完之后,同时由于它的优先级高于扫描仪的中断,所以对硬盘中断的处理优先于对扫描仪中断的处理。在硬盘中断处理完毕之后,处理器才回到原先对扫描仪中断处理的程序上。这个中断处理的过程中发生了三重中断嵌套。

     

    展开全文
  • 文章目录第八章 中断系统8.1 中断的基本概念8.1.1 中断概念的引入及描述中断方式示意(以输入中断为例)**中断**的定义8.1.2 中断源及中断分类中断的分类8.1.3 中断类型码中断类型码中断向量中断向量表中断向量表的...
  • 中断优先级

    千次阅读 2021-07-25 04:32:43
    为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。在实际系统中,常常遇到多个中断源同时请求中断的情况,这时CPU必须确定首先为哪...
  • 如果要你讲一下中断,你会怎么去描述一个中断的触发流程呢? 最基础的可能就是:保护现场 - 中断处理 - 恢复现场... 那保护现场做了什么事情?中断处理需要注意什么事情?恢复现场又做了什么事情? 相对应的,...
  • 软件调试之硬件断点

    2020-11-18 18:27:38
    硬件断点 1.调试寄存器 IA-32处理器定义了8个调试寄存器,分别为DR0~DR7。在32位模式下,它们是32位的;在64位模式下,它们是64位的。如下图: ...DR4、DR5 是保留的。...4个32位调试地址寄存器(DR...DR7定义断点中断
  • Keil调试笔记:断点命令

    千次阅读 2020-02-08 22:37:29
    如何你对单纯的通过硬件断点、在内存窗口和观察窗口下调试代码不满意的话,可以尝试一下中断命令,你可以设置进入中断的“条件”。这个“条件”可以是执行多少次后才出发中断,读写某个内存地址或地址范围时触发中断...
  • 如果你做嵌入式开发,那你一定得对程序断点(program ...程序断点就是处理器指令断点,通俗的说就是:当程序运行到某个地方时,我们希望程序停下来,即程序“断”了!停下来的目的,就是给我们检查当前程序运行
  • 中断

    2020-04-17 20:36:55
    中断浅析 CPU响应中断之后,经过某些操作,转去执行中断服务程序。...为了保证在中断服务程序执行完毕能正确返回原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。断点可以压入堆栈...
  • ftp服务器 断点续传

    2021-07-31 00:25:30
    浅谈FTP服务的几个知识点实现断点续传的条件有三个:1.FTP服务器要能提供断点续传的功能。目前包括IIS和大部分的FTP架设软件都有了这个功能。2.FTP的登录软件要有断点续传的功能。像FlashFXP和CuteFTP都有这一功能,...
  • 1、这里的 “秒传”,是:当用户选择上传一个文件时,服务端检测该文件之前是否已经被上传过,如果服务器已经存有该文件(完全一样),就立马返回前端 “文件已上传成功”。前端随即将进度条更新至100%。 这样给...
  • 指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续...
  • 使用断点调试代码

    千次阅读 2019-05-13 11:19:43
    简单地说,断点调试是自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。...
  • 断点续传,在我们生活中起了很大作用,也帮我们节省了很多时间,就是信号中断后(掉线或关机等),下次能够从上次的地方接着传送(一般下载或上传),不支持断点续传就意味着下次下载或上传必须从零开始.举个简单的例子...
  • vs程序调试时断点的使用

    千次阅读 2020-09-28 22:59:37
    VS程序调试时断点的使用 断点的使用,有利于我们在对于较长复杂的程序进行部分功能的调试,原因是:程序在运行到断点时会自动停止,之后需手动进行调试,这样就有助于我们观察代码的运行,以下是我总结的断点的使用...
  • 所谓断点续传,其实只是下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点...
  • configMAX_SYSCALL_INTERRUPT_PRIORITY 中断优先级设置问题 从CortexM角度 Cortex-M构架自身最多允许256级可编程优先级(优先级配置寄存器最多8位,所以优先级范围从0x00~0xFF), 是绝大多数微控制器制造商只是使用...
  • 同时性两个或多个事件在同一时刻发生,并发性两个或多个事件在同一时间段发生。 在同一时刻或同一时间段内完成两种或两种以上性质相同或不同的功能,只要在时间上互相重叠,就存在并行性。 并行性体现在不同...
  • 2.中断处理

    2020-08-09 22:00:40
    其实这里所说的中断指的是外中断,内中断统称为异常 内外中断的区别: 内中断中断与CPU正在执行的指令有关 外中断:与CPU执行的指令无关,中断来自外部硬件 #mermaid-svg-OTPdzad02sGJCM8t .label { font-...
  • QT断点调试

    千次阅读 2019-07-08 16:04:40
    然后在右侧有当前活动变量,在运行到箭头所代码时的值,我们可以看变量的值是否和预期一直从而更快更方便地找到bug所在。 右侧活动变量的实时值: 当然也可以用qDebug输出, 但我觉得没必要?? 2、完全...
  • 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧...中文名中断外文名Interrupt Request分类中断装置和中断处理程序相关概念程序状态字和向量中断等系统功能实现中断响应和中断返回等中断定...
  • 对于“中断是异步的,异常是同步的“的理解 首先弄懂一个概念,那就是如果CPU检测到多个中断请求的话...中断是异步的,是所有中断来的信号都是记录在中断寄存器中的,CPU在执行完一道指令之后,如果enable interr...
  • 中断简述:所谓中断就是CPU在正常执行程序的时候,由于内部/外部事件的出发、或由程序预先设定而引起CPU暂时中止当前正在执行的程序,保存被执行程序相关信息到栈中,转而去执行为内部/外部事件、或由程序预先设定...
  • 最近在使用STM32F3芯片的时候,遇到这样一个问题:如果外部中断来的频率足够快,上一个中断没有处理完成,新来的中断如何处理? 在调试时,发现有中断有 挂起、激活、失能等状态,考虑这些状态都是干啥用的呢!他们...
  • 重要声明: 以下代码有粘贴 截取他人劳动成果的成分 如有...它能使CPU在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行CPU原来的工作。引起中断的原因或者说发出中断请求的
  • 中断处理过程

    万次阅读 2019-08-13 16:05:45
    中断全过程的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程。 执行过程 大体上可以把中断全过程分为5个...
  • IO方式-程序中断方式

    2021-07-01 16:01:06
    不同的I/O中断请求需要不同的中断服务程序处理 ...2、保存断点 3、引出中断服务程序,根据硬件排队器选出中断判优的中断响应,通过中断向量地址形成部件形成向量地址。根据向量地址可以找到中断向量(中断
  • 保护程序断点;b.保存各寄存器内容。书上说: a由中断隐指令完成,b由中断服务程序完成 我理解为:ab都属于保护现场,只是a是在中断周期执行的,对吗? (类似于“MAR,MDR功能属于主存,却制作在CPU里。” 这种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,715
精华内容 7,086
关键字:

中断断点是指

友情链接: 20051111111110.rar