设备管理学习之磁盘管理(1)

磁盘管理包括磁盘调度算法、磁盘高速缓存、RAID技术。

首先学习磁盘的结构

如图所示:磁盘由多个盘片组成,每个盘片有两个盘面,每个盘片都有两个磁头,统一由磁头臂控制。盘片上的存储区域被分为磁道,每个磁道上又分多个扇区。如图,每个扇区的大小事512字节,所以扇区也是数据存储和传输的基本单位。

按磁头的工作方式,可以分为活动头磁盘和固定头磁盘。

1.活动头磁盘

活动头磁盘一个盘面上仅配有一个磁头,所有磁头都安装在一个传动臂上,在访问盘面上的磁道时,传动臂在步进电机的控制下,可在整个盘面上从外向内,或从内向外移动,这称为寻道。活动头磁盘只能进行串行读/写,导致I/O速度较馒,但是由于结构简单,仍广泛用于中、小型磁盘设备中。微机上配置的温盘和软盘,都采用活动磁头结构,这里我们主要针对这类磁盘的I/O进行讨论。

2.固定头磁盘

固定头磁盘在每条磁道上都有一个读/写磁头,所有的磁头都被装在一刚性磁臂中,通过这些磁头可访问所有的磁道,可以进行并行读/写操作,有效地提高了磁盘的I/O速度。这种结构的磁盘主要用于大容量磁盘上。

所有盘面上的同一磁道构成一个圆柱,通常称做柱面(Cylinder),柱面号和磁道号是一致的,数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据的读/写按柱面进行,而不按盘面进行。这样就比单独读写盘面提高了硬盘的读/写效率。

硬盘的容量由盘面数(磁头数)、柱面数和扇区数决定,其计算公式为:

硬盘容量=盘面数×柱面数×扇区数×512字节

硬盘容量=盘面数*磁道数*扇区数*512

---------------------------------------------------------------------------------------------------------------------------

影响磁盘性能的指标有转速、寻道时间、磁盘缓存、数据传输速率。其中影响数据查找的的主要因素是寻道时间,因此,磁盘调度算法主要是减少平均寻道时间,提高I\O传输的效率。

磁盘的调度算法:

磁盘是可被多个进程共享的设备。当有多个进程都请求访问磁盘时,应采用一种适当的调度算法,以减小各进程对磁盘的平均访问(主要是寻道)时间。目前常用的磁盘调度算法有:先来先服务、最短寻道时间优先、扫描算法和循环扫描算法等。

1.先来先服务FCFS(First Come First Served)算法

这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。

2.最短寻道时间优先SSTF(Shortest Seek Time First)算法

该算法总是为那些与当前磁头所在的磁道距离最近请求服务,也就是执行寻道时间最短的那个I/O请求。这种调度算法有较好的平均寻道时间,SSTF较之 FCFS有较好的寻道性能,故曾被广泛采用。

3.扫描(SCAN)算法

SSTF算法虽然获得较好的寻道性能,但它可能导致某些进程长时间的得不到服务(称之为饥饿现象)。因为只要不断有新进程到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必被优先满足。对 SSTF算法略加修改后所形成了SCAN算法。

该算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。即当磁头正在自里向外运动时,SCAN算法要选择的下一个访问对象是其欲访问的磁道在当前磁道之外,又是距离最近的。直至再无更外的磁道需要访问时,才将磁臂换向,自外向里运动。从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律象电梯的运行,所以又称为电梯调度算法。

4.循环扫描 CSCAN(Circular SCAN)算法

这是SCAN算法的一种变种算法,是为了提供更均匀的等待时间而设计的。CSCAN算法规定磁头只能单向运动(自里向外),当磁头运动到最外面的被访问磁道时,磁头立即返回到最里面的欲访的磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

5.N-Step-SCAN算法

在SSTF、SCAN及CSCAN这几种算法中,都可能出现磁臂停留在某处不动的情况。例如,有一个或几个进程对某一磁道有着较高的访问频率,反复请求对某一磁道进行I/O,从而垄断了整个磁盘设备,把这一现象称为“磁臂粘着”。N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列,又按SCAN算法处理队列中的每一个请求,这样就可避免出现粘着现象。当 N值取得很大时,会使其性能接近于SCAN算法;当 N=1时, 该算法退化为 FCFS算法。

6. FSCAN算法

FSCAN算法实质上是N-Step-SCAN算法的简化。它只将磁盘请求访问队列分成两个子队列。一个是当前所有请求磁盘I/O的进程队列,由磁盘调度按SCAN算法进行处理。另一个队列则是在扫描期间,新出现的所有请求磁盘I/O的进程队列,这样所有的新请求都将被推迟到下一次扫描时处理。

posted @ 2012-11-14 19:31  我不是geek  阅读(2879)  评论(1编辑  收藏  举报