• 磁盘管理:磁盘调度算法


    磁盘管理:磁盘调度算法

    文件系统层次结构
    设备(含磁盘)管理位于最后一层
    下图来自王道考研操作系统

    1.1 一次读写磁盘操作需要的时间

    平均存取时间 = 寻道时间 + 延迟时间 + 传输时间
    T a = T s + 1 2 r + B r N T_a=T_s+\frac{1}{2r}+\frac{B}{rN} Ta=Ts+2r1+rNB

    延迟时间与传输时间均与磁盘转速有关,而磁盘转速是硬件属性,无法通过软件实现优化
    操作系统唯一能优化的是寻道时间

    1.1.1 寻道时间

    寻道时间 T s T_s Ts:在读写数据前,启动磁头臂并将磁头移动到指定磁道所花的时间
    1.启动磁头臂耗时 s s s
    2.假设磁头每跨越一个磁道耗时 m m m,若共需要跨越 n n n条磁道
    T s = s + m ∗ n T_s=s+m*n Ts=s+mn
    寻道时间 = 磁头臂启动时间 + 移动磁头时间

    1.启动磁头臂耗时 s s s

    2.磁头每跨越一个磁道耗时 m m m,若共需要跨越 n n n条磁道

    下图来自王道考研操作系统

    1.1.2 延迟时间

    磁头移动到某个磁道上后定住不动,需要磁盘旋转才能使得磁头读取对应磁道上的某个扇区,这个磁盘旋转的时间就是延时时间

    延迟时间 T R T_R TR:通过旋转磁盘,使得磁头定位到目标扇区所需要的时间。
    设磁盘转速为 r r r(单位:转/秒 或者 转/分),则平均所需的延迟时间
    T R = 1 2 ∗ 1 r = 1 2 r T_R=\frac{1}{2}*\frac{1}{r}=\frac{1}{2r} TR=21r1=2r1
    1 r \frac{1}{r} r1就是转一圈需要的时间。找到目标扇区平均需要转半圈,因此再乘 1 2 \frac{1}{2} 21
    延迟时间 = 磁盘转一圈的时间的平均值

    下图来自王道考研操作系统

    1.1.3 传输时间

    传输时间 T t T_t Tt:从磁盘读出或向磁盘写入数据所经历的时间
    设磁盘转速为 r r r,此次读写字节数为 B B B,每个磁道上能存储字节数为 N N N,故需要占用 B / N B/N B/N个磁道,读写一个磁道所需时间就是磁盘转一圈需要的时间 1 / r 1/r 1/r
    T t = 1 r ∗ B N = B r N T_t=\frac{1}{r}*\frac{B}{N}=\frac{B}{rN} Tt=r1NB=rNB
    传输时间 = 读写一个磁道时间 * 要读写的磁道个数

    下图来自王道考研操作系统

    2.1 磁盘调度算法

    磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列

    寻道时间是影响磁盘调度算法的指标

    2.1.1 先来先服务(FCFS)

    思想:磁头从当前磁道移动到第一个请求访问的磁道,之后按照提出请求的顺序依次进行

    下图来自王道考研操作系统

    2.1.2 最短寻找时间优先(SSTF)

    思想:磁头每次都从当前磁道移动到离最近发出请求访问的那个磁道。只能保证每次寻找的时间最短,但无法保证总的寻找时间最短,也就是无法达到所有请求访问时的寻找时间最短(局部最优,非总体最优)

    下图来自王道考研操作系统
    为了防止SSTF中陷入局部不断的请求而导致其他磁道的饥饿现象,引出扫描算法

    2.1.3 扫描算法 / 电梯算法(SCAN)

    思想:磁头每次都从当前磁道移动往请求访问序列中磁道号较大的方向移动,直到遇到磁盘的最外层磁道才开始回头寻找请求访问中的较小号磁道

    下图来自王道考研操作系统

    扫描算法中其实没必要非得移动到磁盘最外层磁道,应该在请求访问序列中最大磁道处回头,针对扫描算法的第一个缺点做出改进,引出LOOK调度算法

    扫描算法各个磁道的响应不均,可能某个磁道频繁访问,而其他被访问的次数少,针对扫描算法的第二个缺点做出改进,引出循环扫描算法

    2.1.4 LOOK调度算法(LOOK)

    思想:对扫描算法第一个缺点的改进,无需像扫描算法一样移动到磁盘最外侧磁道才回头,可以边移动边观察,如果移动到请求访问序列中最后一个磁道就立马回头

    下图来自王道考研操作系统

    2.1.5 循环扫描算法(C-SCAN)

    思想:解决了扫描算法即各个磁道响应频率不均(第二个缺点)的问题。只有当磁头往某特定方向移动时(比如往右)才进行处理请求,往左移动时不处理任何请求,即便是路过某个访问请求也不处理

    下图来自王道考研操作系统

    2.1.6 C-LOOK调度算法(C-LOOK)

    思想:解决C-SCAN中遇到磁盘最外侧磁道才回头的问题。若磁头移动方向上没有磁道访问请求了,就可让磁头回头,只需返回到有磁道访问请求的位置即可

    下图来自王道考研操作系统

  • 相关阅读:
    flink入门介绍
    Citespace、vosviewer、R语言的文献计量学 、SCI
    Java面试题总结(二)
    手把手教你如何通过CC2531抓取Zigbee包,并解析加密Zigbee包
    torchvision_transform(图像增强)
    贴片电阻的读数方法
    Jenkins-Pipline实现原理
    MySQL的定时任务-数据表增加分区
    Linux C网络通信过程
    Vue源码学习(四):<templete>渲染第三步,将ast语法树转换为渲染函数
  • 原文地址:https://blog.csdn.net/weixin_48524215/article/details/126255123