磁盘管理1
第八章 磁盘管理
7.1 磁盘I/O
块存储,DMA
一、磁盘结构
- 组织
磁头(Head)(盘面)
盘面数量==磁头数量
作用:用来写入和读取数据的
径向运动寻道
磁道(Track)(柱面)
从外面到里面最外面是0磁道
扇区(Sector)(块)
磁道上面的最小的单位
默认大小512字节
磁盘是按柱面进行读写的,表示一个柱面的大小
磁盘大小=柱面的大小*柱面的数量
柱面的大小=一个磁道的大小*磁头数量
一个磁道的大小=一个扇区的大小*扇区数量/每个磁道
- 性能
①寻道时间
磁头移动到指定磁道上需要的时间。
②旋转延迟
指定扇区移动到磁头下面所经历的时间。
③传输时间
把数据从磁盘读出或向磁盘写入数据所经历的时间。
二、磁盘调度算法
- 先来先服务(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 |
- 最短寻道时间优先(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 |
- 扫描算法
①双向扫描
双向扫描(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的进程放入等待处理的请求 队列。这样,所有的新请求都将被推迟到下一次扫描时处理。