OS第五章2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OS第五章2

设备管理 Operating System 5.3 缓冲管理 缓冲管理 主要职责 组织好I/O设备与处理机交换数据时使用的缓冲区,并提供获得和释放缓冲区的手段 引入原因 缓和CPU和I/O设备间速度不匹配的矛盾 凡在数据到达速率与离去速率不同的地方,都可设置缓冲区 减少对CPU的中断频率,放宽对CPU中断响应时间的限制 CPU中断频率与响应时间成反比 提高CPU和I/O设备间的并行性 单缓冲 系统为响应用户进程的I/O请求,为其分配一个缓冲区,其处理时间会相应缩短 块设备:Max(C,T)+M 字符设备:缓冲区暂存用户输入的一行数据或等待输出的一行数据,当其满时会导致输入用户进程挂起等待输入完成或输出用户进程阻塞 双缓冲(缓冲对换) 系统中设置两个缓冲区 输入时先将数据送入第一缓冲区,装满后转向第二缓冲区继续输入数据,OS则转移第一缓冲区中数据给用户进程,以便CPU计算和处理 处理一块数据的时间:Max(C,T) 块设备:C<T时块设备连续输入;C>T时,CPU不必等待设备输入 字符设备:消除用户等待时间,可连续输入待处理数据 双缓冲机制也用来实现两机交互 每台机器上都有一个发送缓冲区和一个接收缓冲区 双缓冲 循环缓冲 输入输出的速度差异使得双缓冲不能保证需求,因此引入循环缓冲 专用缓冲,适用于特定的输入进程和计算进程 同一缓冲区中的数据是同一类型 系统较大时需要的缓冲区数量增加,浪费空间且利用率不高 循环缓冲 组成 多个缓冲区:用于装输入数据的空缓冲区R、已经装满数据的缓冲区G、计算进程正在使用的当前工作区C 多个指针:指示计算进程下一个可用缓冲区G的指针Nextg、指示输入进程下次可用的空区R的指针Nexti、指示计算进程正在使用的缓冲区C的指针Current 循环缓冲区的使用 Getbuf过程 计算过程:将由指针Nextg所指示的缓冲区提供给计算进程使用,并把它改为现行工作缓冲区,并令Current指针指向该缓冲区的第一个单元,同时将Nextg移向下一个G缓冲区 输入过程:每当输入进程要使用空缓冲区来装入数据时,也调用Getbuf过程,由该过程将指针Nexti所指示的缓冲区提供给输入进程使用,同时将Nexti指针移向下一个R缓冲区 循环缓冲区的使用 Releasebuf过程 计算过程:当计算进程把C缓冲区中的数据提取完毕时,便调用Releasebuf过程,将缓冲区C释放。此时,把该缓冲区当前(现行)工作缓冲区C改为空缓冲区R 输入过程:当输入进程把缓冲区装满时,也应调用Releasebuf过程,将该缓冲区释放,并改为G缓冲区 循环缓冲的使用 循环缓冲的使用 为保证进程同步需要考虑两种可能 Nexti追上Nextg 输入速度大于计算速度,无空区,输入进程阻塞,等待计算进程完成某个缓冲区的数据处理并使用Releasebuf过程将其释放后再唤醒输入进程 Nextg追上Nexti 计算速度大于输入速度,缓冲区全空,无数据可处理,计算进程阻塞,等待输入进程填满某空区后并调用Releasebuf过程后才被唤醒 缓冲池 为提高缓冲区利用率,引入公用缓冲池 组成 三个队列:emq、inq、outq 四个工作缓冲区:hin、sin、sout、hout 两个过程:Getbuf、Putbuf 缓冲池的组成 三个队列 空缓冲队列emq:空缓冲区组成的队列 输入队列inq:装满输入数据的缓冲区组成的队列 输出队列outq:装满输出数据的缓冲区组成的队列 三个队列的队首和队尾指针指向各队列的首尾缓冲区 缓冲池的组成 四个工作缓冲区 收容输入工作区 提取输入工作区 收容输出工作区 提取输出工作区 缓冲池的组成 两个过程Getbuf和Putbuf 为保证同步与互斥,每个队列均设置一个互斥信号量MS(type)和一个资源信号量RS(type),type可以是emq、inq或outq,RS的值由type决定(inq和outq的RS初值为,emq的RS初值为缓冲池容量 缓冲池同步、互斥 Procedure Putbuf(type, num) Begin Wait(MS(type)); Addbuf(type,num);Signal(MS(type));Signal(RS(type)); End 注:num可为任一种工作区 缓冲池的工作方式 缓冲区工作在四种方式下 收容输入:摘空区、放数据、插入输入队列 提取输入:摘输入队列中的满区、取数据、插空队列 收容输出:摘空区、放数据、插入输出队列 提取输出:摘输出队列中的满区、取数据、插空队列 5.4 I/O软件 I/O软件的设计目标 总体设计目标 高效性 通用性 具体设计目标 设备无关 统一命名 尽量在低层完成错误处理 提供缓冲技术 实现设备的分配和释放 提供合理有效且统一的I/O控

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档