【操作系统】中断
作者:互联网
写在前面
本系列的文章是博主边学边记录的,可能不是特别的正确,因为会加上博主自己的理解,仅供参考。
正文:
在上一篇中,说到了中断,于是呢,我又去看看关于中断的相关章节,整理出一篇博文来。
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