目录

【操作系统】磁盘

磁盘的结构

磁盘的组成结构包括:盘片、盘面、磁道、扇区、磁头、磁臂、柱面。

  • 盘片。

    一个磁盘由多个盘片叠加而成。

    盘片表面由磁性物质组成,可以用来记录二进制数据。

  • 盘面。

    盘片涂上磁性物质的那一面称为盘面,一个盘片可以有两个盘面。

    每个盘面都有一个编号,从0开始。

  • 磁道。

    磁盘的磁面被划分成很多个圈,一个圈就是一个磁道。

  • 扇区。

    一个磁道被划分为多个扇区,每个扇区存放的数据量相同。

    最内侧磁道的扇区,数据密度最大。

  • 磁头。

    每个盘面对应一个磁头。

  • 磁臂。

    所有磁头都是连在同一个磁臂上的。

  • 柱面。

    所有盘面中相对位置相同的磁道组成了柱面。

磁盘的物理地址

地址结构

对于每一个磁盘块,使用**(柱面号, 盘面号,扇区号)**的地址形式来表示。

地址结构设计原理

如果采用 (盘面号,柱面号,扇区号) 的地址形式,一个盘面磁道读写完,就需要启动磁头臂,将磁头移入下一个柱面。

如果采用 (柱面号,盘面号,扇区号) 的地址形式,一个盘面磁道读写完,不需要移动磁头臂,只需要激活写一个盘面的磁头即可。

在磁盘中读/写数据

  1. 根据柱面号,移动磁臂,将磁头指向指定柱面。
  2. 根据盘面号,激活指定盘面的磁头。
  3. 当指定扇区从磁头下划过时,就能完成数据读/写。

磁盘分类

  • 活动头磁盘:磁头可以移动。
  • 固定头磁盘:磁头不可移动,每个磁道有一个磁头。
  • 可换片磁盘:盘片可以更换。
  • 固定盘磁盘:盘片不可更换。

一次磁盘读写花费的时间

  1. 寻找时间(寻道时间)。

    在读写数据前,将磁头移动到指定磁道所花的时间。包括两部分:启动磁头臂的时间 + 移动磁头的时间。

  2. 延迟时间。

    旋转磁盘使磁头定位到指定扇区所用的时间。平均延迟时间为:平均延迟时间 = (1/2)*(1/r),1/2表示平均要转动半圈。r表示每分钟转多少圈。

  3. 传输时间。

    读写数据所用时间。

总时间为上述三个时间的总和。

磁盘调度算法

不同的磁盘调度算法所需的寻道时间不同。

常见的磁盘调度算法为:

  • 先来先服务算法。
  • 最短寻找时间优先。
  • 扫描算法。
  • Look调度算法。
  • 循环扫描算法。
  • C-Look调度算法。

1. 先来先服务算法

根据进程请求访问磁盘的先后顺序进行调度。

优点:公平;如果请求的磁道比较集中,性能还可以。

缺点:如果请求访问的磁道分散,则寻道时间长,性能很差。

2. 最短寻找时间优先

优先处理与当前磁头最近的磁道。可以保证每次寻道时间最短,但是不能保证总寻道时间最短。

优点:性能较好,平均寻道时间短。

缺点:可能产生饥饿。

3. 扫描算法

也叫电梯算法,磁头只有移动到最外侧磁道的时候,才能往内移动,只有移动到最内侧的时候,才能往外移动。

优点:性能较好,平均寻道时间较短,不会产生饥饿现象。

缺点:对各个磁道的响应不平均;可能会产生不必要的移动。

4. Look 调度算法

类似于扫描算法,但是如果在磁头移动方向上,已经没有请求了,就立即改变磁头移动方向。

优点:寻道时间比扫描算法跟短。

5. 循环扫描算法

规定磁头朝一个方向移动时才处理访问请求,移动到尽头后直接返回到起始端,该过程不处理请求。

优点:每个磁道的响应都很平均,寻道时间比扫描算法更短。

缺点:会产生不必要的移动。

6. C-Look 调度算法

类似于循环扫描算法。但是,如果移动方向上没有请求了,就立即让磁头返回,并且只返回到需要访问的磁道位置。

优点:寻道时间进一步缩短。

优化延迟时间

磁头读写一个扇区后,需要一小段时间做其他处理,然后才能继续操作其他扇区,但是磁盘会继续旋转,此时就会错过下个扇区。

如果逻辑相邻的扇区,在物理上也相邻,读写下个扇区时,就需要磁盘多转一轮,从而导致延迟时间变长。

根据上述原理,有两种减少延迟时间的办法:交替编号和错位命名。

1. 交替编号

让逻辑相邻的扇区在物理上不相邻,如(0,4,1,5,2,6,3,7)。

2. 错位命名

让相邻盘面的扇区编号错位。如上个盘面的0对应下个盘面的7。

磁盘格式化

  1. 低级格式化:又称物理格式化,将磁盘的各个磁道划分为扇区。一个扇区由头、数据区域、尾三个部分组成。
  2. 将磁盘分区,每个分区由若干个柱面组成。如C盘,D盘。
  3. 进行逻辑格式化,创建文件系统。

引导块

初始化程序

计算机开机时,需要进行一系列初始化工作,这些工作是通过“初始化程序”完成的。

初始化程序可以放在只读存储器ROM中,ROM中的数据在出厂时就写入了,并且不能再修改。

启动分区

如果初始化程序放在ROM中,就很难再去更新,所以通常将完整的初始化程序放在磁盘的启动分区上。启动分区位于磁盘固定位置,拥有启动分区的磁盘称为启动磁盘,或者系统磁盘。

ROM只存放很小的“自举装入程序”。开机时,计算机通过运行该程序找到启动分区,然后将完成的初始化程序读入内存,进行初始化。