[OS复习]设备管理3

来源:互联网 发布:用php写一个 编辑:程序博客网 时间:2024/06/17 12:47

1.磁盘设备的管理

1.1磁盘的性能和安全性

磁盘是计算机系统最重要的外部存储设备之一 。影响磁盘性能和数据安全性的主要因素:
1.磁盘性能参数:转速、寻道时间、磁盘缓存;
2.磁盘控制器:IDE、SCSI磁盘控制器;
3.RAID等磁盘容错技术;
4.磁盘管理算法:磁盘调度算法、磁盘高速缓存、高性能的文件系统;

1.2磁盘设备的物理特性

磁盘由若干张圆形的盘片组成,每张盘片上都涂有磁层,用于记录数据;各盘片的圆心固定在一个旋转轴上,该轴沿固定方向等速地转动,并带动磁盘组不停地旋转。硬盘的转速比软盘快几十倍,并在开机后一直高速旋转,随时准备就绪;而软盘则需要I/O时才旋转,否则停止旋转。软盘使用前必须等待转速从0加速,并稳定到额定转速,故工作效率较低。
每张盘片分为上、下两个盘面,每个盘面有若干磁道,同一盘面上的所有磁道是绕旋转轴的一组同心圆,所有磁道由外向内依次由0开始编号,称为磁道号。磁盘组中各盘面上序号相同的磁道构成一个柱面,由外向内依次编号,若磁盘组有l个柱面,则编号为0,1,2,…,l-1,称为柱面号。若磁盘组共有s个盘片,则共有2s个盘面,但通常最上面和最下面的两个盘面作为伺服面,用以进行控制磁头定位等操作,并不存放数据,因而实际可用盘面数为m=2(s-1),由下至下依次编号为0,1,2,…,m-1,称为盘面号。
整个盘面被划分为若干大小相同的扇面,它把一个磁道等分为若干个区域,一个区域称为一个扇区。数据保存在各个扇区中,每个扇区内保存的数据量相同,为2的幂次,例如512字节、1024字节甚至2048字节。扇区是磁盘进行I/O传输的基本单位,也是磁盘空间分配的基本单位。若扇区的数量为n,则每条磁道上的扇区被依次编号为0,1, 2,…,n-1,称为扇区号。
磁盘的基本存储单元(扇区)的寻址方式为三维地址:柱面号、盘面号、扇区号。为了方便管理及屏蔽存储设备的物理细节,操作系统向上层软件提供统一的接口,常使用一维地址,即只有逻辑磁盘块号(逻辑扇区号),将磁盘组中所有的扇区从0开始编号。显然,这里就存在着一维地址与三维地址间相互转换的问题。为了提高效率,对于移动磁头式磁盘机来说,磁头引臂的机械运动(寻道)速度最慢,其次才是盘片转动的速度,因此,编排逻辑块号时,扇区号先变化,其次是盘面号,最后才是柱面号。 

1.3磁盘的磁头工作方式

磁盘:固定头磁盘和移动头磁盘。固定头磁盘的每一条磁道上都有一个读/写磁头,所有的磁头都被安装在一刚性磁臂中,通过磁头访问磁道,可以并行读/写,磁盘的I/O速度很快。固定头磁盘的优点是访问速度快,其缺点是成本较高、容量受磁头数量限制。
移动头磁盘为每一个盘面配置一个磁头,所有盘面的磁头被装入磁臂中,磁盘I/O时,必须移动磁头(寻道)。因此,移动头磁盘只能进行串行读/写,I/O速度相对较慢,但由于其具有结构简单、成本较低、容量不受磁头数量限制等优点,因而被广泛使用。

1.4影响磁盘I/O性能的技术指标

从磁盘读数据的过程
1.磁盘接收到读指令后,磁头从当前位置移到目标磁道位置,所需的时间称为寻道时间
2.旋转磁盘,定位数据所在的扇区,所需的时间称为旋转延迟
3.从磁盘上读取数据,所需的时间称为数据传输时间
访问时间=寻道时间+旋转延迟+传输时间 。
#寻道时间:
寻道时间:把磁头从当前位置移动到指定磁道所需要的时间。是影响磁盘数据传输率的重要参数,与磁头移过的磁道数量成正比。衡量磁盘的寻道性能时,通常使用平均寻道时间。
#旋转延迟:
旋转延迟与磁盘转速直接相关,是指旋转磁盘,将指定扇区移动到磁头下面所需要的时间。假设Tr为旋转延迟,r为磁盘转速(转数/单位时间)那么,Tr = 1/(2r)。例:
对于一个转速为3600rpm的硬盘而言,其每旋转一周的时间为 16.7ms,其平均旋转延迟为8.3ms。
对于一个转速为300rpm的软盘而言,其每旋转一周的时间为 200ms,其平均旋转延迟为100ms。
#传输时间:
传输时间是指把数据从硬盘读出或向磁盘写入数据所经历的时间。传输时间与硬盘的转速和所读/写的数据长度有关,当一次读/写的数据长度相当于半条磁道上的字节数时,传输时间与平均旋转延迟相同。 

1.5缓存

当缓存足够大时,对于写操作,尽管数据并未真正写到磁盘上,但它给主机的印象就是写操作已“非常快”地完成(延后写);对于读操作,尽管是读一扇区,但磁盘却将整条磁道的数据都读入缓存中(提前读),当下一次需要再读数据时,就显得非常快了——前提是下一次读的数据还位于同一条磁道。由于缓存不可能很大,因此对于密集访问磁盘的系统而言,缓存并不能发挥多大的作用,但由于多数系统是间歇地访问磁盘,因而缓存在很多时候还是能发挥较大的作用。
综上所述,传统上影响磁盘I/O性能的主要技术指标是平均寻道时间和转速,转速则影响平均旋转延迟和数据传输时间。对于实际的系统而言,较大缓存也对硬盘的I/O性能有较大的影响,但不是决定性的。

1.6如何调整磁盘I/O性能 ?

磁盘的平均寻道时间和转速是固定不变的。为了提高磁盘的I/O性能,只能从磁盘调度的方式和访问数据的组织形式上入手,即缩短寻道时间和旋转延迟。 
磁盘调度算法
当有多个进程都请求访问磁盘时,他们访问的位置(这里主要关心磁道)各不一样,磁头需要来回频繁移动进行寻道操作。磁头的寻道操作属于机械运动,花费的时间较长,而且过度的寻道操作会大大缩短磁盘的寿命。因此,必须采用适当的磁盘调度算法,使得在尽可能公平的情况下,缩短平均寻道时间,并使磁头移动距离最小。
先到先服务算法FCFS (First Come First Serve) 
FCFS算法按照输入/输出请求的先后次序为各个进程服务。这是最公平、最简单的算法,但是效率非常低。
例如,一个有100条磁道的磁盘,磁道依次编号为0~99,磁头当前位于第20磁道,对于如下的访问请求:
请求次序:  1      2    3     4      5    ……
访问磁道: 99     2   97   10   26    ……
若按FCFS算法,则磁头移动的磁道数为79+97+95+87+16=374
磁头在磁道之间来回频繁移动,不但造成较大的时间开销,影响效率,而且容易使磁头臂疲劳,磁盘很容易损坏。因此,这种简单的算法只适合于负载很轻的系统。
最短寻道时间优先算法SSTF (Shortest Seek Time First) 
为了克服FCFS算法之缺点,人们提出了SSTF算法,即优先为距离磁头当前所在位置最近的磁道服务。
例如,对于上述服务请求,按照SSTF算法,则系统将按如下次序为进程提供服务,磁头移动的磁道数为6+16+8+95+2=127,效率比FCFS高了许多。
服务次序:  1     2     3    4    5     ……
访问磁道: 26   10    2   97  99    ……
扫描算法Scan :
也称电梯算法,其基本思想类似电梯的工作原理。其具体过程为:假定开始时磁头处于最外磁道,并向内磁道方向移动。在磁头移动过程中,如果经过的磁道有访问请求,则为其服务。然后判断当前磁道以内的磁道是否还有访问请求,如果有,则磁头继续向内磁道方向移动;否则,判断当前磁道以外的磁道是否有访问请求,若有,则磁头掉转方向朝外移动。若此时当前磁道内外均无访问请求,则磁头引臂停止不动。
这种算法比较公平,效率很高;但是,若在某一段时间内某一磁道的访问请求不断,则磁头引臂将停留在该磁道上不动(称为磁臂粘着),磁盘被相应的进程垄断,所有其他磁道上的请求将在较长时间内得不到服务。
N步扫描算法N-Scan 
N步扫描算法将磁盘请求队列分成若干个长度为N的子队列,磁盘调度程序按照FCFS算法依次处理这些子队列,而处理每一个子队列时,则按照SCAN算法。当N值取得很大时,N步扫描算法的性能与SCAN算法的性能相当;当N取值为1时,N步扫描算法退化为FCFS算法。在实际应用中,N步扫描算法被简化为:只为一次特定的扫描开始前已经等待的访问请求服务,以防止发生扫描算法中存在的不公平现象,尽管这种不公平的现象对磁头有利。在一次扫描期间内新到达的访问请求将只能放在下一次扫描期间完成处理,无论这些新的请求是否处于一次扫描的服务途中。

1.7磁盘高速缓存 

指,操作系统利用内存实现的、专门针对磁盘I/O操作的缓冲区。
与磁盘机本身所带的缓存以及磁盘控制器所带的缓存相比,磁盘机和磁盘控制器上的缓存的特点:1.容量较小2.利用此类缓存进行数据提前读和延后写操作能与主机并行工作。
磁盘高速缓存(非自身)的特点:1.容量较大;2.常存储全局范围、经常访问的重要数据:文件系统的目录、文件分配表、索引块等;3.缺点:利用该缓存进行数据提前读和延后写操作需要主机的管理,增加了主机的负担。4.对于高档的服务器而言,大的硬件缓存更能提高磁盘I/O的性能。但是,若磁盘机和磁盘控制器上没有缓存,那么,就需要依靠磁盘高速缓存的作用。
磁盘高速缓存的实现形式
在内存中单独开辟一个大小固定的存储空间作为磁盘高速缓存区。有的操作系统允许用户指定或调整此空间的大小;另一种方法是把系统中所有未使用的内存空间变为一个缓冲池,供请求分页系统和磁盘高速缓存共享,其大小不固定,当磁盘I/O操作频率时,磁盘高速缓存区可能较大。

2.优化数据的物理存储结构

磁盘I/O常针对整个文件进行,如果一个文件被分散存储到多个柱面上,则读/写这样的文件时,需要进行多次寻道操作和旋转延迟。为什么把文件分散存储呢?在系统建立的初期,文件都是连续存储的。但随着系统使用时间的积累,文件会不断被用户删除或新建。为了充分利用存储空间,新建文件常分散存储。磁盘高速缓存的效率,取决于其命中率。使用缓存需要基于两个要素:一是访问频率,二是基于局部性原理的提前读技术。提前读技术是使用缓存的关键,当读入进程申请的数据时,将其空间局部存储的数据一起提前读,以期在后面的操作中得到回报而在总体上节约时间。如果一个文件在物理上存储得较分散,尽管不影响系统的正确性,但却使提前读操作失效,反而降低系统效率。
若将分散到多个柱面或磁道上的文件进行类似内存分配过程中的碎片整理(紧凑),使这些文件在物理上连续存储,则不仅能提高文件的读/写性能,减少寻道时间和平均旋转延迟,而且能提高磁盘高速缓存的命中率,从而提高整个系统效的效率,减少磁盘的机械损耗。因此,人们经常使用MS-DOS、Windows等操作系统提供的磁盘碎片整理功能,以提高系统工作效率。


0 0