- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
期末复习
一、I/O 设备缓冲机制
1 引入缓冲的原因
① 缓和CPU 和IO 设备间的速度不匹配矛盾
计算时输出(输入)设备等待CPU,输出(输入)时CPU 等待打印机(输入)
② 减少CPU 中断频率,放宽对CPU 中断响应时间的限制
如果从远地终端发来的数据仅用一位缓冲接收,则每次收到一位数据便中断一次
CPU,即段时间就要中断CPU,CPU 也必须在同样的短时间内作出相应否则数据就被冲
掉。因此需要设置多位缓冲。
③ 解决数据粒度不匹配问题
若生产者生产的数据粒度比消费者消费的数据粒度小,生产者可以产生多个数据单
元数据,直到总和达到消费者进程要求的数据单元大小,消费者再从缓冲区中取出消费;
反之,若生产者生产的数据粒度比消费者消费的数据粒度大,对于生产者每次生产的数
据,消费者可分几次从缓冲区取出消费。
④ 提高CPU 与IO 设备的并行性
生产者在生产一批数据并将其放入缓冲区后,便可立即进行下一次生产,同时,消
费者可以从缓冲区取出数据消费,CPU 与打印机可以实现并行工作。
2 缓冲区管理
2.1 单缓冲
在单缓冲情况下,每当用户进程发出一I/O 请求时,操作系统便在主存中为之分配
一缓冲区,如图a 所示。在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间
为 T , OS 将该缓冲区中的数据传送到用户区的时间为 M,而CPU 对这一块数据处理
(计算)的时间为C,由于T 和C 是可以并行的,当TC 时,系统对每一块数据的处理
时间为M+T;反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C, T) + M。
在字符设备输入时,缓冲区用于暂存用户输入的一行数据,在输入期间,用户进程
被挂起以等待数据输入完毕;在输出时,用户进程将一行数据输入到缓冲区后继续进行
处理,当用户进程已有第二行数据输出时,如果第一行数据尚未被提起完毕,则此时用
户进程应阻塞。
2.2 双缓冲
为了加快输入和输出速度,提高设备利用率,人们又引入了双缓冲区机制,也称为
缓冲兑换。在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。此时
操作系统可以从第一缓冲区中移出数据,并送入用户进程(如图a) 。接着由CPU 对数据
进行计算。在双缓冲时,系统处理一块数据的时间可以粗略地认为是Max(C,T),如果CT,
可使块设备连续输入;如果CT,则可使CPU 不必等待设备输入。对于字符设备,若采
用行输入方式,则采用双缓冲通常能消除用户的等待时间,即用户在输入完第一行后,
在CPU 执行第一行中的命令时,用户可继续向第二缓冲区输入下一行数据。
2.3 环形缓冲
环形缓冲区的组织
(1) 多个缓冲区。在环形缓冲中包括多个缓冲区,其中每个缓冲区的大小相同。作为
输入的多缓冲区可分为三种类型:用于装输入数据的空缓冲区R、已装满数据的缓冲区
G 以及计算进程正在使用的现行工作缓冲区C,如图所示
(2) 多个指针。作为输入的缓冲区可设置三个指针:用于指示计算进程下一个可用缓
冲区G 的指针Nextg、指示输入进程下次可用的空缓冲区R的指针Nexti,以及用于指示
计算进程正在使用的缓冲区C的指针Current 。
环形缓冲区的使用
(1) Getbuf过程。当计算进程要使用缓冲区中的数据时,可调用Getbuf过程。该过程将
由指针Nextg所指示的缓冲区提供给进程使用,相应的,须把它改为现行工作缓冲区,
并令Current指针指向该缓冲区的第一个单元,同时将Nextg移向下一个G缓冲区。类似
地,每当输入进程要使用空缓冲区来装入数据时,也调用Getbuf过程,由该过程将指
针Nexti所指示的缓冲区提供给输入进程使用,同时将Nexti指针移向下一个R缓冲区。
(2) Releasebuf过程。当计算进程把C缓冲区中的数据提取完毕时,便调用Releasebuf过
程,将缓冲区C释放。此时,把该缓冲区由当前工作缓冲区C改成空缓冲区R。类似
的,当输入进程把缓冲区装满时,也应调用Releasebuf过程,将该缓冲区释放,并改为
G缓冲区。
进程之间的同步问题
(1) Nexti指针追赶上Nextg指针。这意味着输入进程输入数据的速度大于计算机进程处
理数据的速度,已把全部可用的空缓冲区
您可能关注的文档
最近下载
- 预习材料3-IFS集成财经服务变革.pdf VIP
- 北师大版高中数学必修一全册教学课件.ppt VIP
- 武汉市轨道交通1号线径河延伸线工程.pdf VIP
- ECMO学习心得体会重症医学科陈仁山.pptx VIP
- 2025年度“三会一课”及“主题党日”活动计划表+2025年党组理论学习中心组学习计划.doc VIP
- 最高法案例库-与公司有关的纠纷02-广东某乙公司诉某甲生物公司股权转让纠纷案.pdf
- 心力衰竭专家共识2025年.pptx
- 2023CSCO非小细胞肺癌诊疗指南.pdf VIP
- 2024-2025学年深圳市育才二中小升初入学分班考试语文试卷附答案解析.docx
- 2025年深圳市育才二中小升初入学分班考试数学模拟试卷附答案解析.pdf
文档评论(0)