操作系统第5章 设备管理(2)

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

Operating System
2016/2/24
Page 20
缓冲池(Buffer Pool)
缓冲区工作方式
Getbuf(emq) Putbuf(inq,hin)
缓冲池
hin sin
Getbuf(inq) Putbuf(emp,sin)
收容输入
提取输出
Getbuf(outq) Putbuf(emq,sout)
提取输入 收容输出
Getbuf(emq) Putbuf(outq,hout)
sout
hout
用 户 进 程
Operating System
2016/2/24
Page 21
3. 缓冲区的工作方式

1.收容输入;2.提取输入;3.收容输出;4.提取输出
I/O
1
hin emq
inq
sin emq
2
用户进程
方式。在设备输入时,先将数据输入第一缓冲区,装满后 便转向第二缓冲区。操作系统可从第一缓冲区中移出数据 送用户进程区,接着由CPU对数据进行计算。
Operating System
2016/2/24
Page 8
单缓冲和双缓冲
双缓冲(Double Buffer)
用户进程 缓冲区1 (a) 工作区 缓冲区2 I/O 设备

Operating System 2016/2/24 Page 18
缓冲池(Buffer Pool)
互斥信号量MS(type) Procedure Getbuf(type) 资源信号量RS(type) begin Wait(RS(type)); Wait(MS(type)); B(number):=Takebuf(type); //从队首摘下一个缓冲区 Signal(MS(type)); end Procedure Putbuf(type, number) begin Wait(MS(type)); Addbuf(type, number); //将指定缓冲区挂在type指定队列上 Signal(MS(type)); Signal(RS(type)); end
设备处理 磁盘存储器管理
Operating System
2016/2/24
Page 24
设备分配
设备分配中的数据结构 设备分配时应考虑的因素 设备独立性 独占设备的分配程序 SPOOLing技术
Operating System
2016/2/24
Page 25
设备分配中的数据结构
Operating System
2016/2/24
Page 3
缓冲的引入
缓和CPU与 I/O设备间速度不匹配的矛盾 CPU必须在 中断CPU的频 100 s内响 数据到达速率与其离去速率不同 率为9.6Kb/s, 应,否则数据 每100s中断 减少对CPU 的中断频率,放宽对 CPU 会被冲掉 一次 CPU 中断响应时 间的限制

Operating System
2016/2/24
Page 14
缓冲管理
缓冲的引入 单缓冲和双缓冲 循环缓冲 缓冲池(Buffer Pool)
Operating System
2016/2/24
Page 15
缓冲池(Buffer Pool)
缓冲池的组成
专用缓冲的利用率不高,与环形缓冲不同的是缓冲池
效率有所提高,且进一步平滑了传输峰值。 系统处理一块数据的时间约为:MAX(C,T)
T1(缓冲 1) (b) M1 C1 T2(缓冲 2) M2 C2 T3(缓冲 3) M3 C3 T4(缓冲 4) M4 C4
Operating System
2016/2/24
Page 9
单缓冲和双缓冲
A机 B机 A机 B机
2016/2/24
Page 13
循环缓冲
循环缓冲区的使用
Getbuf过程
为计算进程和输入进程提供缓冲区,并移动指针 Releasebuf过程 当计算进程或输入使用完缓冲区后,调用过程将缓 冲区释放

进程同步——输入、计算进程并行
Nexti指针追赶上Nextg指针
输入进程速度大于计算进程,全部空缓冲区已满, 无可用缓冲区,输入进程阻塞(系统受计算限制) Nextg指针追赶上Nexti指针 计算进程速度大于输入进程,全部缓冲区空,无可 用数据,计算进程阻塞(系统受I/O限制)
Operating System 2016/2/24 Page 19
缓冲池(Buffer Pool)
缓冲池的组成 四种工作缓冲区 用于收容输入数据的工作缓冲区(hin) 用于提取输入数据的工作缓冲区(sin) 用于收容输出数据的工作缓冲区(hout) 用于提取输出数据的工作缓冲区(sout)
中的缓冲区是系统的公用资源,可供多个进程共享, 既能用于输入,也能用于输出 缓冲区类型 空(闲)缓冲区 装满输入数据的缓冲区 装满输出数据的缓冲区 缓冲队列:按其使用情况 空缓冲队列emq 输入队列inq 输出队列outq
Operating System 2016/2/24 Page 16
图 5-15 缓冲区的工作方式
Operating System 2016/2/24 Page 22
缓冲
无缓冲时问题分析:设备直接向进程地址 空间传送数据(如用户从磁带中读数据块的 操作),则进程要么忙等待,要么阻塞。
如果用忙等待方式,则浪费大量CPU时间; 如果是阻塞方式,则进程阻塞在设备的I/O
I/O
4
sout
outq
hout
3
1. hin=getbuf(emq);putbuf(inq,hin) 2. sin=getbuf(inq);计算;putbuf(emq,sin) 3. hout=getbuf(emq);putbuf(outq, hout) 4. sout=getbuf(outq);输出;putbuf(emq,sout)
Operating System
2016/2/24
Page 11
循环缓冲
循环缓冲的引入
当输入与输出速度基本匹配时,双缓冲能获得较好效
果;当速度相差较大时,可引入多个(大小相等)缓 冲,组织成循环缓冲的形式
循环缓冲的组成
多个缓冲区
用于装输入数据的空缓冲区R 已装满数据的满缓冲区G 计算进程正在使用的现行工作缓冲区C 多个指针 指示计算进程下一可用缓冲区Nextg 指示输入进程下一可用空缓冲区Nexti 指示计算进程正在使用的缓冲区Current
通道状态:忙/闲 与通道连接的控制器表首址 通道队列的队首指针 通道队列的队尾指针
(a) 控制器表 COCT
(b) 通道表 CHCT
一个控制器一张
Operating System 2016/2/24
一个通道一张
Page 29
设备分配中的数据结构
系统设备表SDT
表目 1 … 表目 i …

Operating System
2016/2/24
Page 12
循环缓冲
类型: R:空缓冲;G:满缓冲;C:当前缓冲
Nexti R 1 G G 6 5 4 G 2 3 R G Nextg G G 6 5 4 G Nextg R 1 2 3 R C current Nexti
Operating System
请求队列中。这时,不能将进程全部换出, 还可能出现单进程死锁。(进程在等待I/O操 作结果之前被换出,等待I/O事件,而I/O操 作也被阻塞,等待该进程被换入。)
Operating System 2016/2/24 Page 23
第五章 设备管理
I/O系统
I/O控制方式
缓冲管理
设备分配
Page 17
缓冲池(Buffer Pool)
两个对缓冲区操作的过程
Getbuf(type),type--队列类型
Putbuf(type,number),number--指某缓冲区 队列是临界资源需设置
互斥信号量MS,每个队列一个MS(type) 资源信号量RS ,每个队列一个RS(type) 队列操作过程 Takebuf(type) :取type所指队列队首缓冲区 Addbuf(type,number):将number所指缓冲 区加到type所指队列尾
工作区 传送(M) 缓冲区 输入(T) I/O设备
(a )
T1 (b ) M1
T2 M2 C1
T3 M3 C2
T4
C3 t
Operating System
2016/2/24
Page 7
2. 双缓冲(Double Buffer) 为了加快输入、输出速度和提高设备利用率,又引入
了双缓冲工作方式,也称为缓冲对换(Buffer Swapping )
接收 发送 为了实现双向数据传输,必须 缓冲区 缓冲区
在两台机器中都设置两个缓冲
缓冲区 缓冲区
区,一个用作发送缓冲区,另 接收 发送
缓冲区 缓冲区 一个用作接收缓冲区。 (b) 双缓冲
(a) 单缓冲
只能实现单向 的数据传输
2016/2/24
Operating System
Page 10
缓冲管理
缓冲的引入 单缓冲和双缓冲 循环缓冲 缓冲池(Buffer Pool)
(a )
9.6 Kb/s
1位缓冲 8位缓冲寄存器
(b )
9.6 Kb/s
中断CPU 的频率降 低为 9.6Kb/8
送内存
Operating System
2016/2/24
Page 4
缓冲的引入
8位缓冲寄存器 (c) 9.6 Kb/s
每 800s 中断一 次CPU
送内存
提高CPU和I/O设备之间的并行性
提高系统的吞吐量和设备的利用率
Operating System
2016/2/24
Page 5
缓冲管理
缓冲的引入 单缓冲和双缓冲 循环缓冲 缓冲池(Buffer Pool)
Operating System
2016/2/24
Page 6
单缓冲和双缓冲
C>T时,每块数据 单缓冲(Single Buffer) 的处理时间是 用户进程 M+T;反之,为 由于C和T可并行, M和C或M和T不能并行 M+C,即 因此处理一块数据时间: Max(C,T)+M 处理(C)
Operating System
2016/2/24
Page 1
第五章 设备管理
I/O系统
I/O控制方式
缓冲管理
设备分配 设备处理 磁盘存储器管理
Operating System
2016/2/24
Page 2
缓冲管理
缓冲的引入 单缓冲和双缓冲 循环缓冲 缓冲池(Buffer Pool)
缓冲池(Buffer Pool)
缓冲池的组成 四种工作缓冲区 用于收容输入数据的工作缓冲区(hin) 用于提取输入数据的工作缓冲区(sin) 用于收容输出数据的工作缓冲区(hout) 用于提取输出数据的工作缓冲区(sout)
Operating System
2016/2/24
Operating System
源自文库
2016/2/24
Page 26
5.4 设 备 分 配
5.4.1 设备分配中的数据结构
1. 设备控制表DCT 2. 控制器控制表COCT 3. 通道控制表CHCT
4. 系统设备表SDT
Operating System
2016/2/24
Page 27
设备分配中的数据结构
在多道程序环境下,系统中的设备所有进程共享, 为防止进程对系统资源的无序竞争,必须由系统 统一分配设备 某进程向系统提出I/O请求时,设备分配程序按 一定策略分配设备、控制器和通道,形成一条数 据传输通路,以供主机和设备间信息交换 为实现设备分配,系统中应设置相应的数据结构, 对每台设备、通道、控制器的情况进行登记
DCT 2
DCT n
每个设备一张,记录本设备的情况
Operating System 2016/2/24 Page 28
设备分配中的数据结构
控制器控制表、 通道控制表
控制器标识符: controllerid
控制器状态:忙/闲 与控制器连接的通道表指针 控制器队列的队首指针 控制器队列的队尾指针
通道标识符: channelid
设备控制表DCT
DCT 1
正使用,则忙标志 置1;若与其相连的 控制器或通道忙, 则等待标志置1
设备类型 type
deviceid 设备标识符: 请求本设备未满 足的进程PCB 队 设备状态:等待 /不等待 忙/闲 列 指向控制器表COCT的指针 重复执行次数或时间 设备队列的队首指针
设 备 控 制 表 集 合
相关文档
最新文档