- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章设备管理剖析
4. 循环扫描(CSCAN)算法 图 5-26 CSCAN调度算法示例 35.8 5. N-Step-SCAN和FSCAN调度算法 1) N-Step-SCAN算法 在SSTF、SCAN及CSCAN几种调度算法中,都可能出现 “磁臂粘着”(Armstickiness)。N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列。而每处理一个队列时又是按SCAN算法,对一个队列处理完后,再处理其他队列。 当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。 当N值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能; 当N=1时, N步SCAN算法便蜕化为FCFS算法。 2) FSCAN算法 FSCAN算法实质上是N步SCAN算法的简化, 即FSCAN只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理。在扫描期间,将新出现的所有请求磁盘I/O的进程, 放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。 作业 教材P181 7, 9, 15 《学习指导与题解》P131 22 预习题 1、通道的类型有哪几种?分别连接什么类型设备? 2、引入缓冲的是为了解决什么问题? 3、设备分配需要一些什么数据结构? 6.7 缓 冲 管 理 6.7.1 缓冲的作用 缓和CPU与I/O设备间速度不匹配的矛盾。 (2) 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制。 (看下图) (3)解决数据粒度不匹配问题 (4) 提高CPU和I/O设备之间的并行性。 图 5-10 利用缓冲寄存器实现缓冲 中断频率:100us 中断频率:800us 中断频率:1.6ms 缓冲技术的实现原理 常用的缓冲技术有四种: 单缓冲 双缓冲 环形缓冲 缓冲池 当某个进程进行数据输出操作时,先将数据送入缓冲区,当缓冲区满时再将缓冲区的内容送到输出设备上;反之亦然。 在缓冲管理中必须建立缓冲区,缓冲区的设定有两种方式: 1、采用专门的硬件方法来实现缓冲,但会增加硬件成本; 2、采用软件缓冲的方式,即从主存空间中划定出一个特殊的内存区域作为缓冲区。 6.7.2 单缓冲和双缓冲 1. 单缓冲(Single Buffer) 图 5-11 单缓冲工作示意图 每块数据的处理时间为:Max(C,T)+M 2. 双缓冲(Double Buffer) 图 5-12 双缓冲工作示意图 每块数据的处理时间为:Max(C,T) 双机通信时缓冲区的设置 6.7.3 循环缓冲 1. 循环缓冲的组成 1. 空缓冲区R (指针:Nexti) 2. 满缓冲区G(指针:Nextg) 3. 现行工作缓冲区C (指针:Current) 2. 循环缓冲区的使用 Getbuf过程。 计算进程要取数据: 将指针Nextg所指的缓冲区提供给进程使用,用Current指针指向该缓冲区的第一个单元,同时将Nextg移向下一个G缓冲区。 输入进程要使用空缓冲区装数据:将指针Nexti所指的缓冲区提供给输入进程使用,同时将Nexti移向下一个R缓冲区。 (2) Releasebuf过程。 当计算进程把C缓冲区中的数据提取完时,调用该过程释放该缓冲区:将该缓冲区由当前工作缓冲区C改为空缓冲区R。 当输入进程将缓冲区装满时:将该缓冲区释放,并改为G缓冲区。 3. 进程同步 使用循环多缓冲可以使输入进程和计算进程并行执行。相应的,指针Nexti和指针Nextg将不断地沿顺时针方向移动,这样可能出现两种情况: 1、 Nexti指针追上Nextg指针(输入速度处理速度) 无空缓冲区,输入进程阻塞,称为系统受计算限制。 2、 Nextg指针追上Nexti指针(输入速度处理速度) 无数据可取,计算进程阻塞,称为系统受I/O限制。 解决方法: 使用公用缓冲池:池中缓冲区可供多个进程共享。 循环缓冲仅适用于某特定的I/O进程和计算进程,属于专用缓冲,当系统较大时,会有很多这样的循环缓冲,不仅消耗大量内存,而且利用率也不高。 怎么办? 6.7.4 缓冲池(Buffer Pool) 1. 缓冲池的组成 对于既可用于输入又可用于输出的公用缓冲池, 其中至少应含有以下三种类型的缓冲区: ① 空(闲)缓冲区
文档评论(0)