操作系统的磁盘结构、磁盘管理、磁盘调度算法

磁盘结构

磁盘、磁道、扇区

  • 盘面:一个磁盘有多个盘面
  • 磁道:盘面上的圆形带状区域,一个盘面有多个磁道
  • 扇区:磁道上的一个弧段,一个磁道可以有多个扇区,他是最小的物理单位,目前主要有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盘)

坏块管理

什么是坏块?

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

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

原文地址:https://www.cnblogs.com/itjiangpo/p/14181390.html