操作系统:大容量存储结构

一、磁盘概述

在这里插入图片描述
磁头附着在磁臂上,磁臂将所有磁头作为一个整体而一起移动。
盘片的表面逻辑地分为圆形磁道,再细分为扇区
同一磁臂位置的磁道集合形成了柱面

二、磁盘结构

1.磁盘结构

现代磁盘驱动器可以看做一个一维的逻辑块的数组。
编址方式:柱面,磁道、扇区
逻辑块由【柱面号,磁道号,扇区号】来定义

一维逻辑块数组按顺序映射到磁盘的扇区。

  • 扇区0是最外面柱面的第一个磁道第一个扇区。
  • 该映射是先按磁道内扇区顺序,再按柱面内磁道顺序,再按从外到内的柱面顺序来排序

2.磁盘类型

固定头磁盘:在每条磁道上都有一读/写磁头,所有的磁头都被装在一刚性磁臂中。通过这些磁头可访问所有各磁道,并进行并行读/写,有效地提高了磁盘的I/O速度。这种结构的磁盘主要用于大容量磁盘上。

移动头磁盘:每一个盘面仅配有一个磁头,也被装入磁臂中。为能访问该盘面上的所有磁道,该磁头必须能移动以进行寻道。可见,移动磁头仅能以串行方式读/写,致使其I/O速度较慢。

3.磁盘访问时间

磁盘访问时间= 定位时间(寻道时间+旋转延迟时间)+ 传输时间

寻道时间:把磁臂(磁头)移动到指定磁道上所经历的时间。(固定头磁盘没有没有寻道时间)
旋转延迟时间:指定扇区移动到磁头下面所经历的时间。

三、磁盘调度及调度算法

通过管理磁盘I/O请求的处理次序,采用好的方式能够提高访问时间和带宽

1.FCFS调度

先来先服务算法。
在这里插入图片描述

2.SSTF调度

最短寻道时间优先算法。
从当前磁头位置选择最短寻道时间的请求
SSTF(shortest-seektime-first)基本上是一种最短作业优先(SJF)调度,与SJF调度一样,它可能导致某些请求的饥饿。
在这里插入图片描述

3.SCAN调度

扫描算法,又称电梯算法
磁臂从磁盘的一端开始向另一端移动;同时当磁头移过每个柱面时,处理位于该柱面上的服务请求;当到达另一端时,磁头改变移动方向,继续处理;
磁头在磁盘上来回扫描。
在这里插入图片描述

4.C-SCAN调度

是SCAN调度的变种,主要提供一个更为均匀的等待时间。
算法说明:

  • 磁头从磁盘一端向另一端移动;
  • 随着移动而不断地处理请求;
  • 当磁头到头时,立即返回到磁盘开始端;
  • 返回时并不处理请求

C-SCAN调度算法基本上将柱面当做一个环链,以将最后柱面和第一柱面相连。

在这里插入图片描述

5.LOOK调度和C-LOOK调度

通常,磁头只移动到一个方向上最远的请求为止。接着,它马上回头,而不是继续到磁盘的尽头。
这种形式的SCAN和C-SCAN称为LOOK和C-LOOK调度。

C-LOOK调度例子:
在这里插入图片描述

6.N-Step-SCAN调度

在SSTF、SCAN、CSCAN几种调度算法中, 都可能出现磁臂停留在某处不动的情况, 例如,有一个或几个进程对某一磁道有较高的访问频率, 即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。这一现象称为“磁臂黏着”Arm Stickiness。在高密度磁盘上容易出现此情况。

N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列。,而每处理一个队列时又是按SCAN算法,对一个队列处理完后,再处理其他队列。

当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。

注:当N值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能;
当N=1时, N步SCAN算法便退化为FCFS算法。
在这里插入图片描述

7.FSCAN调度

FSCAN算法实质上是N步SCAN算法的简化, 即FSCAN只将磁盘请求队列分成两个子队列。

一个是由当前所有请求磁盘I/O的进程形成的队列,磁盘调度按SCAN算法进行处理。

在扫描期间,将新出现的所有请求磁盘I/O的进程, 放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。

在这里插入图片描述

8.调度算法的选择

  • SSTF(最短寻道时间优先算法)较为普通且很有吸引力
  • SCAN和C-SCAN对磁盘负荷较大的系统会执行得更好,这是因为它不可能产生饥饿问题。
  • SSTF或LOOK是比较合理的缺省算法。

对于任何调度算法,性能依赖于请求的类型与数量,磁盘服务请求很大程度上受文件分配方法的影响,磁盘调度算法应作为一个操作系统的独立块,这样如果有必要,它可以替换成另一个不同的算法。其它考虑,旋转时间,磁盘请求优化

四、磁盘管理

低级格式化或物理格式化(Raw/Low Format):将磁盘分成磁盘控制器能读与写的扇区。

逻辑格式化:创建文件系统

(cluster):把若干个块组合起来形成更大的块,磁盘的I/O以大块为单位完成

扇区的数据结构

  1. 头,包含扇区号码;
  2. 数据区域;
  3. 尾部,包含纠错代码(error-correcting code,ECC)。ECC:在写,更新时;在读,计算和检查时

为了让磁盘能够存储文件,操作系统还必须在磁盘上记录自己的数据结构,即

  • 分成几个分区(柱面的集合);
  • 逻辑格式化或“做文件系统”
    1.映射空闲/可分配空间/已分配空间
    2.初始化空目录

引导块: 绝大多数系统只在启动ROM中保留一个很小的自举装入程序(bootstrap),其作用是初始化,启动OS(保存在磁盘的启动块上)

猜你喜欢

转载自blog.csdn.net/weixin_44759105/article/details/112010352