zoukankan      html  css  js  c++  java
  • 操作系统的磁盘结构、磁盘管理、磁盘调度算法

    磁盘结构

    磁盘、磁道、扇区

    • 盘面:一个磁盘有多个盘面
    • 磁道:盘面上的圆形带状区域,一个盘面有多个磁道
    • 扇区:磁道上的一个弧段,一个磁道可以有多个扇区,他是最小的物理单位,目前主要有512字节与4k大小;
    • 磁头:与盘面非常接近,能够在盘面上的磁场转换成电信号(读),或者将电信号转换成盘面的磁信号(写);
    • 制动手臂:用于磁道之间移动磁头
    • 主轴:使整个盘面转动

    磁盘的分类

    磁盘根据磁头是否可以移动分为活动磁头和固定磁头。在这里插入图片描述
    在这里插入图片描述
    根据盘片是否可以更换,分为固定磁盘和可换盘磁盘

    磁盘调度算法

    首先一次磁盘读或写操作需要多少时间?
    寻道时间:在读写前,将磁头移动到指定磁道所花的时间。
    其实启动磁头臂也是需要时间的,这里把它记为 s.
    移动磁头时,每跨越一个磁道耗时m,总共假设跨越n个磁道。
    所以寻道时间 T=m*n+s;
    延迟时间:通过旋转磁盘,是磁头到达目标扇区所需要的时间。转速设为r.
    所以平均所需的延迟时间 Tr=(1/2)*(1/r)=1/2r

    传输时间:从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速是r,读写字节为b,每个磁道上的字节数是N,则:
    Tt=(1/r)*(b/N)=b/(rN)

    总的存取时间=寻道时间+延迟时间+传输时间,但是由于延迟时间和传输时间都与硬盘的转速有关,转速越大,时间越短,因此系统需要优化的是寻道时间,以下所讲的磁盘调度算法都是服务于寻道时间

    先来先服务算法(FIFO)

    按照磁道请求顺序调度。
    优点:公平简单。
    缺点:平均寻道时间可能较长。

    最短寻道时间优先(SSTF)

    优先调度与当前磁头所在磁道最近的磁道。
    虽然平均寻道时间变短了,但是不够公平。如果新到达的磁道请求总是比在等待的磁道请求近,那么等待的那个请求就会饥饿。两端的磁道请求更容易出现饥饿现象。

    在这里插入图片描述

    电梯算法(SCAN)

    电梯总是保持一个方向运行,直到该方向没有请求位置,然后改变运行方向。
    电梯算法和电梯的运行过程类似,总是按照一个方向进行磁盘调度,直到该方向上没有未完成的磁盘请求,然后改变方向。
    因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了SSTF算法的饥饿问题。
    在这里插入图片描述

    循环扫描算法(C-SCAN)

    只有磁头朝某个方向移动时才会响应请求,移动到边缘后立即让磁头返回起点。返回途中不做任何处理。

    在这里插入图片描述

    LOOK算法和C-LOOK算法

    SCAN算法的升级,只要磁头移动方向上不再有请求就立即改变磁头的方向。
    C-SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即让磁头返回起点。
    在这里插入图片描述

    减少磁盘延迟时间的方法

    回顾一下延迟时间:也就是磁头寻找目标删去所花的时间(磁头在扇区所属的磁道,通过磁盘转动寻找到目标扇区)

    交替编号

    做法:让编号相邻的扇区在物理上不相邻。
    原理上:读取完一个扇区后,需要一段时间处理才可以继续读入下一个扇区。

    错位命名

    具体做法:让相邻盘面的扇区编号“错位”
    原理:与交替编号相同。“错位命名法可以降低延迟时间”

    磁盘地址结构(柱面号,盘面号,扇区号),为什么不是(盘面号,柱面号,扇区号)?
    因为在读取地址连续的磁盘块时,前者更不需要移动磁头。

    磁盘管理

    磁盘初始化

    1. 进行低级格式化(物理格式化),将磁盘的各个磁道划分成扇区。一个扇区通常可分为头,数据区,尾三个部分组成。管理山区所需要的数据结构一般在头和尾中,包括扇区校验码等。
    2. 将磁盘分区,每个分区由若干个柱面组成(C盘,D盘等)
    3. 进行逻辑格式化,创建文件系统。包括创建根目录。初始化存储空间管理所用的数据结构。

    引导块

    计算机开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(也叫自举程序)完成的。
    ROM:被称为只读存储器,ROM中的数据在出厂时就写入了(集成在主板上),并且以后无法修改。
    如果把初始化程序放在ROM中是无法进行修改的,因此只在ROM中存放很小的“自举装入程序”,而完整的自举程序放在引导块中,启动块位于磁盘固定位置。拥有启动分区的磁盘叫做系统盘或启动盘(Windows的C盘)

    坏块管理

    什么是坏块?

    坏了、无法正常使用的扇区就是坏块。这属于硬件故障。操作系统无法修复,应该将他标记出来,以后不再使用它。

    对于简单的磁盘,可以在逻辑格式化时对整个磁盘进行坏块检查。
    对于复杂的磁盘,会维护一个坏块链表,在磁盘出厂前进行低级初始化时,就将坏块链初始化,也会保留一些备用扇区,用于替换坏块。这种方案称为扇区备用。这种操作对系统来说是透明的。

  • 相关阅读:
    什么是DI
    什么是IOC?
    什么是spring框架?spring框架到底有什么用?spring框架到底做了些什么?
    JSP中动态include和静态include的区别?
    jsp静态include和动态include区别
    Request对象的主要方法有哪些?
    如何防止重复提交
    JSTL 标签大全详解
    序列化对象为xml字符串
    ASP.NET获取客户端的相关信息
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121933.html
Copyright © 2011-2022 走看看