0%

操作系统-设备管理

SanSebastianFilm_ZH-CN5506786379_1920x1080.jpg

磁盘

硬盘基本知识(磁头、磁道、扇区、柱面)

磁盘的读写原理

  • 一个磁盘包括多个盘片,每个盘片包含两个面,每个面都有一个磁头,用来将磁信号转换成电信号(读)或将电信号转换成磁信号(写)
  • 每个盘面包括多个磁道,每个磁道划分成多个扇区,扇区是最小的存储单位
  • 磁盘使用主轴进行旋转,使用磁臂进行寻道

pic

磁盘容量

$$
容量 = 盘面数 × 每个盘面的磁道数 × 每个磁道的扇区数 × 扇区大小
$$

磁盘读取时间

当需要从磁盘读取数据时,操作系统将逻辑地址传给磁盘,磁盘的控制电路将逻辑地址翻译成物理地址

  1. 寻道时间:磁臂移动,寻找合适磁道;寻道时间最长

  2. 旋转时间:主轴转动盘面,寻找合适扇区;每分钟能几千甚至上万转

  3. 数据传输时间

磁盘调度算法

磁盘调度算法的目的是使平均寻道时间最短

先来先服务

按照磁盘请求顺序进行调度

  • 优点:简单公平

  • 没有考虑磁道的距离,导致平均寻道时间过长

最短寻道时间优先

优先调度与当前磁头最近的磁道

  • 平均寻道时间短

  • 不公平,两端的磁道容易出现饥饿现象

电梯算法

电梯总是保持一个方向运行,直到该方向没有请求为止,然后改变运行方向

  • 解决了两端磁道的饥饿现象

磁盘读写

操作系统将数据存储到磁盘,按照柱面、磁头、扇区的方式进行。从外到内,从上到下

柱面编号由外到内依次递增,磁头编号从上到下依次递增。首先将数据存储在第一盘面的第一磁道的所有扇区中,然后是同一柱面的下一个磁头。一个柱面的所有磁道存储满之后推进到下一个柱面

磁盘预读

局部性原理

当一个数据被用到时,其附近的数据也通常会马上被使用

预读

为了减少 IO 操作,磁盘往往不是按需读取,而是每次都会预读。预读过程中磁盘会进行顺序读取,顺序读取不需要磁盘并且只需要很短的旋转时间,所以预读可以提高 IO 效率,速度非常快。预读的长度一般为页的整倍数

磁盘碎片

磁盘是连续存储的。增加数据时,需要将增加的数据存储到磁盘的别处;删除数据时,就会产生小碎片