[OS]11.9.2023 中断

编程入门 行业动态 更新时间:2024-10-25 12:29:22

[<a href=https://www.elefans.com/category/jswz/34/1771123.html style=OS]11.9.2023 中断"/>

[OS]11.9.2023 中断

中断向量表

CPU的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系,使得CPU根据中断信息可以找到要执行的处理程序。

中断信息中包含有标识中断源的类型码。根据CPU的设计,中断类型码的作用就是用来定位中断处理程序。

比如CPU 根据中断类型码 4,就可以找到4号中断处理程序的入口地址4x4=16,即0010H单元开始的4个内存单元。

可随之而来的问题是,若要定位中断处理程序,需要知道它的段地址和偏移地址,而如何根据 8位的中断类型码得到中断处理程序的段地址和偏移地址呢?

利用中断向量表。

CPU用 8 位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址

找到这个入口地址后的最终目的是用它设置CS和IP,使CPU执行中断处理程序。这个工作是由CPU的硬件自动完成的。CPU 硬件完成这个工作的过程被称为中断过程。

中断向量:指示中断服务程序的入口地址(中断处理程序指针)

中断向量表就是中断向量的列表。

中断向量表在内存中保存,其中存放着 256个中断源所对应的中断处理程序的入口地址。

所以中断向量表对于CPU来说只是一个起始地址,此地址开始每向上8个字节为一个中断向量。

我们的CPU上有一个idtr寄存器,它专门用于保存中断向量表地址,当产生一个中断时,CPU会自动从idtr寄存器保存的中断向量表地址处获取相应的中断向量,然后判断权限并跳转至中断处理函数。

由于CPU随时都可能检测到中断信息,也就是说,CPU 随时都可能执行中断处理程序,所以中断处理程序必须一直存储在内存某段空间之中。

中断向量表由操作系统初始化。

中断屏蔽字

中断屏蔽

1,中断屏蔽的意思是,在中断1的服务程序执行过程中,不允许被其他中断打扰;

2,按理,对于不同中断源,它有中断响应优先级,但这个是硬件决定的,无法修改;而如果要修改各个中断的优先级(即是否可以被打扰),可以通过中断屏蔽寄存器(人工设置该寄存器的值)来实现;这是提出中断屏蔽技术的原因所在;

3,中断屏蔽的具体原理是: 每个中断源都有一个中断屏蔽字(如16个bit); 当该中断被响应或执行该中断的服务请求时,对应中断源的屏蔽字设置到中断屏蔽寄存器;在中断响应时,cpu会根据屏蔽寄存器的值来判断是否响应该中断;

屏蔽技术介绍

1 中断屏蔽技术

  • 通过设置中断屏蔽字来改变中断服务优先级,从而提高系统设计和响应的灵活性;
  • 中断屏蔽字是通过中断屏蔽触发器来设置的;INTR 是中断请求寄存器;MASK 是中断屏蔽触发器(MASK=0,非门输出1时表示未屏蔽);

2 如何提出中断请求?

触发器D在完成后,提出中断请求。

能够提出中断的条件是,这个中断源没有被屏蔽掉

3 右图第2种方式实现中断屏蔽

中断屏蔽字的长度等于中断源的个数,屏蔽字的每个bit对应到每个mask的取值上;
若maski等于1,则表示第i个中断源的中断请求不会被响应(或被屏蔽);当然也无法提出中断请求;
中断屏蔽触发器的作用是 屏蔽某个中断源发出中断请求,也不能参加中断请求优先级的排队。

中断屏蔽字

屏蔽触发器对应的值是屏蔽字;
如,16个中断源,每个中断源都对应一个屏蔽字;
每个屏蔽字表示当中断源的中断服务程序在执行过程中,是否允许其他中断源提出中断请求
进入到排队器进行排队(即是否允许其他中断源提出中断请求);对应的bit位为1表示屏蔽,0表示不屏蔽;

如:1号中断源的中断服务程序在执行过程中,无论是1号还是2.。。。16号中断源提出的中断请求都不会进入中断排队器中排队(即1号中断源屏蔽其他中断源的中断请求);
但2号中断服务程序的执行过程中,允许1号中断源提出中断请求并被1号打断;
————————————————
版权声明:本文为CSDN博主「PacosonSWJTU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:

隐指令

中断隐指令指CPU响应中断之后,经过一系列“隐指令”,转去执行中断服务程序的一种操作。

  1. 保存断点

    方便执行完中断服务程序后,回到原中断点。

  2. 关中断

    为了保护中断现场(即CPU主要寄存器的内容)期间不被新的中断所打断,必须要关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。

    并不是所有的都在中断隐指令中由硬件自动地关中断,也有些的这一操作是由软件(中断服务程序)来实现的。中断服务程序一般用来保存通用寄存器和状态寄存器的内容。

  3. 引出中断服务程序

    实质就是取出中断服务程序的入口地址送程序计数器(PC)。

    针对向量中断和非向量中断,因此中断服务程序的方法是不相同的。

    向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了再判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单

缺页中断

指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由cpu的内存管理单元所发出的中断。

缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。

开中断、关中断、中断屏蔽

把CPU内部得处理机状态字PSW得中断允许位清除从而不允许CPU响应中断叫做关中断.

设置CPU内部得处理机状态字PSW得中断允许位从而允许CPU响应中断叫做开中断。

中断屏蔽就是指在中断请求产生之后,系统用软件方式有选择地封锁部分中断而允许其余部分得中断仍能得到响应。

中断过程

  1. 检测信号
  2. 隐指令:保存断点、关中断、内核态、通过中断向量找到程序地址
  3. 运行中断服务程序:保存屏蔽字和通用寄存器值;执行中断服务
  4. 返回原地址

CPU检测到中断信号,调用中断隐指令,由硬件(CPU)保存被中断程序的断点(PC和PSW),将CPU改为内核态并关中断,找到中断信号对应的中断向量,这个中断向量会指明中断服务程序入口地址。找到地址后执行中断服务程序,保存中断屏蔽字(是否允许被打扰),保存各通用寄存器的值,然后提供与中断信号对应的中断服务。

更多推荐

[OS]11.9.2023 中断

本文发布于:2023-11-15 18:53:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1604527.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:OS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!