第五章 设 备 管 理
第五章 设备管理
5.1 I/O系统
5.2 I/O控制方式
5.3 缓冲管理
5.4 设备分配
5.5 设备处理
5.6 磁盘存储器管理
第五章 设 备 管 理
5.1 I/O 系 统
5.1.1 I/O设备
1,I/O设备的类型
1)
按传输速度的高低, 可将 I/O设备分为三类 。 第一类是低速
设备, 这是指其传输速率仅为每秒钟几个字节至数百个字节的
一类设备 。 属于低速设备的典型设备有键盘, 鼠标器, 语音的
输入和输出等设备 。 第二类是中速设备, 这是指其传输速率在
每秒钟数千个字节至数万个字节的一类设备 。 典型的中速设备
有行式打印机, 激光打印机等 。 第三类是高速设备, 这是指其
传输速率在数百千个字节至数十兆字节的一类设备 。 典型的高
速设备有磁带机, 磁盘机, 光盘机等 。
第五章 设 备 管 理
2)
可将 I/O设备分成两类 。 第一类是块设备 (Block Device),
这类设备用于存储信息 。 由于信息的存取总是以数据块为单
位, 故而得名 。 它属于有结构设备 。 典型的块设备是磁盘,
每个盘块的大小为 512 B~4 KB。 磁盘设备的基本特征是其传
输速率较高, 通常每秒钟为几兆位;另一特征是可寻址, 即
对它可随机地读 /写任一块;此外, 磁盘设备的 I/O常采用
DMA方式 。 第二类是字符设备 (Character Device),用于数据
的输入和输出 。 其基本单位是字符, 故称为字符设备 。
第五章 设 备 管 理
3)
这种分类方式可将 I/O
(1) 独占设备。
(2) 共享设备。
(3) 虚拟设备。
第五章 设 备 管 理
2,设备与控制器之间的接口
图 5-1 设备与控制器间的接口
缓冲 转换器
控制逻辑
信号
数据
数据信号线
状态信号线
控制信号线
至设备
控制器
I / O 设备
第五章 设 备 管 理
5.1.2 设备控制器
1,设备控制器的基本功能
1) 接收和识别命令
2) 数据交换
3) 标识和报告设备的状态
4) 地址识别
5) 数据缓冲
6) 差错控制
第五章 设 备 管 理
2,设备控制器的组成
图 5-2 设备控制器的组成
数据寄存器
控制/ 状态
寄存器
数据线
I / O 逻辑
?
控制器
与设备
接口1
控制器
与设备
接口 i
数据
状态
控制
数据
状态
控制
?
地址线
控制线
C P U 与控制器接口 控制 器与设 备接口
第五章 设 备 管 理
5.1.3 I/O通道
1,I/O通道 (I/O Channel)设备的引入
实际上, I/O通道是一种特殊的处理机 。 它具有执行 I/O
指令的能力, 并通过执行通道 (I/O)程序来控制 I/O操作 。 但
I/O通道又与一般的处理机不同, 主要表现在以下两个方面:
一是其指令类型单一, 这是由于通道硬件比较简单,
其所能执行的命令, 主要局限于与 I/O操作有关的指令; 再
就是通道没有自己的内存, 通道所执行的通道程序是放在主
机的内存中的, 换言之, 是通道与 CPU共享内存 。
第五章 设 备 管 理
2,通道类型
1) 字节多路通道 (Byte Multiplexor Channel)
图 5-3 字节多路通道的工作原理
控制器 A
控制器 B
控制器 C
控制器 D
控制器 N
?
A
1
A
2
A
3
?子通道 A
B
1
B
2
B
3
?子通道 B
C
1
C
2
C
3
?子通道 C
N
1
N
2
N
3
?子通道 N
A
1
B
1
C
1
? A
2
B
2
C
2
…
设备
第五章 设 备 管 理
2) 数组选择通道 (Block Selector Channel)
字节多路通道不适于连接高速设备, 这推动了按数组方
式进行数据传送的数组选择通道的形成 。 这种通道虽然可以
连接多台高速设备, 但由于它只含有一个分配型子通道, 在
一段时间内只能执行一道通道程序, 控制一台设备进行数据
传送, 致使当某台设备占用了该通道后, 便一直由它独占,
即使是它无数据传送, 通道被闲置, 也不允许其它设备使用
该通道, 直至该设备传送完毕释放该通道 。 可见, 这种通道
的利用率很低 。
第五章 设 备 管 理
3) 数组多路通道 (Block Multiplexor Channel)
数组选择通道虽有很高的传输速率, 但它却每次只允
许一个设备传输数据 。 数组多路通道是将数组选择通道传
输速率高和字节多路通道能使各子通道 (设备 )分时并行操作
的优点相结合而形成的一种新通道 。 它含有多个非分配型
子通道, 因而这种通道既具有很高的数据传输速率, 又能
获得令人满意的通道利用率 。 也正因此, 才使该通道能被
广泛地用于连接多台高, 中速的外围设备, 其数据传送是
按数组方式进行的 。
第五章 设 备 管 理
3.,瓶颈”问题
图 5-4 单通路 I/O系统
设备 1
设备 2
设备 3
设备 4
设备 5
设备 6
设备 7
控制器 1
控制器 2
控制器 3
控制器 4
通道 1
通道 2
存储器
第五章 设 备 管 理
图 5-5 多通路 I/O系统
I / O 设备
控制器 1
控制器 2
通道 1
通道 2
存储器
I / O 设备
I / O 设备
I / O 设备
第五章 设 备 管 理
5.1.4 总线系统
图 5-6 总线型 I/O系统结构
C P U 存储器
磁盘
控制器
打印机
控制器
?
其它
控制器
磁盘驱动器
打印机
系统总线
第五章 设 备 管 理
1,ISA和 EISA总线
1) ISA(Industry Standard Architecture)
这是为了 1984年推出的 80286型微机而设计的总线结构 。
其总线的带宽为 8位, 最高传输速率为 2 Mb/s。 之后不久又推
出了 16位的 (EISA)总线, 其最高传输速率为 8 Mb/s,后又升
至 16 Mb/s,能连接 12台设备 。
2) EISA(Extended ISA)
到 80年代末期, ISA总线已难于满足带宽和传输速率的要
求, 于是人们又开发出扩展 ISA(EISA)总线, 其带宽为 32位,
总线的传输速率高达 32 Mb/s,同样可以连接 12台外部设备 。
第五章 设 备 管 理
2,局部总线 (Local Bus)
1) VESA(Video Electronic Standard Association)总线
2) PCI(Peripheral Component Interface)
第五章 设 备 管 理
5.2 I/O控制方式
5.2.1 程序 I/O方式
在程序 I/O方式中, 由于 CPU的高速性和 I/O设备的低速
性, 致使 CPU的绝大部分时间都处于等待 I/O设备完成数据
I/O的循环测试中, 造成对 CPU的极大浪费 。 在该方式中,
CPU之所以要不断地测试 I/O设备的状态, 就是因为在 CPU
中无中断机构, 使 I/O设备无法向 CPU报告它已完成了一个
字符的输入操作 。
第五章 设 备 管 理
图 5-7 程序 I/O和中断驱动方式的流程
向 I / O 控制器
发读命令
读 I / O 控制器
的状态
检查
状态?
从 I / O 控制器
中读入字
向存储器
中写字
传送
完成?
未
就
绪
就绪
出错
C P U →I/ O
I / O →C P U
I / O →C P U
C P U → 内存
下条指令
完成
未完
向 I / O 控制器
发读命令
读 I / O 控制器
的状态
检查
状态?
从 I / O 控制
器中读字
向内存
中写字
传送
完成?
就绪
出错
C P U →I/ O
I / O →C P U
I / O →C P U
C P U → 内存
下条指令
完成
未完
中断
C P U 做其它事
向 I / O 控制器
发布读块命令
C P U →D M A
C P U 做其它事
读 D MA 控制
器的状态
中断
D M A →C P U
下条指令
( a ) 程序 I / O 方式 ( b ) 中断驱动方式
( c ) D M A 方式
第五章 设 备 管 理
5.2.2 中断驱动 I/O控制方式
在 I/O设备输入每个数据的过程中, 由于无须 CPU干预,
因而可使 CPU与 I/O设备并行工作 。 仅当输完一个数据时, 才
需 CPU花费极短的时间去做些中断处理 。 可见, 这样可使
CPU和 I/O设备都处于忙碌状态, 从而提高了整个系统的资源
利用率及吞吐量 。 例如, 从终端输入一个字符的时间约为 100
ms,而将字符送入终端缓冲区的时间小于 0.1 ms。 若采用程
序 I/O方式, CPU约有 99.9 ms的时间处于忙 —等待中 。 采用中
断驱动方式后, CPU可利用这 99.9 ms的时间去做其它事情,
而仅用 0.1 ms的时间来处理由控制器发来的中断请求 。 可见,
中断驱动方式可以成百倍地提高 CPU的利用率 。
第五章 设 备 管 理
5.2.3 直接存储器访问 DMA I/O控制方式
1,DMA(Direct Memory Access)控制方式的引入
该方式的特点是,① 数据传输的基本单位是数据块, 即在
CPU与 I/O设备之间, 每次传送至少一个数据块; ② 所传送的
数据是从设备直接送入内存的, 或者相反; ③ 仅在传送一个
或多个数据块的开始和结束时, 才需 CPU干预, 整块数据的传
送是在控制器的控制下完成的 。 可见, DMA方式较之中断驱
动方式, 又是成百倍地减少了 CPU对 I/O的干预, 进一步提高
了 CPU与 I/O设备的并行操作程度 。
第五章 设 备 管 理
2,DMA控制器的组成
图 5-8 DMA控制器的组成
DR
M A R
DC
CR
I / O
控
制
逻
辑
…
主机—控制器接口 控制器与块设备接口
c o u n t
内存C P U
命令
系统总线 D M A 控制器
第五章 设 备 管 理
为了实现在主机与控制器之间成块数据的直接交换, 必
须在 DMA
(1) 命令 /状态寄存器 CR。 用于接收从 CPU发来的 I/O命令
或有关控制信息, 或设备的状态 。
(2) 内存地址寄存器 MAR。 在输入时, 它存放把数据从
设备传送到内存的起始目标地址;在输出时, 它存放由内存
到设备的内存源地址 。
(3) 数据寄存器 DR。 用于暂存从设备到内存, 或从内存
到设备的数据 。
(4) 数据计数器 DC。 存放本次 CPU要读或写的字 (节 )数。
第五章 设 备 管 理
3,DMA工作过程
图 5-9 DMA方式的工作流程
设置 AR 和 DC 初值
启动 D M A 传送命令
挪用存储器周期传送
数据字
存储器地址增 1
字计数寄存器减 1
DC = 0?
请求中断
在继续执行用户
程序的同时,准
备又一次传送
否
是
第五章 设 备 管 理
5.2.4 I/O通道控制方式
1,I/O通道控制方式的引入
I/O通道方式是 DMA方式的发展, 它可进一步减少 CPU
的干预, 即把对一个数据块的读 (或写 )为单位的干预, 减少
为对一组数据块的读 (或写 )及有关的控制和管理为单位的干
预 。 同时, 又可实现 CPU,通道和 I/O设备三者的并行操作,
从而更有效地提高整个系统的资源利用率 。 例如, 当 CPU要
完成一组相关的读 (或写 )操作及有关控制时, 只需向 I/O通道
发送一条 I/O指令, 以给出其所要执行的通道程序的首址和要
访问的 I/O设备, 通道接到该指令后, 通过执行通道程序便可
完成 CPU指定的 I/O任务 。
第五章 设 备 管 理
2,通道程序
(1) 操作码。
(2) 内存地址。
(3) 计数。
(4) 通道程序结束位 P。
(5) 记录结束标志 R。
第五章 设 备 管 理
操作 P R 计数 内存地址
WRITE 0 0 80 813
WRITE 0 0 140 1034
WRITE 0 1 60 5830
WRITE 0 1 300 2000
WRITE 0 0 250 1850
WRITE 1 1 250 720
第五章 设 备 管 理
5.3 缓 冲 管 理
5.3.1 缓冲的引入
(1) 缓和 CPU与 I/O设备间速度不匹配的矛盾。
(2) 减少对 CPU的中断频率,放宽对 CPU中断响应时间的
限制。
(3) 提高 CPU和 I/O设备之间的并行性。
第五章 设 备 管 理
图 5-10 利用缓冲寄存器实现缓冲
1 位缓冲
9, 6 K b / s
8 位缓冲寄存器
送内存
9, 6 K b / s
8 位缓冲寄存器
9, 6 K b / s
送内存
( b )
( a )
( c )
第五章 设 备 管 理
5.3.2 单缓冲和双缓冲
1,单缓冲 (Single Buffer)
工作区
处理 ( C )
缓冲区
传送 ( M ) 输入 ( T )
I / O 设备
( a )
T
1
M
1
C
1
T
2
M
2
C
2
T
3
M
3
C
3
T
4
t
( b )
用户进程
图 5-11 单缓冲工作示意图
第五章 设 备 管 理
2,双缓冲 (Double Buffer)
工作区
用户进程
缓冲区 1
缓冲区 2
I / O 设备
T
1
( 缓冲 1)
M
1
C
1
M
2
C
2
M
3
C
3
T
2
( 缓冲 2) T
3
( 缓冲 3)
M
4
C
4
T
4
( 缓冲 4)
( a )
( b )
图 5-12 双缓冲工作示意图
第五章 设 备 管 理
图 5-13 双机通信时缓冲区的设置
缓冲区 缓冲区
A 机 B 机
( a ) 单缓冲
发送
缓冲区
接收
缓冲区
接收
缓冲区
发送
缓冲区
A 机 B 机
( b ) 双缓冲
第五章 设 备 管 理
5.3.3 循环缓冲
1,循环缓冲的组成
图 5-14 循环缓冲
R
G
G
G
R
G
1
6
5
4
2
3
N e x t i
N e x t g
R
G
G
G
R
C
1
6
5
4
2
3
N e x t i
N e x t g
c u r r e n t
第五章 设 备 管 理
2,
(1) Getbuf过程。
(2) Releasebuf过程。
第五章 设 备 管 理
3,进程同步
(1) Nexti指针追赶上 Nextg指针。
(2) Nextg指针追赶上 Nexti指针。
第五章 设 备 管 理
5.3.4 缓冲池 (Buffer Pool)
1,缓冲池的组成
1,缓冲池的组成
对于既可用于输入又可用于输出的公用缓冲池, 其中
至少应含有以下三种类型的缓冲区,① 空 (闲 )缓冲区; ②
装满输入数据的缓冲区; ③ 装满输出数据的缓冲区 。 为了
管理上的方便, 可将相同类型的缓冲区链成一个队列, 于是
可形成以下三个队列:
( 1) 空缓冲队列 emq。
(2) 输入队列 inq。
(3) 输出队列 outq。
第五章 设 备 管 理
2,Getbuf过程和 Putbuf过程
Procedure Getbuf(type)
begin
Wait(RS(type));
Wait(MS(type));
B(number) ∶ [KG-*3]= Takebuf(type);
Signal(MS(type));
end
Procedure Putbuf(type,number)
begin
Wait(MS(type));
Addbuf(type,number);
Signal(MS(type));
Signal(RS(type));
end
第五章 设 备 管 理
3,缓冲区的工作方式
图 5-15 缓冲区的工作方式
h i n
s o u t
s i n
h o u t
收容输入
提取输出
用户
程序
提取输入
收容输出
缓冲池
第五章 设 备 管 理
5.4 设 备 分 配
5.4.1 设备分配中的数据结构
1,设备控制表 DCT
设备类型 t y p e
设备标识符,d e v i c e i d
设备状态:等待/ 不等待 忙/ 闲
指向控制器表的指针
重复执行次数或时间
设备队列的队首指针
D C T 1
D C T 2
D C T n
设
备
控
制
表
集
合
图 5-16 设备控制表
第五章 设 备 管 理
2,控制器控制表,通道控制表和系统设备表
图 5-17 COCT,CHCT和 SDT表
( c ) 系统 设备 表 S D T
控制器标识符,c o n t r o l l e r i d
控制器状态:忙/ 闲
与控制器连接的通道表指针
控制器队列的队首指针
控制器队列的队尾指针
通道标识符,c h a n n e l i d
通道状态:忙/ 闲
与通道连接的控制器表首址
通道队列的队首指针
通道队列的队尾指针
( a ) 控制器表 C O C T ( b ) 通道表 C H C T
表目 1
?
表目 i
?
设备类
设备标识符
D C T
驱动程序入口
第五章 设 备 管 理
5.4.2
1,设备的固有属性
(1) 独享设备。
(2) 共享设备。
(3) 虚拟设备。
第五章 设 备 管 理
2,
(1) 先来先服务。
(2) 优先级高者优先。
第五章 设 备 管 理
3,设备分配中的安全性
1) 安全分配方式
2) 不安全分配方式
第五章 设 备 管 理
5.4.3 设备独立性
1,设备独立性 (Device Independence)
为了提高 OS的可适应性和可扩展性, 在现代 OS中都毫无
例外地实现了设备独立性, 也称为设备无关性 。 其基本含义
是,应用程序独立于具体使用的物理设备 。 为了实现设备独
立性而引入了逻辑设备和物理设备这两个概念 。 在应用程序
中, 使用逻辑设备名称来请求使用某类设备;而系统在实际
执行时, 还必须使用物理设备名称 。 因此, 系统须具有将逻
辑设备名称转换为某物理设备名称的功能, 这非常类似于存
储器管理中所介绍的逻辑地址和物理地址的概念 。
第五章 设 备 管 理
在实现了设备独立性的功能后, 可带来以下两方
面的好处 。
1) 设备分配时的灵活性
2) 易于实现 I/O
第五章 设 备 管 理
2,设备独立性软件
1)
这些公有操作包括,① 对独立设备的分配与回收;
② 将逻辑设备名映射为物理设备名, 进一步可以找到相应
物理设备的驱动程序; ③ 对设备进行保护, 禁止用户直
接访问设备; ④ 缓冲管理, 即对字符设备和块设备的缓
冲区进行有效的管理, 以提高 I/O的效率; ⑤ 差错控制 。
由于在 I/O操作中的绝大多数错误都与设备无关, 故主要由
设备驱动程序处理, 而设备独立性软件只处理那些设备驱
动程序无法处理的错误 。
第五章 设 备 管 理
2) 向用户层 (或文件层 )
无论何种设备,它们向用户所提供的接口应该
是相同的。 例如,对各种设备的读操作,在应用
程序中都使用 read; 而对各种设备的写操作,也都
使用 write。
第五章 设 备 管 理
3,逻辑设备名到物理设备名映射的实现
1) 逻辑设备表
2) LUT的设置问题
图 5-18 逻辑设备表
逻辑设备名 物理设备名
驱动程序
入口地址
/ d e v / t t y
/ d e v / p r i n t e r
3
5
1 0 2 4
2 0 4 6
? ? ?
逻辑设备名
/ d e v / t t y
/ d e v / p r i n t e r
?
系统设备表指针
3
5
( a ) ( b )
第五章 设 备 管 理
5.4.4 独占设备的分配程序
1,基本的设备分配程序
1) 分配设备
2) 分配控制器
3) 分配通道
第五章 设 备 管 理
2,设备分配程序的改进
1) 增加设备的独立性
2) 考虑多通路情况
第五章 设 备 管 理
5.4.5 SPOOLing技术
1,什么是 SPOOLing
为了缓和 CPU的高速性与 I/O设备低速性间的矛盾而引入了
脱机输入, 脱机输出技术 。 该技术是利用专门的外围控制机,
将低速 I/O设备上的数据传送到高速磁盘上;或者相反 。 事实上,
当系统中引入了多道程序技术后, 完全可以利用其中的一道程
序, 来模拟脱机输入时的外围控制机功能, 把低速 I/O设备上的
数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外
围控制机的功能, 把数据从磁盘传送到低速输出设备上 。 这样,
便可在主机的直接控制下, 实现脱机输入, 输出功能 。 此时的
外围操作与 CPU对数据的处理同时进行, 我们把这种在联机情
况 下 实 现 的 同 时 外 围 操 作 称 为 SPOOLing(Simultaneaus
Periphernal Operating On-Line),或称为假脱机操作 。
第五章 设 备 管 理
2,SPOOLing系统的组成
图 5-19 SPOOLing系统的组成
输入进程 SP
i
输入进程 SP
o
输入缓冲区 B
i
输出缓冲区 B
o
输入井
输出井
磁盘
输入设备
输出设备
第五章 设 备 管 理
3,共享打印机
共享打印机技术已被广泛地用于多用户系统和局域网络
中 。 当用户进程请求打印输出时, SPOOLing系统同意为它
打印输出, 但并不真正立即把打印机分配给该用户进程,
而只为它做两件事,① 由输出进程在输出井中为之申请一
个空闲磁盘块区, 并将要打印的数据送入其中; ② 输出进
程再为用户进程申请一张空白的用户请求打印表, 并将用户
的打印要求填入其中, 再将该表挂到请求打印队列上 。
第五章 设 备 管 理
4,SPOOLing系统的特点
(1) 提高了 I/O的速度。
(2) 将独占设备改造为共享设备。
(3) 实现了虚拟设备功能。
第五章 设 备 管 理
5.5 设 备 处 理
5.5.1 设备驱动程序的功能和特点
1,设备驱动程序的功能
(1) 接收由 I/O进程发来的命令和参数, 并将命令中的抽
象要求转换为具体要求, 例如, 将磁盘块号转换为磁盘的
盘面, 磁道号及扇区号 。
(2) 检查用户 I/O请求的合法性, 了解 I/O设备的状态, 传
递有关参数, 设置设备的工作方式 。
第五章 设 备 管 理
(3) 发出 I/O命令, 如果设备空闲, 便立即启动 I/O设备
去完成指定的 I/O操作;如果设备处于忙碌状态, 则将请求
者的请求块挂在设备队列上等待 。
(4) 及时响应由控制器或通道发来的中断请求, 并根据
其中断类型调用相应的中断处理程序进行处理 。
(5) 对于设置有通道的计算机系统, 驱动程序还应能够
根据用户的 I/O请求, 自动地构成通道程序 。
第五章 设 备 管 理
2,设备处理方式
(1) 为每一类设备设置一个进程,专门用于执行这类设
备的 I/O操作,
(2) 在整个系统中设置一个 I/O进程,专门用于执行系统
中所有各类设备的 I/O操作。
(3) 不设置专门的设备处理进程, 而只为各类设备设置
相应的设备处理程序 (模块 ),供用户进程或系统进程调用 。
第五章 设 备 管 理
3,设备驱动程序的特点
(1) 驱动程序主要是指在请求 I/O的进程与设备控制器之间
的一个通信和转换程序。
(2) 驱动程序与设备控制器和 I/O设备的硬件特性紧密相关,
因而对不同类型的设备应配置不同的驱动程序 。
(3) 驱动程序与 I/O设备所采用的 I/O控制方式紧密相关 。
(4) 由于驱动程序与硬件紧密相关, 因而其中的一部分必
须用汇编语言书写 。
第五章 设 备 管 理
5.5.2 设备驱动程序的处理过程
1.
2,检查 I/O
3,读出和检查设备的状态
4,传送必要的参数
5,工作方式的设置
6,启动 I/O设备
第五章 设 备 管 理
图 5-20 中断现场保护示意图
P S W
程序状态字
P C ( N + 1)
程序计数器
R
0
R
n
?
寄存器
?
?
开始
返回
用户程序 中断服务子例程
P S W
P C ( N + 1)
中断栈
T
T + M
线指针
Y
N
N - 1
R
0
R
n
?
第五章 设 备 管 理
唤醒被阻塞的
驱动程序进程
对被中断进程的
C P U 环境进行保护
分析中断原因,转入
相应的中断处理程序
终端中断
处理程序
打印机中断
处理程序
磁盘中断
处理程序
?
恢复被中断进
程的 C P U 现场
?
返回被中断的进
程,继续执行
中断请求信号
图
5-
21
中
断
处
理
流
程
第五章 设 备 管 理
5.6 磁盘存储器管理
5.6.1 磁盘性能简述
1,
G a p
1 0 2 0 3 1 29 2 29 3
F i e l d G a p F i e l d G a p G a p F i e l d G a p F i e l d G a p
17 7 41 5 1 5 20 17 7 41 5 1 5 20
ID D a t a ID D a t a
G a p
1 29 2 29 3
F i e l d G a p F i e l d
17 7 41 5 1 5 20
ID D a t a
S e c t o r P h y s i c a l S e c t o r 0 P h y s i c a l S e c t o r 1 P h y s i c a l S e c t o r 2 9
B y t e s
S y n c h
B y t e
T r a c k
#
H e a d
#
S e c t o r
#
B y t e s 1 2 1 1
C R C
3
S y n c h
B y t e
D a t a C R C
1 5 1 2 2
6 0 0 B y t e s / S e c t o r
G a p
图 5-22 磁盘的格式化
第五章 设 备 管 理
2,磁盘的类型
1)
这种磁盘在每条磁道上都有一读 /写磁头, 所有的磁头都
被装在一刚性磁臂中 。 通过这些磁头可访问所有各磁道, 并
进行并行读 /写, 有效地提高了磁盘的 I/O速度 。 这种结构的磁
盘主要用于大容量磁盘上 。
2)
每一个盘面仅配有一个磁头, 也被装入磁臂中 。 为能访
问该盘面上的所有磁道, 该磁头必须能移动以进行寻道 。 可
见, 移动磁头仅能以串行方式读 /写, 致使其 I/O速度较慢;但
由于其结构简单, 故仍广泛应用于中小型磁盘设备中 。
第五章 设 备 管 理
3,磁盘访问时间
1) 寻道时间 Ts
这是指把磁臂 (磁头 )移动到指定磁道上所经历的时间 。
该时间是启动磁臂的时间 s与磁头移动 n条磁道所花费的时间
之和,
Ts=m× n+s
其中, m是一常数, 与磁盘驱动器的速度有关, 对一般磁盘,
m=0.2;对高速磁盘, m≤0.1,磁臂的启动时间约为 2 ms。
这样, 对一般的温盘, 其寻道时间将随寻道距离的增加而增
大, 大体上是 5~30 ms。
第五章 设 备 管 理
2) 旋转延迟时间 Tτ
这是指定扇区移动到磁头下面所经历的时间 。 对于硬
盘, 典型的旋转速度大多为 5400 r/min,每转需时 11.1 ms,
平均旋转延迟时间 Tτ为 5.55 ms;对于软盘, 其旋转速度为
300 r/min或 600 r/min,这样, 平均 Tτ为 50~100 ms。
第五章 设 备 管 理
3) 传输时间 Tt
这是指把数据从磁盘读出或向磁盘写入数据所经历的
时间 。 Tt的大小与每次所读 /写的字节数 b和旋转速度有关:
rN
bT
t ?
其中, r为磁盘每秒钟的转数; N为一条磁道上的字节数,
当一次读 /写的字节数相当于半条磁道上的字节数时, Tt与
Tτ相同, 因此, 可将访问时间 Ta表示为:
rN
b
rTT sa ??? 2
1
第五章 设 备 管 理
5.6.2 磁盘调度
1,先来先服务 FCFS(First-Come,First Served)
图
5-
23F
CF
S
调
度
算
法
第五章 设 备 管 理
2,最短寻道时间优先 SSTF(Shortest Seek Time First)
图 5-24 SSTF调度算法
第五章 设 备 管 理
3,扫描 (SCAN)算法
1) 进程“饥饿”现象
SSTF算法虽然能获得较好的寻道性能, 但却可能导
致某个进程发生, 饥饿, (Starvation)现象 。 因为只要不断
有新进程的请求到达, 且其所要访问的磁道与磁头当前所
在磁道的距离较近, 这种新进程的 I/O请求必须优先满足 。
对 SSTF算法略加修改后所形成的 SCAN算法, 即可防止老
进程出现, 饥饿, 现象 。
第五章 设 备 管 理
2) SCAN算法
图
5-
25S
CA
N
调
度
算
法
示
例
第五章 设 备 管 理
4,循环扫描 (CSCAN)算法
图
5-
26C
SC
AN
调
度
算
法
示
例
第五章 设 备 管 理
5,N-Step-SCAN和 FSCAN调度算法
1) N-Step-SCAN
在 SSTF,SCAN及 CSCAN几种调度算法中, 都可能出现磁臂停留在
某处不动的情况, 例如, 有一个或几个进程对某一磁道有较高的访问频率,
即这个 (些 )进程反复请求对某一磁道的 I/O操作, 从而垄断了整个磁盘设备 。
我们把这一现象称为, 磁臂粘着, (Armstickiness)。 在高密度磁盘上容易
出现此情况 。 N步 SCAN算法是将磁盘请求队列分成若干个长度为 N的子
队列, 磁盘调度将按 FCFS算法依次处理这些子队列 。 而每处理一个队列
时又是按 SCAN算法, 对一个队列处理完后, 再处理其他队列 。 当正在处
理某子队列时, 如果又出现新的磁盘 I/O请求, 便将新请求进程放入其他
队列, 这样就可避免出现粘着现象 。 当 N值取得很大时, 会使 N步扫描法
的性能接近于 SCAN算法的性能; 当 N=1时, N步 SCAN算法便蜕化为
FCFS算法 。
第五章 设 备 管 理
2) FSCAN
FSCAN算法实质上是 N步 SCAN算法的简化, 即
FSCAN只将磁盘请求队列分成两个子队列 。 一个是由当前
所有请求磁盘 I/O的进程形成的队列, 由磁盘调度按 SCAN
算法进行处理 。 在扫描期间, 将新出现的所有请求磁盘 I/O
的进程, 放入另一个等待处理的请求队列 。 这样, 所有的
新请求都将被推迟到下一次扫描时处理 。
第五章 设 备 管 理
5.6.3 磁盘高速缓存 (Disk Cache)
1,磁盘高速缓存的形式
是指利用内存中的存储空间, 来暂存从磁盘中读出的一系列
盘块中的信息 。 因此, 这里的高速缓存是一组在逻辑上属于磁盘,
而物理上是驻留在内存中的盘块 。 高速缓存在内存中可分成两种
形式 。 第一种是在内存中开辟一个单独的存储空间来作为磁盘高
速缓存, 其大小是固定的, 不会受应用程序多少的影响;第二种
是把所有未利用的内存空间变为一个缓冲池, 供请求分页系统和
磁盘 I/O时 (作为磁盘高速缓存 )共享 。 此时高速缓存的大小, 显然
不再是固定的 。 当磁盘 I/O的频繁程度较高时, 该缓冲池可能包
含更多的内存空间;而在应用程序运行得较多时, 该缓冲池可能
只剩下较少的内存空间 。
第五章 设 备 管 理
2,数据交付方式
系统可以采取两种方式, 将数据交付给请求进程:
(1) 数据交付 。 这是直接将高速缓存中的数据, 传送
到请求者进程的内存工作区中 。
(2) 指针交付 。 只将指向高速缓存中某区域的指针,
交付给请求者进程 。
后一种方式由于所传送的数据量少, 因而节省了数
第五章 设 备 管 理
3,置换算法
由于请求调页中的联想存储器与高速缓存 (磁盘 I/O中 )
的工作情况不同, 因而使得在置换算法中所应考虑的问题
也有所差异 。 因此, 现在不少系统在设计其高速缓存的置
换算法时, 除了考虑到最近最久未使用这一原则外, 还考
(1) 访问频率。
(2) 可预见性。
(3) 数据的一致性。
第五章 设 备 管 理
4,周期性地写回磁盘
在 UNIX系统中专门增设了一个修改 (update)程序, 使之
在后台运行, 该程序周期性地调用一个系统调用 SYNC。 该
调用的主要功能是强制性地将所有在高速缓存中已修改的
盘块数据写回磁盘 。 一般是把两次调用 SYNC的时间间隔定
为 30 s。 这样, 因系统故障所造成的工作损失不会超过 30 s
的劳动量 。 而在 MS-DOS中所采用的方法是:只要高速缓存
中的某盘块数据被修改, 便立即将它写回磁盘, 并将这种
高速缓存称为, 写穿透, 高速缓存, (write-through cache)。
MS-DOS所采用的写回方式, 几乎不会造成数据的丢失,
但须频繁地启动磁盘 。
第五章 设 备 管 理
5.6.4 提高磁盘 I/O速度的其它方法
1,提前读 (Read-Ahead)
2,延迟写
3,优化物理块的分布
4,虚拟盘
第五章 设 备 管 理
5.6.5 廉价磁盘冗余阵列
1,并行交叉存取
图 5-27 磁盘并行交叉存取方式
1 2 3
…
N
第五章 设 备 管 理
2,RAID
(1) RAID 0级。
(2) RAID 1级。
(3) RAID 3级。
(4) RAID 5级。
(5) RAID 6级和 RAID 7级。
第五章 设 备 管 理
3,RAID的优点
(1) 可靠性高。
(2) 磁盘 I/O速度高。
(3) 性能 /价格比高。
第五章 设备管理
5.1 I/O系统
5.2 I/O控制方式
5.3 缓冲管理
5.4 设备分配
5.5 设备处理
5.6 磁盘存储器管理
第五章 设 备 管 理
5.1 I/O 系 统
5.1.1 I/O设备
1,I/O设备的类型
1)
按传输速度的高低, 可将 I/O设备分为三类 。 第一类是低速
设备, 这是指其传输速率仅为每秒钟几个字节至数百个字节的
一类设备 。 属于低速设备的典型设备有键盘, 鼠标器, 语音的
输入和输出等设备 。 第二类是中速设备, 这是指其传输速率在
每秒钟数千个字节至数万个字节的一类设备 。 典型的中速设备
有行式打印机, 激光打印机等 。 第三类是高速设备, 这是指其
传输速率在数百千个字节至数十兆字节的一类设备 。 典型的高
速设备有磁带机, 磁盘机, 光盘机等 。
第五章 设 备 管 理
2)
可将 I/O设备分成两类 。 第一类是块设备 (Block Device),
这类设备用于存储信息 。 由于信息的存取总是以数据块为单
位, 故而得名 。 它属于有结构设备 。 典型的块设备是磁盘,
每个盘块的大小为 512 B~4 KB。 磁盘设备的基本特征是其传
输速率较高, 通常每秒钟为几兆位;另一特征是可寻址, 即
对它可随机地读 /写任一块;此外, 磁盘设备的 I/O常采用
DMA方式 。 第二类是字符设备 (Character Device),用于数据
的输入和输出 。 其基本单位是字符, 故称为字符设备 。
第五章 设 备 管 理
3)
这种分类方式可将 I/O
(1) 独占设备。
(2) 共享设备。
(3) 虚拟设备。
第五章 设 备 管 理
2,设备与控制器之间的接口
图 5-1 设备与控制器间的接口
缓冲 转换器
控制逻辑
信号
数据
数据信号线
状态信号线
控制信号线
至设备
控制器
I / O 设备
第五章 设 备 管 理
5.1.2 设备控制器
1,设备控制器的基本功能
1) 接收和识别命令
2) 数据交换
3) 标识和报告设备的状态
4) 地址识别
5) 数据缓冲
6) 差错控制
第五章 设 备 管 理
2,设备控制器的组成
图 5-2 设备控制器的组成
数据寄存器
控制/ 状态
寄存器
数据线
I / O 逻辑
?
控制器
与设备
接口1
控制器
与设备
接口 i
数据
状态
控制
数据
状态
控制
?
地址线
控制线
C P U 与控制器接口 控制 器与设 备接口
第五章 设 备 管 理
5.1.3 I/O通道
1,I/O通道 (I/O Channel)设备的引入
实际上, I/O通道是一种特殊的处理机 。 它具有执行 I/O
指令的能力, 并通过执行通道 (I/O)程序来控制 I/O操作 。 但
I/O通道又与一般的处理机不同, 主要表现在以下两个方面:
一是其指令类型单一, 这是由于通道硬件比较简单,
其所能执行的命令, 主要局限于与 I/O操作有关的指令; 再
就是通道没有自己的内存, 通道所执行的通道程序是放在主
机的内存中的, 换言之, 是通道与 CPU共享内存 。
第五章 设 备 管 理
2,通道类型
1) 字节多路通道 (Byte Multiplexor Channel)
图 5-3 字节多路通道的工作原理
控制器 A
控制器 B
控制器 C
控制器 D
控制器 N
?
A
1
A
2
A
3
?子通道 A
B
1
B
2
B
3
?子通道 B
C
1
C
2
C
3
?子通道 C
N
1
N
2
N
3
?子通道 N
A
1
B
1
C
1
? A
2
B
2
C
2
…
设备
第五章 设 备 管 理
2) 数组选择通道 (Block Selector Channel)
字节多路通道不适于连接高速设备, 这推动了按数组方
式进行数据传送的数组选择通道的形成 。 这种通道虽然可以
连接多台高速设备, 但由于它只含有一个分配型子通道, 在
一段时间内只能执行一道通道程序, 控制一台设备进行数据
传送, 致使当某台设备占用了该通道后, 便一直由它独占,
即使是它无数据传送, 通道被闲置, 也不允许其它设备使用
该通道, 直至该设备传送完毕释放该通道 。 可见, 这种通道
的利用率很低 。
第五章 设 备 管 理
3) 数组多路通道 (Block Multiplexor Channel)
数组选择通道虽有很高的传输速率, 但它却每次只允
许一个设备传输数据 。 数组多路通道是将数组选择通道传
输速率高和字节多路通道能使各子通道 (设备 )分时并行操作
的优点相结合而形成的一种新通道 。 它含有多个非分配型
子通道, 因而这种通道既具有很高的数据传输速率, 又能
获得令人满意的通道利用率 。 也正因此, 才使该通道能被
广泛地用于连接多台高, 中速的外围设备, 其数据传送是
按数组方式进行的 。
第五章 设 备 管 理
3.,瓶颈”问题
图 5-4 单通路 I/O系统
设备 1
设备 2
设备 3
设备 4
设备 5
设备 6
设备 7
控制器 1
控制器 2
控制器 3
控制器 4
通道 1
通道 2
存储器
第五章 设 备 管 理
图 5-5 多通路 I/O系统
I / O 设备
控制器 1
控制器 2
通道 1
通道 2
存储器
I / O 设备
I / O 设备
I / O 设备
第五章 设 备 管 理
5.1.4 总线系统
图 5-6 总线型 I/O系统结构
C P U 存储器
磁盘
控制器
打印机
控制器
?
其它
控制器
磁盘驱动器
打印机
系统总线
第五章 设 备 管 理
1,ISA和 EISA总线
1) ISA(Industry Standard Architecture)
这是为了 1984年推出的 80286型微机而设计的总线结构 。
其总线的带宽为 8位, 最高传输速率为 2 Mb/s。 之后不久又推
出了 16位的 (EISA)总线, 其最高传输速率为 8 Mb/s,后又升
至 16 Mb/s,能连接 12台设备 。
2) EISA(Extended ISA)
到 80年代末期, ISA总线已难于满足带宽和传输速率的要
求, 于是人们又开发出扩展 ISA(EISA)总线, 其带宽为 32位,
总线的传输速率高达 32 Mb/s,同样可以连接 12台外部设备 。
第五章 设 备 管 理
2,局部总线 (Local Bus)
1) VESA(Video Electronic Standard Association)总线
2) PCI(Peripheral Component Interface)
第五章 设 备 管 理
5.2 I/O控制方式
5.2.1 程序 I/O方式
在程序 I/O方式中, 由于 CPU的高速性和 I/O设备的低速
性, 致使 CPU的绝大部分时间都处于等待 I/O设备完成数据
I/O的循环测试中, 造成对 CPU的极大浪费 。 在该方式中,
CPU之所以要不断地测试 I/O设备的状态, 就是因为在 CPU
中无中断机构, 使 I/O设备无法向 CPU报告它已完成了一个
字符的输入操作 。
第五章 设 备 管 理
图 5-7 程序 I/O和中断驱动方式的流程
向 I / O 控制器
发读命令
读 I / O 控制器
的状态
检查
状态?
从 I / O 控制器
中读入字
向存储器
中写字
传送
完成?
未
就
绪
就绪
出错
C P U →I/ O
I / O →C P U
I / O →C P U
C P U → 内存
下条指令
完成
未完
向 I / O 控制器
发读命令
读 I / O 控制器
的状态
检查
状态?
从 I / O 控制
器中读字
向内存
中写字
传送
完成?
就绪
出错
C P U →I/ O
I / O →C P U
I / O →C P U
C P U → 内存
下条指令
完成
未完
中断
C P U 做其它事
向 I / O 控制器
发布读块命令
C P U →D M A
C P U 做其它事
读 D MA 控制
器的状态
中断
D M A →C P U
下条指令
( a ) 程序 I / O 方式 ( b ) 中断驱动方式
( c ) D M A 方式
第五章 设 备 管 理
5.2.2 中断驱动 I/O控制方式
在 I/O设备输入每个数据的过程中, 由于无须 CPU干预,
因而可使 CPU与 I/O设备并行工作 。 仅当输完一个数据时, 才
需 CPU花费极短的时间去做些中断处理 。 可见, 这样可使
CPU和 I/O设备都处于忙碌状态, 从而提高了整个系统的资源
利用率及吞吐量 。 例如, 从终端输入一个字符的时间约为 100
ms,而将字符送入终端缓冲区的时间小于 0.1 ms。 若采用程
序 I/O方式, CPU约有 99.9 ms的时间处于忙 —等待中 。 采用中
断驱动方式后, CPU可利用这 99.9 ms的时间去做其它事情,
而仅用 0.1 ms的时间来处理由控制器发来的中断请求 。 可见,
中断驱动方式可以成百倍地提高 CPU的利用率 。
第五章 设 备 管 理
5.2.3 直接存储器访问 DMA I/O控制方式
1,DMA(Direct Memory Access)控制方式的引入
该方式的特点是,① 数据传输的基本单位是数据块, 即在
CPU与 I/O设备之间, 每次传送至少一个数据块; ② 所传送的
数据是从设备直接送入内存的, 或者相反; ③ 仅在传送一个
或多个数据块的开始和结束时, 才需 CPU干预, 整块数据的传
送是在控制器的控制下完成的 。 可见, DMA方式较之中断驱
动方式, 又是成百倍地减少了 CPU对 I/O的干预, 进一步提高
了 CPU与 I/O设备的并行操作程度 。
第五章 设 备 管 理
2,DMA控制器的组成
图 5-8 DMA控制器的组成
DR
M A R
DC
CR
I / O
控
制
逻
辑
…
主机—控制器接口 控制器与块设备接口
c o u n t
内存C P U
命令
系统总线 D M A 控制器
第五章 设 备 管 理
为了实现在主机与控制器之间成块数据的直接交换, 必
须在 DMA
(1) 命令 /状态寄存器 CR。 用于接收从 CPU发来的 I/O命令
或有关控制信息, 或设备的状态 。
(2) 内存地址寄存器 MAR。 在输入时, 它存放把数据从
设备传送到内存的起始目标地址;在输出时, 它存放由内存
到设备的内存源地址 。
(3) 数据寄存器 DR。 用于暂存从设备到内存, 或从内存
到设备的数据 。
(4) 数据计数器 DC。 存放本次 CPU要读或写的字 (节 )数。
第五章 设 备 管 理
3,DMA工作过程
图 5-9 DMA方式的工作流程
设置 AR 和 DC 初值
启动 D M A 传送命令
挪用存储器周期传送
数据字
存储器地址增 1
字计数寄存器减 1
DC = 0?
请求中断
在继续执行用户
程序的同时,准
备又一次传送
否
是
第五章 设 备 管 理
5.2.4 I/O通道控制方式
1,I/O通道控制方式的引入
I/O通道方式是 DMA方式的发展, 它可进一步减少 CPU
的干预, 即把对一个数据块的读 (或写 )为单位的干预, 减少
为对一组数据块的读 (或写 )及有关的控制和管理为单位的干
预 。 同时, 又可实现 CPU,通道和 I/O设备三者的并行操作,
从而更有效地提高整个系统的资源利用率 。 例如, 当 CPU要
完成一组相关的读 (或写 )操作及有关控制时, 只需向 I/O通道
发送一条 I/O指令, 以给出其所要执行的通道程序的首址和要
访问的 I/O设备, 通道接到该指令后, 通过执行通道程序便可
完成 CPU指定的 I/O任务 。
第五章 设 备 管 理
2,通道程序
(1) 操作码。
(2) 内存地址。
(3) 计数。
(4) 通道程序结束位 P。
(5) 记录结束标志 R。
第五章 设 备 管 理
操作 P R 计数 内存地址
WRITE 0 0 80 813
WRITE 0 0 140 1034
WRITE 0 1 60 5830
WRITE 0 1 300 2000
WRITE 0 0 250 1850
WRITE 1 1 250 720
第五章 设 备 管 理
5.3 缓 冲 管 理
5.3.1 缓冲的引入
(1) 缓和 CPU与 I/O设备间速度不匹配的矛盾。
(2) 减少对 CPU的中断频率,放宽对 CPU中断响应时间的
限制。
(3) 提高 CPU和 I/O设备之间的并行性。
第五章 设 备 管 理
图 5-10 利用缓冲寄存器实现缓冲
1 位缓冲
9, 6 K b / s
8 位缓冲寄存器
送内存
9, 6 K b / s
8 位缓冲寄存器
9, 6 K b / s
送内存
( b )
( a )
( c )
第五章 设 备 管 理
5.3.2 单缓冲和双缓冲
1,单缓冲 (Single Buffer)
工作区
处理 ( C )
缓冲区
传送 ( M ) 输入 ( T )
I / O 设备
( a )
T
1
M
1
C
1
T
2
M
2
C
2
T
3
M
3
C
3
T
4
t
( b )
用户进程
图 5-11 单缓冲工作示意图
第五章 设 备 管 理
2,双缓冲 (Double Buffer)
工作区
用户进程
缓冲区 1
缓冲区 2
I / O 设备
T
1
( 缓冲 1)
M
1
C
1
M
2
C
2
M
3
C
3
T
2
( 缓冲 2) T
3
( 缓冲 3)
M
4
C
4
T
4
( 缓冲 4)
( a )
( b )
图 5-12 双缓冲工作示意图
第五章 设 备 管 理
图 5-13 双机通信时缓冲区的设置
缓冲区 缓冲区
A 机 B 机
( a ) 单缓冲
发送
缓冲区
接收
缓冲区
接收
缓冲区
发送
缓冲区
A 机 B 机
( b ) 双缓冲
第五章 设 备 管 理
5.3.3 循环缓冲
1,循环缓冲的组成
图 5-14 循环缓冲
R
G
G
G
R
G
1
6
5
4
2
3
N e x t i
N e x t g
R
G
G
G
R
C
1
6
5
4
2
3
N e x t i
N e x t g
c u r r e n t
第五章 设 备 管 理
2,
(1) Getbuf过程。
(2) Releasebuf过程。
第五章 设 备 管 理
3,进程同步
(1) Nexti指针追赶上 Nextg指针。
(2) Nextg指针追赶上 Nexti指针。
第五章 设 备 管 理
5.3.4 缓冲池 (Buffer Pool)
1,缓冲池的组成
1,缓冲池的组成
对于既可用于输入又可用于输出的公用缓冲池, 其中
至少应含有以下三种类型的缓冲区,① 空 (闲 )缓冲区; ②
装满输入数据的缓冲区; ③ 装满输出数据的缓冲区 。 为了
管理上的方便, 可将相同类型的缓冲区链成一个队列, 于是
可形成以下三个队列:
( 1) 空缓冲队列 emq。
(2) 输入队列 inq。
(3) 输出队列 outq。
第五章 设 备 管 理
2,Getbuf过程和 Putbuf过程
Procedure Getbuf(type)
begin
Wait(RS(type));
Wait(MS(type));
B(number) ∶ [KG-*3]= Takebuf(type);
Signal(MS(type));
end
Procedure Putbuf(type,number)
begin
Wait(MS(type));
Addbuf(type,number);
Signal(MS(type));
Signal(RS(type));
end
第五章 设 备 管 理
3,缓冲区的工作方式
图 5-15 缓冲区的工作方式
h i n
s o u t
s i n
h o u t
收容输入
提取输出
用户
程序
提取输入
收容输出
缓冲池
第五章 设 备 管 理
5.4 设 备 分 配
5.4.1 设备分配中的数据结构
1,设备控制表 DCT
设备类型 t y p e
设备标识符,d e v i c e i d
设备状态:等待/ 不等待 忙/ 闲
指向控制器表的指针
重复执行次数或时间
设备队列的队首指针
D C T 1
D C T 2
D C T n
设
备
控
制
表
集
合
图 5-16 设备控制表
第五章 设 备 管 理
2,控制器控制表,通道控制表和系统设备表
图 5-17 COCT,CHCT和 SDT表
( c ) 系统 设备 表 S D T
控制器标识符,c o n t r o l l e r i d
控制器状态:忙/ 闲
与控制器连接的通道表指针
控制器队列的队首指针
控制器队列的队尾指针
通道标识符,c h a n n e l i d
通道状态:忙/ 闲
与通道连接的控制器表首址
通道队列的队首指针
通道队列的队尾指针
( a ) 控制器表 C O C T ( b ) 通道表 C H C T
表目 1
?
表目 i
?
设备类
设备标识符
D C T
驱动程序入口
第五章 设 备 管 理
5.4.2
1,设备的固有属性
(1) 独享设备。
(2) 共享设备。
(3) 虚拟设备。
第五章 设 备 管 理
2,
(1) 先来先服务。
(2) 优先级高者优先。
第五章 设 备 管 理
3,设备分配中的安全性
1) 安全分配方式
2) 不安全分配方式
第五章 设 备 管 理
5.4.3 设备独立性
1,设备独立性 (Device Independence)
为了提高 OS的可适应性和可扩展性, 在现代 OS中都毫无
例外地实现了设备独立性, 也称为设备无关性 。 其基本含义
是,应用程序独立于具体使用的物理设备 。 为了实现设备独
立性而引入了逻辑设备和物理设备这两个概念 。 在应用程序
中, 使用逻辑设备名称来请求使用某类设备;而系统在实际
执行时, 还必须使用物理设备名称 。 因此, 系统须具有将逻
辑设备名称转换为某物理设备名称的功能, 这非常类似于存
储器管理中所介绍的逻辑地址和物理地址的概念 。
第五章 设 备 管 理
在实现了设备独立性的功能后, 可带来以下两方
面的好处 。
1) 设备分配时的灵活性
2) 易于实现 I/O
第五章 设 备 管 理
2,设备独立性软件
1)
这些公有操作包括,① 对独立设备的分配与回收;
② 将逻辑设备名映射为物理设备名, 进一步可以找到相应
物理设备的驱动程序; ③ 对设备进行保护, 禁止用户直
接访问设备; ④ 缓冲管理, 即对字符设备和块设备的缓
冲区进行有效的管理, 以提高 I/O的效率; ⑤ 差错控制 。
由于在 I/O操作中的绝大多数错误都与设备无关, 故主要由
设备驱动程序处理, 而设备独立性软件只处理那些设备驱
动程序无法处理的错误 。
第五章 设 备 管 理
2) 向用户层 (或文件层 )
无论何种设备,它们向用户所提供的接口应该
是相同的。 例如,对各种设备的读操作,在应用
程序中都使用 read; 而对各种设备的写操作,也都
使用 write。
第五章 设 备 管 理
3,逻辑设备名到物理设备名映射的实现
1) 逻辑设备表
2) LUT的设置问题
图 5-18 逻辑设备表
逻辑设备名 物理设备名
驱动程序
入口地址
/ d e v / t t y
/ d e v / p r i n t e r
3
5
1 0 2 4
2 0 4 6
? ? ?
逻辑设备名
/ d e v / t t y
/ d e v / p r i n t e r
?
系统设备表指针
3
5
( a ) ( b )
第五章 设 备 管 理
5.4.4 独占设备的分配程序
1,基本的设备分配程序
1) 分配设备
2) 分配控制器
3) 分配通道
第五章 设 备 管 理
2,设备分配程序的改进
1) 增加设备的独立性
2) 考虑多通路情况
第五章 设 备 管 理
5.4.5 SPOOLing技术
1,什么是 SPOOLing
为了缓和 CPU的高速性与 I/O设备低速性间的矛盾而引入了
脱机输入, 脱机输出技术 。 该技术是利用专门的外围控制机,
将低速 I/O设备上的数据传送到高速磁盘上;或者相反 。 事实上,
当系统中引入了多道程序技术后, 完全可以利用其中的一道程
序, 来模拟脱机输入时的外围控制机功能, 把低速 I/O设备上的
数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外
围控制机的功能, 把数据从磁盘传送到低速输出设备上 。 这样,
便可在主机的直接控制下, 实现脱机输入, 输出功能 。 此时的
外围操作与 CPU对数据的处理同时进行, 我们把这种在联机情
况 下 实 现 的 同 时 外 围 操 作 称 为 SPOOLing(Simultaneaus
Periphernal Operating On-Line),或称为假脱机操作 。
第五章 设 备 管 理
2,SPOOLing系统的组成
图 5-19 SPOOLing系统的组成
输入进程 SP
i
输入进程 SP
o
输入缓冲区 B
i
输出缓冲区 B
o
输入井
输出井
磁盘
输入设备
输出设备
第五章 设 备 管 理
3,共享打印机
共享打印机技术已被广泛地用于多用户系统和局域网络
中 。 当用户进程请求打印输出时, SPOOLing系统同意为它
打印输出, 但并不真正立即把打印机分配给该用户进程,
而只为它做两件事,① 由输出进程在输出井中为之申请一
个空闲磁盘块区, 并将要打印的数据送入其中; ② 输出进
程再为用户进程申请一张空白的用户请求打印表, 并将用户
的打印要求填入其中, 再将该表挂到请求打印队列上 。
第五章 设 备 管 理
4,SPOOLing系统的特点
(1) 提高了 I/O的速度。
(2) 将独占设备改造为共享设备。
(3) 实现了虚拟设备功能。
第五章 设 备 管 理
5.5 设 备 处 理
5.5.1 设备驱动程序的功能和特点
1,设备驱动程序的功能
(1) 接收由 I/O进程发来的命令和参数, 并将命令中的抽
象要求转换为具体要求, 例如, 将磁盘块号转换为磁盘的
盘面, 磁道号及扇区号 。
(2) 检查用户 I/O请求的合法性, 了解 I/O设备的状态, 传
递有关参数, 设置设备的工作方式 。
第五章 设 备 管 理
(3) 发出 I/O命令, 如果设备空闲, 便立即启动 I/O设备
去完成指定的 I/O操作;如果设备处于忙碌状态, 则将请求
者的请求块挂在设备队列上等待 。
(4) 及时响应由控制器或通道发来的中断请求, 并根据
其中断类型调用相应的中断处理程序进行处理 。
(5) 对于设置有通道的计算机系统, 驱动程序还应能够
根据用户的 I/O请求, 自动地构成通道程序 。
第五章 设 备 管 理
2,设备处理方式
(1) 为每一类设备设置一个进程,专门用于执行这类设
备的 I/O操作,
(2) 在整个系统中设置一个 I/O进程,专门用于执行系统
中所有各类设备的 I/O操作。
(3) 不设置专门的设备处理进程, 而只为各类设备设置
相应的设备处理程序 (模块 ),供用户进程或系统进程调用 。
第五章 设 备 管 理
3,设备驱动程序的特点
(1) 驱动程序主要是指在请求 I/O的进程与设备控制器之间
的一个通信和转换程序。
(2) 驱动程序与设备控制器和 I/O设备的硬件特性紧密相关,
因而对不同类型的设备应配置不同的驱动程序 。
(3) 驱动程序与 I/O设备所采用的 I/O控制方式紧密相关 。
(4) 由于驱动程序与硬件紧密相关, 因而其中的一部分必
须用汇编语言书写 。
第五章 设 备 管 理
5.5.2 设备驱动程序的处理过程
1.
2,检查 I/O
3,读出和检查设备的状态
4,传送必要的参数
5,工作方式的设置
6,启动 I/O设备
第五章 设 备 管 理
图 5-20 中断现场保护示意图
P S W
程序状态字
P C ( N + 1)
程序计数器
R
0
R
n
?
寄存器
?
?
开始
返回
用户程序 中断服务子例程
P S W
P C ( N + 1)
中断栈
T
T + M
线指针
Y
N
N - 1
R
0
R
n
?
第五章 设 备 管 理
唤醒被阻塞的
驱动程序进程
对被中断进程的
C P U 环境进行保护
分析中断原因,转入
相应的中断处理程序
终端中断
处理程序
打印机中断
处理程序
磁盘中断
处理程序
?
恢复被中断进
程的 C P U 现场
?
返回被中断的进
程,继续执行
中断请求信号
图
5-
21
中
断
处
理
流
程
第五章 设 备 管 理
5.6 磁盘存储器管理
5.6.1 磁盘性能简述
1,
G a p
1 0 2 0 3 1 29 2 29 3
F i e l d G a p F i e l d G a p G a p F i e l d G a p F i e l d G a p
17 7 41 5 1 5 20 17 7 41 5 1 5 20
ID D a t a ID D a t a
G a p
1 29 2 29 3
F i e l d G a p F i e l d
17 7 41 5 1 5 20
ID D a t a
S e c t o r P h y s i c a l S e c t o r 0 P h y s i c a l S e c t o r 1 P h y s i c a l S e c t o r 2 9
B y t e s
S y n c h
B y t e
T r a c k
#
H e a d
#
S e c t o r
#
B y t e s 1 2 1 1
C R C
3
S y n c h
B y t e
D a t a C R C
1 5 1 2 2
6 0 0 B y t e s / S e c t o r
G a p
图 5-22 磁盘的格式化
第五章 设 备 管 理
2,磁盘的类型
1)
这种磁盘在每条磁道上都有一读 /写磁头, 所有的磁头都
被装在一刚性磁臂中 。 通过这些磁头可访问所有各磁道, 并
进行并行读 /写, 有效地提高了磁盘的 I/O速度 。 这种结构的磁
盘主要用于大容量磁盘上 。
2)
每一个盘面仅配有一个磁头, 也被装入磁臂中 。 为能访
问该盘面上的所有磁道, 该磁头必须能移动以进行寻道 。 可
见, 移动磁头仅能以串行方式读 /写, 致使其 I/O速度较慢;但
由于其结构简单, 故仍广泛应用于中小型磁盘设备中 。
第五章 设 备 管 理
3,磁盘访问时间
1) 寻道时间 Ts
这是指把磁臂 (磁头 )移动到指定磁道上所经历的时间 。
该时间是启动磁臂的时间 s与磁头移动 n条磁道所花费的时间
之和,
Ts=m× n+s
其中, m是一常数, 与磁盘驱动器的速度有关, 对一般磁盘,
m=0.2;对高速磁盘, m≤0.1,磁臂的启动时间约为 2 ms。
这样, 对一般的温盘, 其寻道时间将随寻道距离的增加而增
大, 大体上是 5~30 ms。
第五章 设 备 管 理
2) 旋转延迟时间 Tτ
这是指定扇区移动到磁头下面所经历的时间 。 对于硬
盘, 典型的旋转速度大多为 5400 r/min,每转需时 11.1 ms,
平均旋转延迟时间 Tτ为 5.55 ms;对于软盘, 其旋转速度为
300 r/min或 600 r/min,这样, 平均 Tτ为 50~100 ms。
第五章 设 备 管 理
3) 传输时间 Tt
这是指把数据从磁盘读出或向磁盘写入数据所经历的
时间 。 Tt的大小与每次所读 /写的字节数 b和旋转速度有关:
rN
bT
t ?
其中, r为磁盘每秒钟的转数; N为一条磁道上的字节数,
当一次读 /写的字节数相当于半条磁道上的字节数时, Tt与
Tτ相同, 因此, 可将访问时间 Ta表示为:
rN
b
rTT sa ??? 2
1
第五章 设 备 管 理
5.6.2 磁盘调度
1,先来先服务 FCFS(First-Come,First Served)
图
5-
23F
CF
S
调
度
算
法
第五章 设 备 管 理
2,最短寻道时间优先 SSTF(Shortest Seek Time First)
图 5-24 SSTF调度算法
第五章 设 备 管 理
3,扫描 (SCAN)算法
1) 进程“饥饿”现象
SSTF算法虽然能获得较好的寻道性能, 但却可能导
致某个进程发生, 饥饿, (Starvation)现象 。 因为只要不断
有新进程的请求到达, 且其所要访问的磁道与磁头当前所
在磁道的距离较近, 这种新进程的 I/O请求必须优先满足 。
对 SSTF算法略加修改后所形成的 SCAN算法, 即可防止老
进程出现, 饥饿, 现象 。
第五章 设 备 管 理
2) SCAN算法
图
5-
25S
CA
N
调
度
算
法
示
例
第五章 设 备 管 理
4,循环扫描 (CSCAN)算法
图
5-
26C
SC
AN
调
度
算
法
示
例
第五章 设 备 管 理
5,N-Step-SCAN和 FSCAN调度算法
1) N-Step-SCAN
在 SSTF,SCAN及 CSCAN几种调度算法中, 都可能出现磁臂停留在
某处不动的情况, 例如, 有一个或几个进程对某一磁道有较高的访问频率,
即这个 (些 )进程反复请求对某一磁道的 I/O操作, 从而垄断了整个磁盘设备 。
我们把这一现象称为, 磁臂粘着, (Armstickiness)。 在高密度磁盘上容易
出现此情况 。 N步 SCAN算法是将磁盘请求队列分成若干个长度为 N的子
队列, 磁盘调度将按 FCFS算法依次处理这些子队列 。 而每处理一个队列
时又是按 SCAN算法, 对一个队列处理完后, 再处理其他队列 。 当正在处
理某子队列时, 如果又出现新的磁盘 I/O请求, 便将新请求进程放入其他
队列, 这样就可避免出现粘着现象 。 当 N值取得很大时, 会使 N步扫描法
的性能接近于 SCAN算法的性能; 当 N=1时, N步 SCAN算法便蜕化为
FCFS算法 。
第五章 设 备 管 理
2) FSCAN
FSCAN算法实质上是 N步 SCAN算法的简化, 即
FSCAN只将磁盘请求队列分成两个子队列 。 一个是由当前
所有请求磁盘 I/O的进程形成的队列, 由磁盘调度按 SCAN
算法进行处理 。 在扫描期间, 将新出现的所有请求磁盘 I/O
的进程, 放入另一个等待处理的请求队列 。 这样, 所有的
新请求都将被推迟到下一次扫描时处理 。
第五章 设 备 管 理
5.6.3 磁盘高速缓存 (Disk Cache)
1,磁盘高速缓存的形式
是指利用内存中的存储空间, 来暂存从磁盘中读出的一系列
盘块中的信息 。 因此, 这里的高速缓存是一组在逻辑上属于磁盘,
而物理上是驻留在内存中的盘块 。 高速缓存在内存中可分成两种
形式 。 第一种是在内存中开辟一个单独的存储空间来作为磁盘高
速缓存, 其大小是固定的, 不会受应用程序多少的影响;第二种
是把所有未利用的内存空间变为一个缓冲池, 供请求分页系统和
磁盘 I/O时 (作为磁盘高速缓存 )共享 。 此时高速缓存的大小, 显然
不再是固定的 。 当磁盘 I/O的频繁程度较高时, 该缓冲池可能包
含更多的内存空间;而在应用程序运行得较多时, 该缓冲池可能
只剩下较少的内存空间 。
第五章 设 备 管 理
2,数据交付方式
系统可以采取两种方式, 将数据交付给请求进程:
(1) 数据交付 。 这是直接将高速缓存中的数据, 传送
到请求者进程的内存工作区中 。
(2) 指针交付 。 只将指向高速缓存中某区域的指针,
交付给请求者进程 。
后一种方式由于所传送的数据量少, 因而节省了数
第五章 设 备 管 理
3,置换算法
由于请求调页中的联想存储器与高速缓存 (磁盘 I/O中 )
的工作情况不同, 因而使得在置换算法中所应考虑的问题
也有所差异 。 因此, 现在不少系统在设计其高速缓存的置
换算法时, 除了考虑到最近最久未使用这一原则外, 还考
(1) 访问频率。
(2) 可预见性。
(3) 数据的一致性。
第五章 设 备 管 理
4,周期性地写回磁盘
在 UNIX系统中专门增设了一个修改 (update)程序, 使之
在后台运行, 该程序周期性地调用一个系统调用 SYNC。 该
调用的主要功能是强制性地将所有在高速缓存中已修改的
盘块数据写回磁盘 。 一般是把两次调用 SYNC的时间间隔定
为 30 s。 这样, 因系统故障所造成的工作损失不会超过 30 s
的劳动量 。 而在 MS-DOS中所采用的方法是:只要高速缓存
中的某盘块数据被修改, 便立即将它写回磁盘, 并将这种
高速缓存称为, 写穿透, 高速缓存, (write-through cache)。
MS-DOS所采用的写回方式, 几乎不会造成数据的丢失,
但须频繁地启动磁盘 。
第五章 设 备 管 理
5.6.4 提高磁盘 I/O速度的其它方法
1,提前读 (Read-Ahead)
2,延迟写
3,优化物理块的分布
4,虚拟盘
第五章 设 备 管 理
5.6.5 廉价磁盘冗余阵列
1,并行交叉存取
图 5-27 磁盘并行交叉存取方式
1 2 3
…
N
第五章 设 备 管 理
2,RAID
(1) RAID 0级。
(2) RAID 1级。
(3) RAID 3级。
(4) RAID 5级。
(5) RAID 6级和 RAID 7级。
第五章 设 备 管 理
3,RAID的优点
(1) 可靠性高。
(2) 磁盘 I/O速度高。
(3) 性能 /价格比高。