磁盘的物理结构
磁盘可用 (柱面号, 盘面号, 扇区号) 来定位到任意一个磁盘块。
柱面号: 由磁道组成, 一个磁盘由多个盘片组成, 不同盘片的磁头是固定在一起的, 只能一起移动。 由上到下磁头所指向的磁道组成一个柱面。
盘面号: 一个盘片分为两个面,盘面号指明是这个盘片的哪个面。
扇区号:盘面被分为多个扇形, 每个扇形区域都被标号。
磁盘读写所需得时间
分为寻道时间, 延迟时间, 传输时间。
寻道时间:寻道时间分为两部分, 启动磁臂和移动磁头所需要的时间。
延迟时间:将目标扇区转到磁头下面所需的时间。
传输时间: 读/写数据所需要的时间。
磁盘调度算法
大体分为以下几种:
先来先服务(FCFS)
最短寻道时间优先(SSTF)
扫描算法(SCAN)
循环扫描算法(C-SCAN)
先来先服务
按访问请求到达的先后顺序服务。
比如进程发起的磁盘请求依次到达, 30, 41,52, 28,39.
按 30 -> 41 -> 52 -> 28 -> 39这个顺序执行。
优点:公平, 若访问的磁道比较集中, 性能不错。
缺点:若进程请求访问的磁道很分散, 则寻道时间很长。
最短寻道时间优先
类似贪心算法, 选择下一步最优解, 不一定是总体最优。
若当前磁头在50号磁道, 进程陆续访问 56, 90, 51, 69, 30.
则按 51 -> 56 -> 69 -> 90 -> 30的顺序访问。
优点: 平均寻道时间短。
缺点: 可能产生饥饿。
扫描算法
为了防止饥饿, 磁头移动到最外侧或者最内侧之后, 才能改变磁头的移动方向。
也成为电梯算法。
若此时磁头在50号磁道上, 进程陆续访问 56, 90, 51, 69,40, 30.
则按 51 -> 56 -> 69 -> 90 -> 40 -> 30的顺序。
优点: 性能好, 不会产生饥饿。
缺点:只有到达最边上的磁道才能改变磁头移动方向, 会多走不必要走的磁道。
对各个位置的磁道的响应频率不平均。
LOOK算法
SCAN算法的改进, 若不需要访问最边上的磁道, 就不必移动到最边上的磁道上。
循环扫描算法(C-SCAN)
在移动到最边上之后, 立刻移动到另一边, 此过程不访问任何磁道, 解决磁道各个位置的访问频率不平均的问题。
C-LOOK算法
若最边上没有磁道请求, 则不需要移动到最边上。