缓冲管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
缓冲管理
缓冲池:
1、缓冲池:将系统内所有的缓冲区统一管理起来,就形成 了能用于输入/输出的缓冲池。缓冲池通常由若干大小相 同的缓冲区组成,是系统的公用资源,任何进程都可以 申请使用缓冲池中的各个缓冲区。
2、缓冲池的组成(数据结构) 三个队列:
空缓冲队列、装满输入数据队列、装满输出数据队列 四种工作缓冲区:
4
缓冲管理
假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统
将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一
块数据处理的时间为C,则系统对每一块数据的处理时间表
示为Max(C,T)+M
用户 进程
(a)
处理(C) 工作 区
传送(M)
缓冲 区
输入(T)
I /O设备
T1
T2
T3
T4
(b)
M1
M2
M3
C1
C2
C3
图 5-11 单缓冲工作示意图
t
5
缓冲管理
缓冲技术的分类 解决两台外设、打印机和终端之间的并行操作问题的办法是
设置双缓冲。有了两个缓冲器之后,CPU可把输出到打印机 的数据放入其中一个缓冲器(区),让打印机慢慢打印,然后, 它又可以从另一个为终端设置的缓冲器(区)中读取所需要的 输入数据。 系统处理一块数据的时间可以粗略地认为是 Max(C,T)
6
双缓冲(Double Buffer)
用户进程
(a)
工作区
缓冲区1 缓冲区2
I/O 设备
T1(缓 冲 1)
T2(缓 冲 2)
T3(缓 冲 3)
T4(缓 冲 4)
(b)
M1
M2
M3
M4
C1
C2
C3
C4
图 5-12 双缓冲工作示意图 7
缓冲管理
循环缓冲技术是在主存中分配一组大小相等的存储区作为缓 冲区,并将这些缓冲区链接起来,每个缓冲区中有一个指向 下一个缓冲的指针,最后一个缓冲区的指针指向第一个缓冲 区,这样n个缓冲区就成了一个环形。此外,系统中有个缓 冲区链首指针指向第一个缓冲区。
缓冲管理
缓冲管理
缓冲的引入 1、缓冲技术的基本实现思想: 在CPU和外设之间设立缓冲区,用以暂存CPU与外
设之间交换的数据,从而缓和CPU与外设速度不 匹配所产生的矛盾。 其实,凡是数据到达和离去速度不匹配的地方均 可采用缓冲技术。例如,CPU与内存之间也需要 设置缓冲,只不过设在cache里。
收容输入、提取输入、收容输出、提取输出四种缓冲区
11
缓冲管理
3.缓冲池的工作方式
缓冲池
收容输入
hin
sin
提取输出 sout
hout
提取输入
用 户 收容输出 程 序
缓冲区的工作方式 12
缓冲管理
4. 输入和输出过程
//输入过程 void Getbuf(type)
{ wait(rs(type)); wait(ms(type));
2
缓冲管理
2、引入缓冲的目的: (1)改善CPU与I/O设备间速度不匹配的矛盾。
(2)减少对CPU的中断频率,放宽对中断响应时间 的限制。 (3)提高CPU和I/O设备之间的并行性。
3
缓冲管理
缓冲技术的分类 单缓冲是操作系统提供的最简单的一种缓冲形式。每当一个
进程发出一个I/O请求时,操作系统便在主存中为之分配一 缓冲区,该缓冲区用来临时存放输入/输出数据。
B(number)=Takebuf(ቤተ መጻሕፍቲ ባይዱype); signal(ms(type); }
//输出过程 void putbuf(type,number)
{ wait(ms(type)); Addbuf(type,number); signal(ms(type); signal(rs(type);
}
13
缓冲管理
14
研究生入学试题:
1、(2002年,大连理工大学)解释Buffer与Cache的不同。
2、(2002,华中科技大学)什么是缓冲技术?试举一个在实际操作系统 中使用缓冲的例子。
3、(1999,中科院软件所)设备管理中引入缓冲机制的主要原因是:
(
)、( )和(
)。
4、(1999,西安交通大学)判断:缓冲技术是借助外存储器的一部分区 域作为缓冲池。( )
8
1. 循环缓冲的组成
G6
Ne xti R 1
2R
G6
Ne xti R 1
2R
G5
3G
4
Ne xtg
G
G5
3C
4 G
Ne xtg
图 5-14 循环缓冲
c ur r e nt
9
2. 循环缓冲区的使用 (1) Getbuf过程。 (2) Releasebuf过程。
3. 进程同步 (1) Nexti指针追赶上Nextg指针。 (2) Nextg指针追赶上Nexti指针。
相关文档
最新文档