磁盘管理1

第八章 磁盘管理

7.1 磁盘I/O

块存储,DMA

一、磁盘结构

  1. 组织

 磁盘管理1

 磁盘管理1

 磁盘管理1

磁头(Head)(盘面)

盘面数量==磁头数量

作用:用来写入和读取数据的

径向运动寻道

磁道(Track)(柱面)

从外面到里面最外面是0磁道

扇区(Sector)(块)

磁道上面的最小的单位

默认大小512字节

磁盘是按柱面进行读写的,表示一个柱面的大小

磁盘大小=柱面的大小*柱面的数量

柱面的大小=一个磁道的大小*磁头数量

一个磁道的大小=一个扇区的大小*扇区数量/每个磁道

  1. 性能

①寻道时间

磁头移动到指定磁道上需要的时间。

②旋转延迟

指定扇区移动到磁头下面所经历的时间。

③传输时间

把数据从磁盘读出或向磁盘写入数据所经历的时间。

二、磁盘调度算法

  1. 先来先服务(FCFS)

这是最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法 的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求 长期得不到满足的情况。伹此算法由于未对寻道进行优化,致使平均寻道时间可能较长。 6-30示出了有9个进程先后提出磁盘I/O请求时,按FCFS算法进行调度的情况。这里, 将进程号(诸求者)按他们发出请求的先后次序排队。这样,平均寻道距离为55.3条磁道, 与后面即将讲到的几种调度算法相比,其平均寻道距离较大,故FCFS算法仅适用于请求磁盘I/O进程数目较少的场合。

从40号磁道开始

被访问的下一个磁道号

磁道数

22

18

42

20

40

2

4

36

80

76

50

30

10

40

74

64

总寻道数

286

  1. 最短寻道时间优先(SSTF)

该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每 次的寻道时间短,但这种算法不能保证平均寻道时间最短。图6-3丨示出按SSTF算法进 行调度时,各进程被调度的次序、每次磁头移动的距离,以及9次磁头平均移动的距离9 比较阁6-30和图6-3丨可以看出,SSTF算法平均每次磁头移动的距离明显低于FCFS算法 的距离,因而SSTF较之FCFS有更好的寻道性能,故过去矜一度被广泛采用。

从40号磁道开始

被访问的下一个磁道号

磁道数

40

42

2

50

8

74

24

80

6

22

58

10

12

4

6

总寻道数

116

  1. 扫描算法

①双向扫描

双向扫描(SCAN)算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头 当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对 象应足其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问.直至 再无更外的磁道需要访问时,才将磁臂换向为自外向里移动。这时,同样也是每次选择这 样的进程来调度:即要访问的磁道在当前位置内为距离最近者,这样,磁头又逐步地从外 向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现象。由于在这种算 法中磁头移动的规律颇似电梯的运行,因而又常称之为电梯调度算法。

从40号磁道开始,上一次在50号磁道

被访问的下一个磁道号

磁道数

40

22

18

10

12

4

6

42

38

50

8

74

24

80

6

总寻道数

112

②单向扫描(循环扫描)(CSCAN)

单向扫描类似于双向扫描,但是它规定磁头单向移动,只向里或外。

从40号磁道开始,上一次在50号磁道

被访问的下一个磁道号

磁道数

40

22

18

10

12

4

6

80

76

74

6

50

24

42

8

总寻道数

150

③N步扫描

SSTF、SCAN及CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况, 例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道 的I/O操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”(Arnistickiness)。 在高密度磁盘上容易出现此情况。N步SCAN算法是将磁盘请求队列分成若干个长度为N 的子队列,磁盘调度将按FCFS算法依次处理这些子队列。而每处理一个队列时又是按 SCAN算法,对一个队列处理完后,再处理其他队列。当正在处理某子队列时,如果又出 现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。当N 值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能:当N=1时,N步SCAN 算法便蜕化为FCFS算法。

④FSCAN

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

相关推荐