* [磁盘结构](#磁盘结构) * [磁盘调度算法](#磁盘调度算法) * [1. 先来先服务](#1-先来先服务) * [2. 最短寻道时间优先](#2-最短寻道时间优先) * [3. 电梯算法](#3-电梯算法) # 磁盘结构 - 盘面(Platter):一个磁盘有多个盘面; - 磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道; - 扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小; - 磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为电信号(读),或者将电信号转换为盘面的磁场(写); - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。

# 磁盘调度算法 读写一个磁盘块的时间的影响因素有: - 旋转时间(主轴转动盘面,使得磁头移动到适当的扇区上) - 寻道时间(制动手臂移动,使得磁头移动到适当的磁道上) - 实际的数据传输时间 其中,寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短。 ## 1. 先来先服务 > FCFS, First Come First Served 按照磁盘请求的顺序进行调度。 优点是公平和简单。缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。 ## 2. 最短寻道时间优先 > SSTF, Shortest Seek Time First 优先调度与当前磁头所在磁道距离最近的磁道。 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。

## 3. 电梯算法 > SCAN 电梯总是保持一个方向运行,直到该方向没有请求为止,然后改变运行方向。 电梯算法(扫描算法)和电梯的运行过程类似,总是按一个方向来进行磁盘调度,直到该方向上没有未完成的磁盘请求,然后改变方向。 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。


🎨

更多精彩内容将发布在公众号 **CyC2018**,公众号提供了该项目的 **离线阅读版本** ,后台回复"下载" 即可领取也提供了一份 **面试复习思维导图**,不仅系统整理了面试知识点,而且标注了各个知识点的重要程度,从而帮你理清多而杂的面试知识点。我基本是按照这个思维导图来进行复习的,对我拿到了 BAT 头条等 Offer 起到很大的帮助。你们完全可以和我一样根据思维导图上列的知识点来进行复习,就不用看很多不重要的内容,也可以知道哪些内容很重要从而多安排一些复习时间。