文章目录
- @[toc]
- 零、设备管理的功能和目标
- 0.1 设备管理的功能
- 0.2 设备管理的目标
- 一、设备的分类
- 1.1 输入输出型设备和存储型设备(用途)
- 1.2 独占型设备和共享型设备
- 二、设备的物理特性
- 2.1 IO设备的物理特性
- 2.2 存储型设备的物理特性
- 2.2.1 磁带的物理特性
- 2.2.2 磁盘的物理特性
- 2.2.3 磁盘的组成
- 2.2.4 光盘物理特性
- 2.2.5 固态硬盘的物理特性
- 三、IO传输方式
- 3.1 I/O操作演变历史
- 3.2 程序控制查询方式
- 3.3 中断驱动方式
- 3.4 DMA 方式
- 3.5 通道方式
- 四、设备的分配与去配
- 4.1 数据结构
- 4.2 独占型设备的分配与去配
- 4.3 共享型设备的分配与去配
- 五、设备驱动
- 5.1 通道程序
- 5.2 设备启动
- 5.3 中断处理
- 六、设备调度
- 6.1 磁盘引臂调度算法
- 6.1.1 先来先服务
- 6.1.2 最短查找时间优先算法
- 6.1.3 SCAN(电梯,LOOK)
- 6.1.3 C-SCAN(C-LOOK)
- 6.1.4 N-step SCAN (N步扫描)
- 6.1.5 FSCAN(Freezing SCAN, 冻结扫描)
- 6.2 磁盘IO参数
- 七、缓冲技术
- 7.1 缓冲技术的引入
- 7.2 缓冲池管理
- 7.3 缓冲技术的实现
- 7.4 RAID 技术
- 7.4.1 什么是RAID
- 7.4.2 RAID级别
- 八、虚拟设备
- 8.1 虚拟设备的引入
- 8.2 虚拟设备的实现
- 8.3 虚拟设备的例子
- 8.4 稳定存储器
文章目录
- @[toc]
- 零、设备管理的功能和目标
- 0.1 设备管理的功能
- 0.2 设备管理的目标
- 一、设备的分类
- 1.1 输入输出型设备和存储型设备(用途)
- 1.2 独占型设备和共享型设备
- 二、设备的物理特性
- 2.1 IO设备的物理特性
- 2.2 存储型设备的物理特性
- 2.2.1 磁带的物理特性
- 2.2.2 磁盘的物理特性
- 2.2.3 磁盘的组成
- 2.2.4 光盘物理特性
- 2.2.5 固态硬盘的物理特性
- 三、IO传输方式
- 3.1 I/O操作演变历史
- 3.2 程序控制查询方式
- 3.3 中断驱动方式
- 3.4 DMA 方式
- 3.5 通道方式
- 四、设备的分配与去配
- 4.1 数据结构
- 4.2 独占型设备的分配与去配
- 4.3 共享型设备的分配与去配
- 五、设备驱动
- 5.1 通道程序
- 5.2 设备启动
- 5.3 中断处理
- 六、设备调度
- 6.1 磁盘引臂调度算法
- 6.1.1 先来先服务
- 6.1.2 最短查找时间优先算法
- 6.1.3 SCAN(电梯,LOOK)
- 6.1.3 C-SCAN(C-LOOK)
- 6.1.4 N-step SCAN (N步扫描)
- 6.1.5 FSCAN(Freezing SCAN, 冻结扫描)
- 6.2 磁盘IO参数
- 七、缓冲技术
- 7.1 缓冲技术的引入
- 7.2 缓冲池管理
- 7.3 缓冲技术的实现
- 7.4 RAID 技术
- 7.4.1 什么是RAID
- 7.4.2 RAID级别
- 八、虚拟设备
- 8.1 虚拟设备的引入
- 8.2 虚拟设备的实现
- 8.3 虚拟设备的例子
- 8.4 稳定存储器
零、设备管理的功能和目标
0.1 设备管理的功能
-
设备分配
按照设备类型和相应分配算法决定将设备分配到哪一个要求该类设备的进程。
-
设备处理
即设备驱动,实现I/O进程和设备控制器之间的通信。
-
缓冲管理
为了提高CPU和I/O操作间的并行度,减少中断的次数,大多数I/O操作要使用缓冲区。
0.2 设备管理的目标
-
方便性
让用户从各种设备的原始使用方式中解脱出来
-
并行性
既要让设备传输和CPU运行高度重叠, 又要求各设备之间能充分的并行工作
-
均衡性
多道程序环境下,各个进程竞争设备时,按一定策略分配和管理设备
-
独立性
用户不必知晓设备物理地址,设备物理地址对用户透明
一、设备的分类
1.1 输入输出型设备和存储型设备(用途)
IO型设备
- 扫描仪,打印机,mouse,keyboard,monitor
- 输入设备用途:外界信息传送给计算机。
- 输出设备用途:计算机当中的一个处理结果以我们用户所能够所熟的一种形式给他显示出来。
存储型设备
- 磁盘,磁带,光盘,U盘
- 用途:保存计算机当中的一些信息
网络设备
- 网卡、交换机、etc
1.2 独占型设备和共享型设备
独占型设备
-
块型独占型设备:在这一段时间里,设备只能归这一个进程所有
-
磁带
即是存储设备,也是块型设备又是独占型设备
一次IO传送的基本单位,是以块为单位来进行传输
块与块传输之间不允许交叉(为了保证效率)——独占型设备
-
-
字符型独占型设备
-
所有的IO型设备
每一次IO传输的基本单位,是以字节为单位,进行传输。
多个进程的IO操作以字符为单位不能交叉,
-
共享型设备
-
设备在这一段时间里,可以被多个进程所共享。
-
存储设备,大多数都是共享型设备。
特点:
- IO操作以块为单位,可以交叉
二、设备的物理特性
2.1 IO设备的物理特性
- 一次IO传输,传输的最小单位就是一个字节
- 传输一个字节就会发生一次中断。
2.2 存储型设备的物理特性
- 每一次IO传输,是以一个块为单位
- 传输一块或者传输几块就会发生一次中断
2.2.1 磁带的物理特性
-
磁带属于启停设备,用的时候开始,用完了以后停止
-
规格:宽度有1 in 和 0.5 in 两种
- 1 in 16磁道
- 0.5in 9磁道 现在可达18磁道
- 每磁道一磁头,磁带移动,一个磁头便扫描一个磁道
-
信息组成
- 记录信息:我们所要保存的一些数据和信息。 主要工作、主要目的
- 控制信息
- 记录信息:我们所要保存的一些数据和信息。 主要工作、主要目的
-
操作
- 反绕,正向查找,反向查找,读,写
-
地址
- 信息块连续存放,一维地址
-
文件
- 顺序结构,一个文件占若干连续块
2.2.2 磁盘的物理特性
磁盘机属于旋转型设备,它由若干张盘片构成,每张盘片上都涂有磁层,用于记录信息。各个盘片的圆心固定在一个旋转轴上,该轴沿固定方向匀速地转动,并带动磁盘组不停地旋转。
磁盘机物理结构如下:
2.2.3 磁盘的组成
- 磁盘上的信息是保存在磁道上
- 每一个同心圆就叫一个磁道
- 而每个磁道又被划分成一个个扇区,每个扇区保存的数据量相同,称为物理块,也叫磁盘块。
- 一组盘面,相同半径同心圆,形成一个柱型,称为柱面
如何定位信息?
- 哪个盘面?——磁头确定
- 哪个磁道?——磁头引臂移动磁头
- 哪个扇区?——旋转轴旋转
可见我们需三维地址(i, j, k)(柱面号,盘面号,扇区号)
为了方便,我们一般以一维地址的形式对扇区编号,i * m * n + j * n + k,我们称之为扇区线性化
那么我们扇区该如何编号呢?
上面这种编号方式是连续编号的。这样相邻块的物理距离最近,这也符合局部性原理。
然后读写一块后需要经过一定处理才能读写下一块,而此时欲读写的块已经部分或者全部从磁头下面转过,需要再旋转一周才能对其进行访问,速度很慢,因而我们对于扇区的编号一般不连续,是交错的,通常采用单交错或双交错,来给读写一个延迟时间。
。s
磁盘机的物理特性决定它适用于随机访问,即对于一组磁盘块的相继访问来说,其块号不必连续。
2.2.4 光盘物理特性
光盘在光存储介质上利用激光头烧制的小坑(pit)来记录信息,未烧制的部分为 land,我们可以用 pit 代表 1,land 代表 0,或反之,但实际存储效果表明,用 pit 与 land 的变化代表1,不变代表0更可靠。因而实际上采用 pit 到 land 的变化,或 land 到 pit 的变化代表 1,pit 不变或 land 不变代表0,信息记录在“光道”上。
与磁道不同,光道不是同心圆,而是螺旋线。
以 CD-ROM为例:
- 螺旋线,22188圈,展开 5.6km
- 内侧转速:530转/分
- 外侧转速:200转/分
- (密度均匀,读取速度均匀)
光盘信息组成
2.2.5 固态硬盘的物理特性
固态硬盘(SSD,solid state disk)的物理结构与存取原理与传统磁盘差异很大,固态硬盘的存储介质是闪存(flash memory),与磁盘一样具有非易失性(no-volatile),由于没有机械运动,较磁盘更为可靠,更加节能。
由于没有定位时间(寻道时间和旋转延迟时间),SSD的速度远远高于普通磁盘,可以用于磁盘与内存之间的一级高速缓存,或直接替代传统磁盘。但由于SSD是擦写损耗部件,其寿命不及传统磁盘。
三、IO传输方式
3.1 I/O操作演变历史
程序査询方式 (programmed IO) (polling)
- CPU and Device can not work in parallel
中断方式 (interrupt)
- CPU and device can work in parallel, too many interrupts for CPU
通道方式 (channel)
- special processor for dealing with io operations
直接内存方式(DMA)
- DMA controller in charge of block io
3.2 程序控制查询方式
探询(polling) 又称 程序控制输入输出(programmed I/O),是最早的输入输出控制方式:处理器代表进程向相应的设备模块发出输入输出请求,然后处理器反复查询设备状态,直至输入输出完成。
缺点:忙式等待,处理器与设备完全串行,消耗大量处理器时间。
3.3 中断驱动方式
引入中断之后,设备具有中断CPU(中央处理器)的能力,设备与CPU可以并行。
- 处理器代表进程向相应的设备发出输入输出请求,然后继续执行其他计算任务(可能切换到其他进程),相应的进程等待(如果进程需要等待数据传输完成)。
- 当数据传输完成时,设备产生中断信号,CPU进行中断处理。
- 如果进程等待数据传输完成,则将其唤醒,然后CPU继续执行被中断的程序。
优点:
- 中断模式使设备与CPU可以并行。
缺点:
- 对于不少设备(字符型设备),每传输一个字节就会产生一次中断。当设备较多时,对CPU的中断打扰很多。
- 另外,中断伴随处理器的状态切换,增加了系统开销。
3.4 DMA 方式
硬件提供DMA控制器(Direct Memory Access)。
DMA 控制器内部设有若干寄存器,包括操作码寄存器、操作数寄存器、忙碌标志寄存器、状态寄存器等。DMA 控制器通过总线与设备、内存相连。操作系统可以采用DMA方式进行输入输出操作。
DMA 方式的传输步骤如下:
- CPU 将操作量送到 DMA 控制器的操作数寄存器 operands 中,包括内存起始地址、传输数量等
- CPU 将操作码送到 DMA控制器的 opcode 寄存器以启动 DMA 控制器。DMA控制器将其忙碌寄存器(busy)置位,表明在此期间不再接受新的操作命令。此后,CPU可以执行与该控制器无关的其他操作
- DMA 控制器与设备交往,将数据由缓冲区传送到设备或者由设备传送到缓冲区
- DMA 控制器将缓冲区内容复制到内存空间,或由内存空间复制到缓冲区
- 计数器值减1。若结果非0(未传送完)则转步骤3.继续传输:否则转步骤6
- 传输结束时,DMA控制器复位其忙碌寄存器,并向CPU发送中断请求
- CPU读入并检测其DMA状态寄存器,以确认操作是否成功
3.5 通道方式
通道方式与DMA方式相类似,也是一种内存和设备直接进行数据交换的方式,它们相同之处是均以内存为中心,支持块传输。
通道是专门负责 I/O 操作的处理器
- 有自己的指令系统,可以实现复杂IO,DMA每台设备至少需要一个DMA控制器,而一个通道可以控制多台设备与内存进行数据交换。
- 基本操作:控制、读、写、转移、结束
- 指令格式:操作码、传输量、特征位、地址
- 运控部件
- 通道地址字(channel address word,CAW):记录下一条通道指令存放的地址
- 通道命令字(channel command word,CCW):保存正在执行的通道指令
- 通道状态字(channel status word,CSW):记载通道、控制器、设备的状态,包括输入输出传输完成信息、出错信息、复执次数等
- 通道数据字(channel data word,CDW):暂存内存与设备之间输入输出传输的数据。
- 存储区域:和主机共享内存空间,但是通道内有缓冲区
- 保存通道程序,IO数据
通道程序执行过程:
通道类型
- 字节多路通道(byte multiplexer channel)
- 多个非分配型子通道,连接低速外围设备
- 数组选择通道(block selector channel)
- 一个分配型子通道,连接多台高速设备
- 数组多路通道(block multiplexer channel)
- 多个非分配型子通道,连接多台高速设备
一个分配型子通道:同一时刻只能与一个设备相连
多个非分配型子通道:每个分配型子通道可以与一个设备相连,这些设备可以并行
四、设备的分配与去配
4.1 数据结构
设备控制块(UCB,unit control block)
通道控制块(CCB,channel control block)
系统设备表(SDT,system device table)
4.2 独占型设备的分配与去配
用户使用独占型设备活动:申请,使用,使用,…,使用,释放
申请:
- 根据设备类查 SDT表
- P(Sm)
- 查 UCB 表找一空闲设备并分配
使用
- 分配通道
- I/O 传输
- 去配通道
释放
- 找 SDT表对应入口
- 查 UCB 表,去配
- V(Sm)
4.3 共享型设备的分配与去配
与独占型设备不同,用户在使用共享型设备时并没有显式的设备申请与释放动作。不过,在每一个使用命令之前都隐含地有一个申请命令,在每一个使用命令之后都隐含地有一个释放命令,在隐含的申请命令和隐含的释放命令之间执行一次数据传输,即读写一个磁盘块。
用户使用共享型设备活动
- 使用,使用,…,使用
特征
- IO请求通常来自文件系统
- 每次读(写)一块
- 为了提高效率,通常经过缓冲
- 因为有缓冲,所以IO一般都是排队或者某种优化服务的调度算法实现的
使用
- 分配通道;I/O操作;释放通道
五、设备驱动
驱动程序还是生活中比较熟悉的事物。我每次更换机械键盘基本都要到对应厂商的官网去下载对应自己操作系统版本和键盘型号的驱动,不然有些快捷键用不了。平时画画用数位板也要下载比如高漫、wacom的驱动,来设置一些快捷键。
这些驱动的存在是因为不同操作系统对设备驱动接口的标准各不相同,因此各厂商必须根据操作系统的接口要求,开发相应的设备驱动程序。
驱动过程:
5.1 通道程序
由通道指令序列所构成的程序称为通道程序,通常是静态编写或者根据IO动态生成的。
我们建立起来通道程序后就要进行设备启动。
5.2 设备启动
CPU将通道程序的起始地址放到内存的指定单元,执行通道启动命令开始工作。
5.3 中断处理
当通道程序执行完毕,或者执行到通道结束指令时,产生通道中断信号。处理器相应中断取出中断字,进行中断处理。
六、设备调度
s
设备调度考虑因素:
- 公平性:一个输入输出请求应当在有限的时间之内得到满足,
- 高效性:减少设备机械运动所带来的时间开销。
6.1 磁盘引臂调度算法
磁盘引臂的移动非常花费时间,我们磁盘引臂调度算法就是对于不同柱面的IO请求合理调度得到最少的引臂消耗。
6.1.1 先来先服务
先来先服务(FCFS)算法按照输入输出请求的次序为各个进程服务,公平又简单又低效~~(略略略)~
以下面的访问请求序列为例:
130,42,180,15,108,68,97
移动量:630
6.1.2 最短查找时间优先算法
最短查找时间优先算法(shortest seek time first,STTF),这个也很熟悉了,优先为距离磁头当前所在位置最近柱面的请求服务。
前面示例的移动量:314
6.1.3 SCAN(电梯,LOOK)
扫描算法又称电梯算法(elevator algorithm),其原理和电梯相似。
算法思想:
- 起始时磁头由最外柱面向内柱面移动,并为路经的请求服务。
- 一旦内柱面没有访问请求,则改变移动方向(如果外柱面有请求)或者停止移动(外面也无请求)。
前面示例的移动量:203
柱面为n的情况下:
对于靠近边缘的柱面:最坏情况下,移动量为2n-1
靠近中部的柱面:最坏情况下:n-1
平均情况下约为n 和 n/2
**缺点:**地域差别,对边缘很不友好
6.1.3 C-SCAN(C-LOOK)
**循环扫描算法(circular scan)**是为了消除柱面与中部柱面等待时间的差异而进行的改进。
- 磁头只在单方向移动过程中才为路经的请求服务
- 一旦移动方向无请求,立即快速回扫到另一端提出请求的第一个柱面,回扫过程中不处理访问请求
前面示例的移动量:319
6.1.4 N-step SCAN (N步扫描)
前面的扫描算法基本上都是公平的,效率也还可以。
不过,若在一段时间内同一柱面的访问请求不断,则磁头会停在一个磁道上不动,称为**“磁头黏性”(magnetic head stickiness),所有其他柱面的访问请求仍可能长时间得不到服务。对该算法的进一步改进引出了N步扫描(N-step scan)算法。**
算法思想:将磁盘请求队列分为若干个长度为N的子队列,每个队列内采用SCAN算法
N = 1时,退化为先来先服务,N很大,近似为SCAN
6.1.5 FSCAN(Freezing SCAN, 冻结扫描)
**冻结扫描算法(Freezing SCAN)**是指,将做磁盘请求分为两个子队列,服务队列和请求队列:
- 用SCAN算法扫描服务队列,对于服务期间新到来的请求放入请求队列
- 服务队列扫描结束后,交换两个队列的地位
6.2 磁盘IO参数
读/写一个磁盘块时间一般由如下三个因素确定:
- 寻道时间(seek time):将磁盘引臂移动到指定柱面所需要的时间;
- 旋转延迟(rotational delay):指定扇区旋转到磁头下的时间;
- 传输时间(transfer time):读/写一个扇区的时间
寻道时间 Ts 计算公式如下:
- Ts = m * n + s
- n 为跨越磁道数,m 是跨越一个磁道所用时间,s是启动时间
旋转延迟 Tr 计算公式如下:
- Tr = 1 / 2r
- 其中,r为磁盘转速。该公式给出的是平均旋转延迟,它是磁盘旋转一周时间的一半,即旋转半周所花费的时间
传输时间 Tt 计算公式如下:
- Tb = b / (rN)
- 其中, b 是 读/写 字节数, r 为 磁盘转速, N为一条磁道上的字节数
因而, 可以将访问时间 Ta 表示为:
T
a
=
T
s
+
T
r
+
T
t
=
m
∗
n
+
s
+
1
2
r
+
b
r
N
T_a = T_s + T_r + T_t = m * n + s + \frac{1}{2r} + \frac{b}{rN}
Ta=Ts+Tr+Tt=m∗n+s+2r1+rNb
七、缓冲技术
7.1 缓冲技术的引入
缓冲(buffering)技术是设备处理数据到达和离开速度不一致所采用的技术。
buffering VS cache
-
缓冲是对数据进行拆装,并处理数据到达和离开速度上差异的技术,缓冲的数据只有一个版本,缓冲的实现需要系统提供缓冲区
-
缓存数据一部分在高速存储介质上,一部分在低速存储介质上,缓存技术也可以用缓冲来实现。
-
硬缓冲与软缓冲
- 硬缓冲区通常设在设备中
- 软缓冲区通常设在内存系统空间中
-
私用缓冲与公用缓冲
- 私用缓冲: 一个缓冲区与一个固定设备联系, 不同设备使用不同的缓冲区
- 利用率低
- 公用缓冲: 缓冲区由系统统一管理,按需要动态分派给正在进行I/O传输的
- 私用缓冲: 一个缓冲区与一个固定设备联系, 不同设备使用不同的缓冲区
7.2 缓冲池管理
缓冲池由系统中公用缓冲区组成, 用来为缓冲输入输出提供空闲缓冲区.
通常采用如下链式结构:
设一个缓冲池中缓冲区的总数为N,它们属于同种组合资源,即有限资源。为对其进行管理,定义信号量如下:
semaphore buff_available; // 初值 = N
// mutex 保证对缓冲池的操作互斥
semaphore mutex; // 初值 = 1
// 申请缓冲区
P(buff_available);
P(mutex);
从链头分配缓冲区
V(mutex)
返回缓冲区指针
// 释放缓冲区
P(mutex);
将去配的缓冲区连到链头(或链尾)
V(mutex)
V(buff_available)
7.3 缓冲技术的实现
1、输入型设备
输入型设备信息流向如下:
信息由输入设备到缓冲区的传输由通道程序完成,由缓冲区到进程空间的传输由操作系统代替进程完成。
进程方面和中断方面的活动如下:
2、输出型设备
输出设备的信息流向如下:
进程方面和中断方面的活动如下:
3、输入输出型设备
这类设备多属于块型设备,如磁盘、磁带等。
这类设备的信息流向如下:
特点:界面清晰,但是增加了进程切换开销
输入输出进程
上面的IO都是自主形式的,进程需要执行IO操作,通过某种系统调用进入操作系统,操作系统代表进程申请缓冲区并执行相应的IO操作。
专门负责IO传输的进程
输入输出进程是基于客户-服务器模型的输入输出操作形式:
- 输入输出操作由一个专职的服务进程提供:当客户进程需要执行输入输出操作(如打印)时,给服务进程发送一条消息,具体的输入输出操作则由服务进程完成。
- 当有来自不同进程的多个输入输出请求时,服务进程可以按接收消息的次序或者某种调度算法进行调度。
7.4 RAID 技术
7.4.1 什么是RAID
摩尔定律在磁盘速度上并不明显,因而人们意识到出路是并行部件和并行存取技术。
RAID(redundant arrays of independent disks,独立磁盘冗余阵列)是一组物理磁盘的集合,作为一个逻辑磁盘被管理和使用。
数据分散于多个物理磁盘上,校验等冗余信息用于提高信息存取的可靠性。
7.4.2 RAID级别
RAID级别:行业标准规定的数据在多个磁盘上的存放方法。
- 常见RAID级别:level0,…,level5
RAID分条(stripping)数据存储方式
- 位级分条(bit - level stripping)
- 块级分条(block - level stripping)
RAID衡量指标
- **速度:**是否支持多个访问同时进行
- **可靠性:**是否能够发现和改正错误
- **成本:**是否有额外的开销和开销的大小
1、Level0(数据分条)
数据分条以块为单位,连续的数据条循环存放在多个磁盘上。
优点:
- 访问速度快
- 经济,空间利用率 100%
缺点:
- 无容错能力,可靠性差。
2、Level1(镜像,mirroring)
数据分条以块为单位,采用分布镜像方式存储即完全相同的数据重复存放在两个盘上。
优点:
- 访问速度快;读一个盘、写两个盘;
- 可靠性(恢复性)高;
缺点:
- 费用高,是无镜像磁盘数的2倍,
- 空间利用率 50%。
3、Level2(位级汉明纠错码校验与恢复)
数据以位(bit)为单位分条,分布存放在多个数据磁盘上汉明纠错码存放在纠错磁盘上
优点:
- 纠错能力强,可靠性高
- 发现2个错误,纠正1个错误
缺点:
- 需要较多纠错盘存放汉明纠错码,成本较高;
- 不能同时为多个请求服务,速度较慢:
- 读操作:所有磁盘同时访问,数据与错误校验码被送到磁盘阵列控制器
- 写操作:必须同时访问所有数据盘和纠错盘
4、Level3(位级单个奇偶校验)
数据以位(bit)为单位分条,分布存放在多个数据磁盘上;只用一个冗余磁盘存放奇偶校验位。
- 有一定容错能力
- 存储代价较低
- 读写需要访问所有盘,多个读写不能并行
5、Level4(块级异或校验)
数据分条以块为单位,用异或运算产生校验信息,校验信息保存在单独的磁盘上
-
读操作不进行异或校验,可以并行;
-
写操作要更新异或校验信息,都访问校验盘,不能并行;写操作时校验信息更新:
-
P’4~7=(block4 xor block4’) xor p4~7
-
异或校验信息用于磁盘发生故障时数据块的恢复
-
例如:若block7所在的Disk4发生故障,要恢复block7
block7= p4~7 XOR (block4 XOR block5 XOR block6)
-
6、Level5(块级分布式异或校验)
数据分条以块为单位,异或校验信息分散循环保存在各磁盘上。
-
校验码计算:
- p4~7=block4 XOR block5 XOR block6 XOR block7
-
若 block7 发生故障,可通过下式恢复
- block7=p4~7 XOR block4 XOR block5 XOR block6
-
磁盘数量至少为3个
-
读操作可并行
-
不涉及相同数据盘和校验盘的写操作可以并行
-
对于单盘容量为S、数量为 N的磁盘阵列,
有效存储容量为: S x (N - 1)
磁盘利用率为:(N - 1) / N
-
任意磁盘发生故障,均可根据其它 N-1个磁盘恢复
八、虚拟设备
问题:用户直接使用独占型设备效率低
虚拟设备:利用共享型设备实现的数量较多、速度较快的独占型设备
实现
- 输入型虚拟设备
- 输出型虚拟设备
- 虚拟设备的例子
- SPOOLing 输入
- SPOOLing 输出
8.1 虚拟设备的引入
用户使用独占型设备活动:
- 申请,使用,使用,…,使用,释放
- 进程独占该设备
缺点:
- 速度:CPU 与设备速度不匹配
- 设备利用率:占有期间不一定一直使用
方法:
在进程与独占型设备之间增加共享设备缓冲
8.2 虚拟设备的实现
输入型虚拟设备的实现
- 申请
- 分配一虚设备
- 分配一实设备
- 信息由实设备0虚设备
- 去配该实设备
- 使用
- 信息由虚设备 -> 进程空间
- 释放
- 去配虚设备
输出型虚拟设备的实现
- 申请
- 分配一虚设备
- 使用
- 信息由进程空间 -> 虚设备
- 释放
- 分配一实设备
- 信息由虚设备 -> 实设备
- 去配实设备
- 去配虚设备
8.3 虚拟设备的例子
- SPOOLing输入
- 作业预输入(输入机 -> 输入井)
- SPOOLing 输出
- 作业缓输出(输出井 -> 输出机)
- (输出井 -> 输出机)
- SPOOLing
- Simultaneous Peripheral Operation On-Lin
- 由 SPOOLing 程序控制通道完成
8.4 稳定存储器
稳定存储器:不丢失信息的存储器称为稳定存储器
实现:
- 不存在绝对可靠的存储介质
- 策略:冗余
- 在两种失效独立的介质上构建
- 保存
- 将信息写到第一个存储块
- 上述操作成功后,将相同信息写到第二存储块
- 仅当第二次传输也成功时,整个保存操作完成
- 恢复
- 鉴别两个数据块内容
- 一对信息完全相同,且无检测到错误,正常
- 其中一块检测到错误,用另一块取代
- 两块均未检测到错误,但内容不同,用第二块内容取代第一块内容