计算机是处理数据的机器,而数据就需要有地方存放。在计算机中,可供数据存放的地方并不太多,除了内存之外,最主要的存储数据的媒介就是磁盘。对于大多数计算机领域的人来说,磁盘通常被看做是一种外部设备。可是,对于现代操作系统来说,磁盘是不可或缺的。虽然早期的操作系统可以基于磁带,但由于操作系统复杂性和性能的不断提升,用磁带作为操作系统的载体已经不合时宜,取而代之的是磁盘。由于操作系统需要存放在磁盘上,且操作系统内的文件系统也是基于磁盘,所以,从某种程度来说,磁盘是操作系统不可分割的一部分,理解磁盘将对理解操作系统的原理具有重要的意义。
一、磁盘的结构
1、什么是磁盘?
通俗地讲,磁盘就是以形状像盘子一样的磁性存储介质。
-
特性是持久,正常情况下数据存放在上面不会消失;
-
显著特征是磁性和圆形,因此被称为磁盘;
-
价格低廉,因此可以大量使用;
2、磁盘结构
-
盘面(Platter):一个磁盘有多个盘面;
-
磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道;
-
扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小;
-
磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为电信号(读),或者将电信号转换为盘面的磁场(写);
-
制动手臂(Actuator arm):用于在磁道之间移动磁头;
-
主轴(Spindle):使整个盘面转动。
二、磁盘调度算法
读写一个磁盘块的时间的影响因素有:
-
旋转时间(主轴转动盘面,使得磁头移动到适当的扇区上);
-
寻道时间(制动手臂移动,使得磁头移动到适当的磁道上);
-
实际的数据传输时间。
其中,寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短。
1、先来先服务
按照磁盘请求的顺序进行调度。优点是公平和简单。缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。
2、最短寻道时间优先
优先调度与当前磁头所在磁道距离最近的磁道。虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。
3、电梯算法
电梯总是保持一个方向运行,直到该方向没有请求为止,然后改变运行方向。电梯算法(扫描算法)和电梯的运行过程类似,总是按一个方向来进行磁盘调度,直到该方向上没有未完成的磁盘请求,然后改变方向。因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。
参考:https://www.cnblogs.com/edisonchou/p/5136649.html
https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机操作系统 - 设备管理.md