缓冲技术 课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单缓冲
单缓冲指当一个进程发出一I/O请求时,操 作系统便在主存中为之分配一个缓冲区, 用来临时存放输入/输出数据。 由于单缓冲只设置一个缓冲区,那么在某 一时刻该缓冲区只能存放输入数据或输出 数据,而不能既是输入数据又是输出数据, 否则会引起缓冲区中数据的混乱。 由上所述可知,单缓冲只能缓解输入设备、 输出设备速度差异造成的矛盾,不能解决 外设之间的并行问题的。
(1)改善CPU与I/O设备间速度 不匹配的矛盾
例如,通常的程序都是时而时而输出。 例如,通常的程序都是时而时而输出。若 没有缓冲,则程序在输出数据时, 没有缓冲,则程序在输出数据时,必然会由于 打印机的速度跟不上CPU,而使得CPU长时间 打印机的速度跟不上 ,而使得 长时间 地等待。 地等待。 在计算阶段,打印机又空闲无事。 在计算阶段,打印机又空闲无事。 在打印机或控制区中设置一缓冲区, 在打印机或控制区中设置一缓冲区,用来 快速暂存程序输出的数据, 快速暂存程序输出的数据,以后再由打印机慢 慢的从中取出数据打印。 慢的从中取出数据打印。 这样就实现了CPU与I/O设备之间的并行工 与 设备之间的并行工 这样就实现了 作。
以缓冲池为例 收容输 入
hin
sin
提取输 入 收容输 出
提取输 出
sout
hout
用 户 程 序
图4-7缓冲池的工作方式 缓冲池的工作方式
谢谢观看! 谢谢观看!
4.4 缓冲技术
4.4.1缓冲技术的基本思想:
缓冲技术好比水库
和外设之间设立缓冲区, 在CPU和外设之间设立缓冲区,用以暂存 和外设之间设立缓冲区 用以暂存CPU和外 和外 设之间交换的数据,从而缓和CPU与外设速度不匹配所产 设之间交换的数据,从而缓和 与外设速度不匹配所产 生的矛盾。 生的矛盾。 凡是数据到达和离去速度不匹配的地方均可采用缓冲技 操作, 术。在操作系统中采用缓冲是为了实现数据的I/O操作, 在操作系统中采用缓冲是为了实现数据的 操作 以缓解CPU与外部设备之间速度不匹配的矛盾,提高资源 与外部设备之间速度不匹配的矛盾, 以缓解 与外部设备之间速度不匹配的矛盾 利用率。 利用率。
(3)提高 提高CPU和I/O设备之间的并行性 提高 和 设备之间的并行性
缓冲的引入可显著提高CPU和设备的并行操作程度,提高 和设备的并行操作程度, 缓冲的引入可显著提高 和设备的并行操作程度 系统的吞吐量和设备的利用率。 系统的吞吐量和设备的利用率。
4.4.2缓冲技术的分类 缓冲技术的分类
缓冲有硬件缓冲和软件缓冲之分。 缓冲有硬件缓冲和软件缓冲之分。 根据系统设置的缓冲区个数, 根据系统设置的缓冲区个数,可以将缓 冲技术分为: 冲技术分为: 单缓冲、双缓冲、环形缓冲和缓冲池。 单缓冲、双缓冲、环形缓冲和缓冲池。
缓冲池由内存中的一组缓冲区构成。 操作系统与用户进程将轮流地使用各个 缓冲区,以改善系统性能。 缓冲池的组成: ①空闲缓冲区队列emq ②输入队列inq ③输出队列outq
1.
除了上述三个队列外, 除了上述三个队列外,还应具有四种 工作缓冲区: 工作缓冲区: 用于收容输入数据的工作缓冲区。 用于收容输入数据的工作缓冲区。 用于提取输入数据的工作缓冲区。 用于提取输入数据的工作缓冲区。 用于收容输出数据的工作缓冲区。 用于收容输出数据的工作缓冲区。 用于提取输出数据的工作缓冲区。 用于提取输出数据的工作缓冲区。
输入 I/o设备 设备
缓冲区
传送
用户区
图4—5 单缓冲方式
双缓冲
双缓冲指在操作系统中为某一设备设置两 个缓冲区,当一个缓冲区中的数据尚未被 处理时可使用另一个缓冲区存放从设备读 入的数据,以此来进一步提高CPU和外设的 并行程度。 引入双缓冲,可以提高处理机与设备的并 行操作程度。
用户进程
操作系统
(2)减少对 减少对CPU的中断频率, 放宽对中 的中断频率, 减少对 的中断频率 断响应时间的限制
如果I/O操作每传送 就要产生一次中断 , 那么设置了 操作每传送1B就要产生一次中断 那么设置了n 如果 操作每传送 就要产生一次中断, 个字节的缓冲区后,则可以等到缓冲区满才产生中断, 个字节的缓冲区后,则可以等到缓冲区满才产生中断,这 样中断次数就减少到1/n, 样中断次数就减少到 , 而且中断响应的时间也可以相 应地放宽。 应地放宽。
4.4.3缓冲的使用
缓冲池管理的基本操作Getbuf过程和 缓冲池管理的基本操作Getbuf过程和 Getbuf Putbuf过程 Putbuf过程 Getbuf(type):用于从type所指定的 Getbuf(type):用于从type所指定的 ):用于从type 队列的队首摘下一个缓冲区。 队列的队首摘下一个缓冲区。 Putbuf(type,number): ):用于将由参 Putbuf(type,number):用于将由参 number所指示的缓冲区挂在type队列 所指示的缓冲区挂在type 数number所指示的缓冲区挂在type队列 上。
4.4.3缓冲的使用
getbuf(type): Putbuf(type,i): p(n); P(mutex); 指示的缓冲区挂到type type列 P(mutex) 把i指示的缓冲区挂到type列; type缓冲队列首摘下以缓冲区 缓冲队列首摘下以缓冲区; 从type缓冲队列首摘下以缓冲区; V(mutex); V(mutex); V(n);
用户区
A B
I/O设备 设备
图4-6 双缓冲示意图
环形缓冲
通过增加缓冲区的数量可以增强缓冲 效果,将多缓冲组织成环形就构成了 环形缓冲。 环形缓冲中包含多个大小相等的缓冲 区,每个缓冲区中有一个链接指针最 后一个缓冲区指针指向第一个缓冲区。 环形缓冲仅适用于特定的I/O进程和 计算机进程。
缓冲池(Buffer Pool)
缓冲池工作在收容输入、提取输入、 缓冲池工作在收容输入、提取输入、 收容输出和提取输出四种方式下 ① 收容输入工作方式 ② 提取输入工作方式 ③ 收容输出工作方式 ④ 提取输出工作方式
缓冲池 收容输 入
hin
sin
提取输 入 收容输 出
提取输 出
sout
hout
用 户 程 序
Leabharlann Baidu
图4-7缓冲池的工作方式 缓冲池的工作方式
相关文档
最新文档