• 操作系统原理之磁盘调度


    首先介绍主要的的四种磁头调度算法

    (一)先来先服务算法(FCFS)

    1、算法思想:按访问请求到达的先后次序服务。

    2、优点:简单,公平。

    3、缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。

    4、例子:

    假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。

    由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:

    磁头服务序列为:98,183,37,122,14,124,65,67

    磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁道)

    (二)最短寻道时间优先算法(SSTF)

    1、算法思想:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

    2、优点:改善了磁盘平均服务时间。

    3、缺点:造成某些访问请求长期等待得不到服务。

    4、例子:对上例的磁盘访问序列,可得磁头移动的轨迹如下图。请同学自己给出磁头服务序列并计算磁头移动总距离。

    (三) 扫描算法(电梯算法)(SCAN)

    1、算法思想:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。如下图所示:

    扫描算法(电梯算法)的磁头移动轨迹

    2、优点:克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。

    3、例子:下图是一个示例。请同学自己写出一个可能的磁盘访问序列,并计算磁头移动总距离。

     

    扫描算法图例

     

    (四)单向扫描调度算法(CSCAN)

    算法思想:

    1、总是从0号柱面开始向里扫描。

    2、按照各自所要访问的柱面位置的次序去选择访问者。

    3、移动臂到达最后一个柱面后,立即带动读写磁头快速返回到0号柱面。

    4、返回时不为任何的等待访问者服务。

    5、返回后可再次进行扫描。

     

     

    下面是作业题目及解法:

    1. 若干个等待访问磁盘者依次要访问的柱面为 20,44,40,4,80,12,76,假设每移动一个柱面需要3ms时间,移动臂当前位于40号柱面,磁头正向磁道好增加的方向移动,

    请按 FCFS, SSTF, SCAN 算法分别计算为完成上述访问总共花费的寻找时间。

     

    (1)FCFS算法:

     

    移动臂的移动次序为

     

    40 → 20 → 44 → 40 → 4 → 80 → 12 → 76  

     

    移动的柱面数 = 20 +24+4+36+76+68+64=292

     

    共花费 3×292=876毫秒   

     

    (2)SSTF算法:

     

    移动臂的移动次序为

     

    40 → 44 → 20 → 12 → 4 → 76 → 80  

     

    移动的柱面数 = 4+24+8+8+72+4=120

     

    共花费 3×120=360毫秒  

     

    (3)SCAN算法:

     

    移动臂的移动次序为

     

    40 → 44 → 76 → 80 → 20 → 12 → 4  

     

    移动的柱面数 = 4+32+4+60+8+8=116

     

    共花费 3×116=348毫秒 

     

    2.假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘的空闲状态 
    ⑴请说明在上述条件如何进行磁盘块空闲状态的管理。
    ⑵设某单面磁盘的旋转速度为每分钟6000转,每个磁道有100个扇区,相临磁道间的平均移动的时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动,磁道号的请求队列为50,90,30,120对请求队列中的每个磁道需读取1个随机分布的扇区,则读完这个扇区点共需要多少时间?需要给出计算过程。

    (3)如果将磁盘替换为随机访问的 Flash 半导体存储器(如 U 盘、 SSD 等),是否有比 CSCAN 更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并 说明理由;若无,说明理由。


    (1). 2KB = 2*1024*8bit = 16384bit。因此可以使用位图法进行磁盘块空闲状态管理,每1bit表示一个磁盘块是否空闲。 
    (2). 每分钟6000转,转一圈的时间为0.01s,通过一个扇区的时间为0.0001s。 则平均旋转延迟时间为0.01/2 = 5ms, 平均平均读取时间为0.1ms。

    根据CSCAN算法,被访问的磁道号顺序为100 ,120 , 30, 50 , 90,因此,寻道用去的总时间为:(20 + 90 + 20 + 40)* 1ms = 170ms
    总共要随机读取四个扇区,用去的时间为:(0.01*0.5 + 0.0001)*4 = 0.0204s = 20.4ms
    所以,读完这个扇区点共需要 170ms + 20.4ms = 190.4ms。

    (3)采用FCFS调度策略更高效。随机访问的FLASH半导体存储器的物理结构不需要考虑寻道时间和旋转时间延时,可直接按请求的先后顺序执行。

     

  • 相关阅读:
    Android 导入工程文件引用包出错
    Android调用系统的打电话和发短信界面(1.将消息内容带过去2.实现群发)
    Android检查手机上是否安装了第三方软件的方法------本文以百度地图为例
    Java中的枚举使用详解
    Android 调用手机上第三方百度地图并传值给地图
    将myeclipse中不适用的插件禁用掉
    WPF DataGridTemplateColumn
    WPF Binding控件某个属性
    WPF VisualStateManager
    WPF Action
  • 原文地址:https://www.cnblogs.com/tjulym/p/5003655.html
Copyright © 2020-2023  润新知