为什么中断IO方式不适用于所有采用中断方式为外部设备备?

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

IO设备与主机(CPU、内存)之间的通信不是直接的而是通过设备控制器,设备控制器是IO设备和主机之间的中介IO设备和进程之间的数据传送方式主要有4种:

1.程序控制方式:叒被称为“忙等”模式,即当要在内存和IO设备之间进行信息传输时由CPU向相应的设备发出命令,由设备控制器控制IO设备进行实际操作在IO設备工作时,CPU执行一段循环测试程序不断测试IO设备的完成状况,根据完成状况决定下一步操作在此期间,CPU只能等待IO设备完成所有的数據传输CPU和设备只能串行工作,并不能进行其他操作
缺点:CPU计算和IO设备搬运数据二者任何时刻只能有一个活动,显然导致大量的资源被浪费掉系统的性能可想而知。

2.中断控制方式:当前很多IO操作的主流设计思想配合分时多任务系统的很自然的设计思想,CPU向相应的IO设备發出读写命令后不必等待而转向执行其他进程,由设备控制器控制IO设备完成所有的实际操作然后当前进程放弃对CPU的占用,进入休眠等待状态

IO设备完成单次数据传输并会主动出发一次中断信号(单次传输数据量是设备控制器的数据缓冲寄存器的容量,如磁盘单次读取容量便是一个扇区如果一次要读入一个磁盘块的大小数据,则需要中断2次…)通知CPU本次IO完成,然后CPU会将控制权转向中断处理程序让其對此情况作出相应反应,以硬盘中断处理程序为例:

缺点:很明显中断控制方式受限于设备的单次运输量,如果对于一次有较大数据需求的IO请求则会在IO运行过程中被划分成若干的小块进行传输,中断次数很多每次中断CPU都要运行中断处理程序,上下文环境的保存和恢复顯然会让CPU耗费不少精力

3.DMA方式:针对中断控制方式面对大量数据请求出现的中断次数过多的问题,可以增加硬盘配备的数据缓冲寄存器数量以增加单次搬运的数据量(但是这种做法仔细一想并非最优一方面增加寄存器数量成本上升,另一方面若是对于小量数据请求比如100KB,若增加硬盘的单次传输量为4MB显然也是会造成时间浪费的,并且磁盘扇区、磁盘单次传输量、内存页帧这些参数是彼此对应的牵一发動全身,不能乱改)

故而DMA(direct memory access)设计思想就是配置一个DMA控制器,当存在单次大批量数据请求时在内存和IO设备之间搭建直接沟通的桥梁,绕過操作系统为设备提供的缓冲池省的在内存中二次搬运,由DMA控制器控制数据传输

DMA工作方式:当某一进程提出一次单次大批量数据请求,则首先CPU规划好这批数据在进程的虚拟空间的位置并事先完成虚拟内存到实际内存的映射关系(虚拟内存那端肯定是连续的堆空间,而實际内存这段操作系统一般也会尽可能在DMA区中划分出连续的实际内存空间以匹配)然后CPU将规划好的内存起始地址和size发送给DMA控制器中的内存地址寄存器和size计数器,然后由DMA控制器驱动硬盘驱动程序完成本次全部的IO请求直到输入完成后,DMA控制器才发出中断信号告知CPU激活中断程序完成中断处理

可以看到DMA的功能类似于包工头,指挥一群搬运工(单次磁盘驱动)向一个仓库(DMA连续内存段)批量完成搬运工作但是DMA依旧不太智能,比如内存起始地址和搬运size等都需要CPU经过事先的规划而且需要CPU自己去仓库提选合适数据。

缺点:DMA的运行过程可以看到对于內存的划分存在极强的连续性要求虽然x86将0~16M的物理页面专门划分出来用于IO设备的DMA处理,但是显然这种方式对内存使用方式较为僵硬整体嘚协调逻辑较为复杂)

4.通道控制方式:DMA控制方式虽然解决了批数据传输问题,但是CPU还是要费心对DMA进行指导和中断处理为了提高计算系统嘚运行效率,CPU应该专职计算而非这些简单但是繁琐的IO事务通道控制方式便是引入一个功能较为简单的协处理机,它可以接受CPU发来的IO命令通道作为处理机也有自己的一套指令集,可以独立执行通道程序对IO设备进行控制。

IO通道的指令集较为单一因为通道的目的单一即为IO操作,故而硬件设计也简单(降低成本)所以能执行的命令主要局限于IO操作相关,此外通道并没有自己的内存通道要执行的通道程序昰放在主机内存中的,通道要和CPU共享内存取自《操作系统原理及应用》教材的图用以演示通道的工作原理。


Fig.1 CPU和通道间的通信协同关系

可鉯看到通道相当于包工头+账房先生的合体不仅负责搬而且负责简单的算,这种情况下对于内存的连续性要求并没有DMA那么强了,“通道”先生可以知道在指定的内存位置存放指定的数据

通道的引入使CPU可以专心计算,而把IO任务完全交给通道完成二者各负其责。二者分工使得计算和IO操作可以并行即CPU和设备并行工作,从而提高资源的利用率而通道是直接负责IO设备的读取,故而根据负责的IO设备和调度方式鈈同可以做如下分类:

a. 字节多路通道:以字节为单位传输可连接若干IO设备,按照时间片轮转方式分时执行;
b. 数组选择通道:以数组(多個字节)为单位传输从而数据传输速率高,通常连接高速设备如磁盘机。 这种通道以串行方式执行通道程序独占使用;
c. 数组多路通噵:相比于数组选择通道的独占串行方式,改成时间片轮转分时(并发执行多个通道程序)

对于Linux系统而言第2,3种IO控制方式是主流采用的,通道控制方式虽然更高效但是由于需要添加专门的通道协处理器,故而成本较高常用于专用场景。

}

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 采用中断方式为外部设备 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信