1
第七章设备管理
设备是指计算机系统中除CPU,内存
和系统控制台以外的所有设备。
设备管理程序是用于对这类设备进行
控制和管理的一组程序。
设备管理是OS中最复杂且与硬件紧
密相关的部分。
操
作
系
统
|
设
备
管
理
2
CUIT 徐虹
7.1I/O系统的组成
?I/O系统的结构
?微机型I/O系统
?I/O设备通过设备控制器连接到总线
上,CPU通过设备控制器与相应的设
备进行通信。
?主机型I/O系统
?具有通道的I/O系统结构:I/O设备、
设备控制器、I/O通道、计算机
操
作
系
统
|
设
备
管
理
3
CUIT 徐虹
?设备的类别
?按使用特性
?存储设备
?I/O设备
?终端设备
?脱机设备。
?按从属关系
?系统设备
?用户设备
操
作
系
统
|
设
备
管
理
4
CUIT 徐虹
?从资源分配角度
?独享设备
?共享设备
?虚拟设备:通过SPOOLING技术把独享
设备改造为共享设备,以提高利用率。
?按信息组织方式
?字符设备
?块设备
?设备分类的目的:简化设备管理程序
操
作
系
统
|
设
备
管
理
5
CUIT 徐虹
操
作
系
统
|
设
备
管
理
6
CUIT 徐虹
?设备控制器
设备控制器是一个可编址设备,分
为字符设备控制器和块设备控制器,是
CPU与设备间的接口。
?功能
?接收和识别命令:命令寄存器和译码器
?数据交换:数据寄存器
?设备状态的了解和报告:状态寄存器
?地址识别:地址寄存器
2
操
作
系
统
|
设
备
管
理
7
CUIT 徐虹
?设备控制器的组成
?设备控制器与处理机的接口
?数据线(数据寄存器、控制/状态寄存器)
?地址线
?控制线
?设备控制器与设备的接口
?数据信号
?控制信号
?状态信号
?I/O逻辑:实现对设备的控制
操
作
系
统
|
设
备
管
理
8
CUIT 徐虹
?设备管理程序的设计目标
?方便性:提供友好透明的用户接口
?并行性:提高设备的利用率和系统效率
?均衡性:使用外存设备作为虚拟设备
?独立性:与设备无关性
操
作
系
统
|
设
备
管
理
9
CUIT 徐虹
?设备管理的基本功能
?提供和进程管理系统的接口
?进行设备分配
?实现设备之间,设备与CPU等之间的并
行操作
?进行缓冲区管理
操
作
系
统
|
设
备
管
理
10
CUIT 徐虹
7.2数据传送(I/O)控制方式
?选择和衡量控制方式的原则:
?速度高且安全
?系统开销小
?使I/O设备尽量忙,CPU等待时间
少
操
作
系
统
|
设
备
管
理
11
CUIT 徐虹
?程序直接控制方式
?工作原理
?由用户进程直接控制内存或CPU与外设
间的信息传送。
?优点:控制简单硬件要求少
?缺点:
?CPU与外围设备只能串行工作
?设备间不能并行操作
?安全性差。
操
作
系
统
|
设
备
管
理
12
CUIT 徐虹
向I/O控制器发读命令
读I/O控制器的状态
检查状态
从I/O控制器中读入字
向存储器中写字
传送完成
完成下条指令
出错
未完
未
就
绪
?控
制
流
程
3
操
作
系
统
|
设
备
管
理
13
CUIT 徐虹
?中断方式
?中断的概念
?中断源,中断请求,中断响应
?开中断,关中断
?中断屏蔽
操
作
系
统
|
设
备
管
理
14
CUIT 徐虹
?中断的分类与优先级
?中断的分类:外中断,内中断(陷入)
?中断的优先级
?软中断
?软中断是通讯进程之间用来模拟硬中断的
一种信号通讯方式。
?中断源发中段请求或软中断信号后,CPU
或接收进程在适当的时机自动进行中断处
理或完成软中断信号对应的功能。
操
作
系
统
|
设
备
管
理
15
CUIT 徐虹
?中断处理过程
?CPU检查响应中断的条件是否满足
?如CPU响应中断,关中断
?保护现场
?分析中断原因,调用中断处理子程序
?执行中断处理子程序
?退出中断,恢复现场
?开中断,CPU继续执行
操
作
系
统
|
设
备
管
理
16
CUIT 徐虹
?中断方式的处理过程
?CPU与设备(控制ID)间有中断请求线且
设备控制器的控制状态寄存器中有相应的
中断允许位。
?特点:
?CPU利用率提高,能支持多道程序和设备
并行工作。
?数据传送过程中,中断次数较多;可能出
现数据丢失现象
操
作
系
统
|
设
备
管
理
17
CUIT 徐虹
设备
接收CPU发来的
START指令
数据—>寄存器
N
满?
Y
控制器发中断信号
CPU
向设备发START指令,
将中断允许位置1
调度程序调度其它进程
其它进程执行
N
收到中断信号?
Y
中断处理
被中断进程执行
操
作
系
统
|
设
备
管
理
18
CUIT 徐虹
?DMA方式
?在外围设备和内存之间开辟直接的数据
交换通路。信息的传送方向,传送的源
地址和目的地址及传送长度都由CPU控
制。
?特点
?数据传输的基本单位是数据块
?数据直接从设备到内存
?仅在传送开始和结束时才需CPU干预,传
送过程在控制器的控制下完成。
4
操
作
系
统
|
设
备
管
理
19
CUIT 徐虹
操
作
系
统
|
设
备
管
理
20
CUIT 徐虹
操
作
系
统
|
设
备
管
理
21
CUIT 徐虹
操
作
系
统
|
设
备
管
理
22
CUIT 徐虹
操
作
系
统
|
设
备
管
理
23
CUIT 徐虹
?DMA控制器的组成
?DMA的四类寄存器:命令/状态寄存器CR、
内存地址寄存器MAR、数据寄存器DR和
数据计数器DC。
?工作过程
操
作
系
统
|
设
备
管
理
24
CUIT 徐虹
?与中断的区别
?中断处理的时间不同
?数据传送不由CPU控制完成
?缺点
?使控制过程复杂化,可能产生内存地址
冲突
?多个DMA控制器的同时使用很不经济
5
操
作
系
统
|
设
备
管
理
25
CUIT 徐虹
?通道控制方式
?通道是一个独立于CPU的专管I/O控制
的处理机,它控制设备与内存直接进
行数据交换。通道的启动由CPU发指
令执行。
?通道类型
?字节多路通道
?数组选择通道
?数组多路通道
操
作
系
统
|
设
备
管
理
26
CUIT 徐虹
?多通路I/O系统
?单通路I/O系统:
?多通路I/O系统:
?通道程序
?通道是通过执行通道程序,并与设备控制
器来共同实现对I/O设备的控制的。通道程
序是由一系列的通道指令所构成。
?工作过程
操
作
系
统
|
设
备
管
理
27
CUIT 徐虹
例.一个进程的大小为5个页面,为它分配了四个物理块。当前
每个块的情况如下表所示(都为十进制数,且从0开始计数
。)。当虚页4发生缺页时,使用下列的页面置换算法,哪
一个物理块将被换出?并解释原因.
页号块号加载时间访问时间访问位R 修改位M
2060 161 0 1
1 1 130 160 0 0
0226 162 1 0
3320 163 1 1
11. IFO算法2. LRU算法3. CLOCK算法
操
作
系
统
|
设
备
管
理
28
CUIT 徐虹
7.3缓冲管理
?缓冲技术
?引入原因:
?提高CPU,通道,I/O设备的并行能
力。
?改善CPU和I/O设备间速度不匹配的
情况。
?可减少中断CPU的次数,放宽CPU对
中断的响应时间。
?硬件缓冲器和软件缓冲
操
作
系
统
|
设
备
管
理
29
CUIT 徐虹
?单缓冲和双缓冲
?单缓冲
?设:数据从磁盘—>缓冲区T
?数据从缓冲区—>用户区M
? CPU计算时间C
?则:对数据的处理时间为max(C,T)+M
?如无缓冲区,处理时间为:T+C
操
作
系
统
|
设
备
管
理
30
CUIT 徐虹
6
操
作
系
统
|
设
备
管
理
31
CUIT 徐虹
?双缓冲
?系统处理时间:max(C,T)
?当C<T :块设备连续输入
? C>T :CPU进行处理
?两台计算机进行通信,配备双缓冲,实现
双向数据传送。
操
作
系
统
|
设
备
管
理
32
CUIT 徐虹
?循环缓冲
?用几个缓冲区组成一个环形缓冲区,
供输入/出共同使用。
?工作原理
?Nextg:指向装数据的缓冲区;
?Nexti:指向空缓冲区;
?Current:正在使用的缓冲区单元。
操
作
系
统
|
设
备
管
理
33
CUIT 徐虹
操
作
系
统
|
设
备
管
理
34
CUIT 徐虹
?缓冲区的使用
?Getbuf 过程(获取缓冲的过程)
?Releasebuf过程(释放缓冲的过程)
?进程同步
?Nexti赶上Nextg:系统受计算限制:所
有缓冲区装满数据,输入进程阻塞。
?Nextg赶上Nexti:系统受I/O限制:所有
缓冲区为空,输出进程阻塞。
操
作
系
统
|
设
备
管
理
35
CUIT 徐虹
?缓冲池
?缓冲池的结构
?把输入和输出多缓冲器结合起来,形成一
个既能用于输入,又能用于输出的缓冲器,
称为缓冲池。
?空白缓冲队列emq F(emq),L(emq)
?装满输入数据的缓冲队列inq F(inq),
L(inq)
?装满输出数据的缓冲队列outg F(outg)
L(outg)
操
作
系
统
|
设
备
管
理
36
CUIT 徐虹
?工作缓冲区
?收容输入缓冲区hin;用于收容设备输入
的数据
?提取输入缓冲区sin ;用于提取设备输入
的数据
?收容输出缓冲区hout;用于收容CPU输
出的数据
?提取输出缓冲区sout;用于提取CPU输
出的数据
7
操
作
系
统
|
设
备
管
理
37
CUIT 徐虹
?对缓冲池的操作
?take-buf(type):从三种缓冲区
队列中按一定的选取规则取出一个
缓冲区。
?add-buf (type,number ):把指定
编号的缓冲区,挂在指定队列的未
尾。
操
作
系
统
|
设
备
管
理
38
CUIT 徐虹
?get-buf (type,number ):从某种类型的
队列中获得一缓冲区
每种队列设置用于互斥的信号量MS (type) = 1
每种队列设置描述资源数目的信号量RS (type) = n
Procedure get-buf (int type )
begin
wait (RS(type)) ;
wait (MS(type));
B(number) = take-buf (type)
Signal (MS(type)) ;
end
操
作
系
统
|
设
备
管
理
39
CUIT 徐虹
?put-buf (type,number):用于释放某个
不再需要的或已装满数据的工作缓冲区并
将它挂再指定队列的末尾。
Procedure put-buf (int type )
Begin
wait (MS(type)) ;
add-buf(type, number) ;
Signal (MS(type)) ;
Signal (RS(type)) ;
end
操
作
系
统
|
设
备
管
理
40
CUIT 徐虹
?缓冲池工作过程
?收容输入hin 输入进程输入
?hin = get-buf (emq)
?put-buf (inq, hin):
?收容输出hout 计算进程输出
?hout = get-buf (emq) :
?put-buf (outq, hout):
?提取输入sin 计算进程输入
?sin = get-buf (inq) :
?put-buf (emq, sin):
?提取输出sout 输出进程输出
?sout = get-buf (outq) :
?put-buf (emq, sout):
操
作
系
统
|
设
备
管
理
41
CUIT 徐虹
7. 4 设备分配
?当某进程向系统提出I/O请求后,设备分配
程序按照一定的策略,把所要求的设备分
配给它。为确保CPU与设备之间能进行通
讯,还应分配相应的控制器和通道。
操
作
系
统
|
设
备
管
理
42
CUIT 徐虹
?设备管理中的数据结构
?设备控制表(DCT):每台设备一张
?设备标识符
?设备类型
?设备地址或设备号
?设备状态
?等待队列指针
?重复执行的次数和时间
?I/O控制器指针
8
操
作
系
统
|
设
备
管
理
43
CUIT 徐虹
?系统设备表SDT :整个系统一张
?记录系统中所拥有的全部I/O设备的情况,
反映系统中设备资源的状态。
?DCT指针,指向有关设备的设备控制器
表
?正在使用设备的进程标识
?设备驱动程序入口
操
作
系
统
|
设
备
管
理
44
CUIT 徐虹
?控制器表COCT 每个控制器一张:
反映I/O控制器的使用状态和通道的连
接情况
?控制器标识
?控制器状态
?CHCT指针
?控制器等待队列队首指针
?控制器等待队列队尾指针
操
作
系
统
|
设
备
管
理
45
CUIT 徐虹
?通道控制表CHCT 每个通道一张
?通道标识符
?通道状态
?通道等待队列首
?通道等待队列尾
?控制器表首址
操
作
系
统
|
设
备
管
理
46
CUIT 徐虹
?设备分配原则
?设备的固有属性
?设备分配策略
?静态分配:
?动态分配:
?设备分配算法
?先请求先分配
?优先级高者先分配
?设备分配中的安全性
?一个进程只能提出一个I/O请求
?多请求方式
操
作
系
统
|
设
备
管
理
47
CUIT 徐虹
?设备独立性
?应用程序独立于使用的物理设备,在
应用程序中使用逻辑设备名称来请求
使用某类设备。系统在执行时,是使
用物理设备名称。
?逻辑设备的引入
?为提高系统的可适应性和可扩展性,使
用户程序与实际物理设备无关。
?逻辑设备的特性是该类物理设备的特性
的抽象。
操
作
系
统
|
设
备
管
理
48
CUIT 徐虹
?设备独立性软件
?执行所有设备的公有操作
?设备的分配与回收
?逻辑设备到物理设备的映射
?保护
?缓冲管理
?差错控制
?向用户层(或文件层)软件提供统一的接
口
9
操
作
系
统
|
设
备
管
理
49
CUIT 徐虹
?逻辑设备表LUT(Logical Unit Table)
?联系逻辑设备的名称和物理设备名称的
映象表。
?在进行设备分配时,通常是先将系统所
拥有的物理设备分配给要求该设备的进程,
然后再把进程提出I/O请求时之逻辑设备
名称填入PAT的该物理设备表目中,称逻
辑设备已连接到相应的物理设备上了。
?LUT的设置方法:整个系统一张或每个
用户一张。
操
作
系
统
|
设
备
管
理
50
CUIT 徐虹
?设备分配程序
?分配设备
?分配控制器
?分配通道
?算法描述
?仅适用于单路的I/O系统:只有一条通路
与内存相连.
?改进
?增加设备独立性
?多通路
操
作
系
统
|
设
备
管
理
51
CUIT 徐虹
进程P来的I/O请求
搜索SDT找到DCT指针
查DCT,该设备忙?
ny
按分配策略选取进程P按分配策略入I/O队列
n
进程P被选中?P进程等待设备
yn
检查安全性
y
该设备分配给P
操
作
系
统
|
设
备
管
理
52
CUIT 徐虹
查DCT,找到COCT指针
y
控制器忙?P等待控制器
n
给P分配控制器
查COCT找到CHCT指针
y
通道忙?P等待通道
n
分配通道
启动I/O
操
作
系
统
|
设
备
管
理
53
CUIT 徐虹
?SPOOLing技术
?SPOOLing系统
?多台外设通过通道或DMA 器件和主机与外
存连接起来,实现脱机I/O功能。
?SPOOLING 系统的组成
?输入井和输出井。
?输入缓冲区和输出缓冲区。
?输入程序和输出程序:每个程序包括读过
程和写过程
?请求操作队列表。
操
作
系
统
|
设
备
管
理
54
CUIT 徐虹
?工作原理
?例:输入方式:
?在系统输入模块收到作业请求输入信号后,输
入管理模块中的读进程负责将信息从输入装置
读入缓冲区。当缓冲区满时,由写进程写到外
存输入井中。重复执行,直到作业输入完毕。
?特点
?提高I/O速度
?将独占设备改造为共享设备
?实现了虚拟设备功能。
10
操
作
系
统
|
设
备
管
理
55
CUIT 徐虹
请求输入
信息 ?缓冲区
N
缓冲区满或结束标志
Y
缓冲区 ?磁盘
N
结束?
Y
调中断处理程序,结束输入
操
作
系
统
|
设
备
管
理
56
CUIT 徐虹
7.5设备处理
?它是驱动物理设备和DMA控制器或I/O控
制器等直接进行I/O操作的子程序的集合,
是I/O进程与设备控制器之间的通信程序。
?主要任务:
?接收上层软件发来的抽象要求,把它转化为具
体要求后,发送给设备控制器,启动设备去执
行
?将由设备控制器发来的信号传送给上层软件。
操
作
系
统
|
设
备
管
理
57
CUIT 徐虹
?设备驱动程序的功能
设备开关表DST:管理设备驱动程序,并给
出相应设备的各种操作程序的入口地址。
?将接收到的抽象要求转换为具体要求
?检查用户I/O请求的合法性,了解I/O设备的状态,传
递有关参数,设置设备的工作方式
?发出I/O命令,启动分配到的I/O设备,完成指定的
I/O操作
?及时响应由控制器或通道发来的中断请求,再根据其
中断类型调用相应的中断处理程序进行处理
?对于设置有通道的计算机系统,驱动程序还能根据用
户的I/O请求,自动地构成通道程序。
操
作
系
统
|
设
备
管
理
58
CUIT 徐虹
?设备驱动程序的特点
?它主要是在请求I/O的进程与设备控制
器之间的一个通信程序
?驱动程序与I/O设备的特性紧密相关
?与I/O控制方式紧密相关
?与硬件紧密相关,用汇编编写,固化
在ROM中
操
作
系
统
|
设
备
管
理
59
CUIT 徐虹
?处理过程
?将抽象要求转换为具体要求
?检查I/O请求的合法性
?读出和检查设备的状态
?传送必要的参数
?工作方式的设置
?启动I/O设备
操
作
系
统
|
设
备
管
理
60
CUIT 徐虹
小结
?设备分类
?I/O控制方式
?中断技术
?缓冲技术
?设备分配原则和算法
?设备驱动程序