第七章 IO设备管理.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7.6.3 磁盘高速缓冲 (2)块延迟写 如果进程要写的磁盘盘块在内存的高速缓存中有拷贝,那么只写高速缓存中的数据,先不改变磁盘中的数据值,给高速缓存中该块标记上延迟写并挂到空闲缓冲区队列上。在作为空闲缓冲区被分配出去之前只要有进程要访问这个延迟写的缓冲区对应的磁盘时都不必访问磁盘,只需访问这个缓冲区,而若又有进程要修改这个磁盘块的话只需修改这个缓冲区的数值。 延迟写。在执行写操作时,磁盘缓冲区中的数据本来应该立即写回磁盘,但考虑到该缓冲区中的数据可能会被再次利用,因此,系统并不立即将数据写回磁盘,而将其挂在空闲缓冲区队列末尾。 本章学习目标 理解I/O设备的分类; 了解四种I/O控制方式,掌握DMA方式和通道方式; 了解I/O软件系统; 了解设备的分配、回收和出错处理; 理解SPOOLing技术的概念、目的以及实现过程; 理解引入缓冲的目的及其原理; 理解磁盘访问时间的计算; 掌握常用磁盘调度算法的使用。 作业 习题7 第4,5,8题 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7.5.4 循环缓冲 7.5.4 循环缓冲 进程同步 使用输出循环缓冲,可使输出进程和计算进程并行执行。相应地,指针Nextr和指针Nextg将不断沿着顺时针方向移动,这样就可能出现下面两种情况。 (1)指针Nextg追赶上指针Nextr。这就意味着输出进程输出数据的速度大于计算进程生成数据的速度,已把输出数据缓冲区全部输出,再无输出数据缓冲区可用。 (2)指针Nextr追赶上指针Nextg。这就意味着输出进程输出数据的速度低于计算进程生成数据的速度,已把全部可用的空缓冲区装满,再无空缓冲区可用。 重点回顾 请求分段存储管理方式 段表机制 地址变换机构 缺段中断机构 请求段页存储管理方式 重点回顾 设备的分类 按传输速率分类 按信息交换的单位分类 按设备的共享属性分类 重点回顾 I/O控制方式 查询等待控制方式 中断控制方式 DMA控制方式 通道方式 设备无关软件 重点回顾 SPOOLing:在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机操作。 输入井和输出井 输入缓冲区和输出缓冲区 输入进程SPi和输出进程SPo 重点回顾 缓冲 单缓冲、 双缓冲、 循环缓冲和缓冲池 7.5.5 缓冲池 1.缓冲池的组成 对于既可用于输入又可用于输出的公用缓冲池,其中至少应含有以下三种类型的缓冲区: ① 空(闲)缓冲区; ② 装满输入数据的缓冲区; ③ 装满输出数据的缓冲区。 为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列: 1.缓冲池的组成 (1) 空缓冲队列emq。这是由空缓冲区所链成的队列。其队首指针F(emq)和队尾指针L(emq)分别指向该队列的首缓冲区和尾缓冲区。 (2) 输入队列inq。这是由装满输入数据的缓冲区所链成的队列。其队首指针F(inq)和队尾指针L(inq)分别指向该队列的首缓冲区和尾缓冲区。 (3) 输出队列outq。这是由装满输出数据的缓冲区所链成的队列。其队首指针F(outq)和队尾指针L(outq)分别指向该队列的首缓冲区和尾缓冲区。 1.缓冲池的组成 除了上述三个队列外,还应具有四种工作缓冲区: ① 用于收容输入数据的工作缓冲区; ② 用于提取输入数据的工作缓冲区; ③ 用于收容输出数据的工作缓冲区; ④ 用于提取输出数据的工作缓冲区。   2.缓冲区的工作方式 缓冲区可以工作在收容输入、提取输入、收容输出和提取输出四种工作方式下,如下图所示。 2.缓冲区的工作方式 (1) 收容输入。在输入进程需要输入数据时,便调用Getbuf(emq)过程,从空缓冲队列emq的队首摘下一空缓冲区,把它作为收容输入工作缓冲区hin。然后,把数据输入其中,装满后再调用Putbuf(inq,hin)过程,将该缓冲区挂在输入队列inq上。 (2) 提取输入。当计算进程需要输入数据时,调用Getbuf(inq)过程,从输入队列inq的队首取得一个缓冲区,作为提取输入工作缓冲区(sin),计算进程从中提取数据。计算进程用完该数据后,再调用Putbuf(emq,sin)过程,将该缓冲区挂到空缓冲队列emq上。   2.缓冲区的工作方式 (3) 收容输出。当计算进程需要输出时,调用Getbuf(

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档