ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【操作系统】中断

2022-07-25 17:04:52  阅读:160  来源: 互联网

标签:DMA 优先级 操作系统 中断 IO cpu 设备


写在前面

  本系列的文章是博主边学边记录的,可能不是特别的正确,因为会加上博主自己的理解,仅供参考。

正文:

  在上一篇中,说到了中断,于是呢,我又去看看关于中断的相关章节,整理出一篇博文来。

 

 1.为什么要有中断

    中断在操作系统中有着特殊且重要的地位,中断是多道程序得以实现的基础,没有中断,就不可能有多道程序。因为进程之前的切换时通过中断来完成的。另一方面来说,中断也是设备管理的基础。

    为了提高处理机的利用率和实现cpu与IO设备的并行执行,也必须有中断基础的支持。 

 

 2.中断向量表

    为了处理上方便,通常为每种设备配以相应的中断处理程序,并把中断处理程序的入口地址放在中断向量表的一个表项中。且为每一个设备的中断请求规定一个中断号,它直接对应于中断向量表中的一个表项。

    【也就是说每个设备有一个中断程序,这个中断程序呢,又放在中断表中,如何却别不同设备的中断程序呢,通过中断号去区分

 

 

 

 

  

 

 

 

 

 

 

  上面仅仅是一个潦草的图哈~

当IO设备发来中断请求信号时,由中断控制器确定改请求的中断号,根据改设备的中断号去查找中断向量表从中获取到设备中断处理程序的入口地址,转去执行中断处理程序。

3.中断优先级

  中断信号源非常多,每个中断源对于服务要求的紧急程序并不相同。为此,系统需要为他们分别规定不同的优先级,所以就出现了中断优先级的概念。

4.对于多中断源的处理

  1.屏蔽/禁止中断

  当处理机正在处理一个中断时,将屏蔽到其他所有中断,执行完改中断后再去顺序执行其他到来的中断程序。

  2.嵌套中断

  嵌套中断主要是针对与中断优先级而言,cpu总是先响应最高优先级的中断请求,高优先级的中断请求可以抢占正在运行的低优先级的中断的处理及。所以,会造成多重中断的情况。也就是嵌套中断。

  

 

5. 对IO设备的控制方式

  对设备的控制,早期使用轮询的可编程IO方式,后来发展为使用中断的可编程IO方式。接着又出现了DMA。无论怎么样,都是为了抽离出cpu和IO,减少cpu对IO控制的干预。

1.使用轮询的可编程IO方式

  顾名思义,启动输入设备输入数据的时候,cpu不断去询问,当有一个字符输入完成后,cpu立马将数据寄存器中的数据取出,送入内存单元中。这样便完成了一个字符的IO。接着去启动读取下一个数据。

  可以看到这种方式的效率非常低,再输入期间,cpu一直在询问,大部分事件都处于等待IO设备完成数据IO的循环测试中。不能去执行其他任务

 

 

 

 

    

 

2.使用中断的可编程IO方式

  中断的可编程IO方式实现了cpu与IO设备的并行工作,当某个进程要启动IO设备工作的时候,便由CPU向相应的设别控制器发出一条IO命令,然后立即回来执行当前程序。设备驱动程序按照这个指令去执行相应的程序。执行完毕后,向cpu发送一条中断信号。cpu再取走数据,放入内存指定位置中。总结下就是:

  1.cpu发出IO命令,继续工作

  2.设备驱动程序执行IO命令,输入数据

  3.输入完成,产生中断信号,通知cpu取走数据

注意:中断方式是以字节为单位读取数据的,没完成一个字节的IO时候,便产生一次中断。和上一种方式相比,省去了cpu不断询问的时间。

 

3.DMA

  DMA即直接存储器访问方式,DMA和中断方式不同地方在于:

  1.数据传输的基本单位是数据块。(在cpu和IO设备之前,每次传送至少一个数据块)

  2.传送的数据从设备直接送入内存,不需要cpu从数据寄存器中取出放入内存

  3.仅在传送数据块开始或者结束的时候,需要cpu干预。【整个数据的传送时在控制器的控制下完成的。】

  DMA控制器的组成

  1.主机与DMA控制器的接口

  2.DMA控制器与块设备的接口

  3.IO控制逻辑。

  

 

 

 书上的图

可以看出,关于对于IO设备的控制方式,从单个字符到按块去传输,都是为了提高cpu的利用率。

 

关于中断的相关的知识点就总结到这里了,如果错误欢迎指出哦~

 

不骄不躁,保持学习

 

标签:DMA,优先级,操作系统,中断,IO,cpu,设备
来源: https://www.cnblogs.com/freeyw/p/16517937.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有