DJ5-8 磁盘存储器的性能和调度

目录

5.8.1  磁盘性能简述

1、磁盘的结构和布局

2、磁盘的类型

3、磁盘数据的组织和格式

4、磁盘的访问过程

5、磁盘访问时间

5.8.2  磁盘调度算法

1、先来先服务 FCFS

2、最短寻道时间优先 SSTF

3、扫描算法(电梯算法)SCAN

4、循环扫描算法 CSCAN

5、磁臂粘着

6、调度算法的选择


5.8.1  磁盘性能简述

1、磁盘的结构和布局

图中水墨色空心圆柱就是所有盘面上的 0 号磁道对应的柱面。

  • 磁盘片:每个磁盘片都有两个盘面,一个磁盘可以有一个或多个磁盘片。
  • 盘面上有:磁道 -- 扇区,磁道间隔 -- 扇区间隔。
  • 磁道:用于记录信息,每个磁道又被分为了多个扇区。
  • 扇区:又被称为盘块或数据块,大小为 600B,存储数据 512B 。
  • 柱面:所有盘面上位于同一磁道号上的所有磁道组成一个柱面。
  • 磁头:每一个盘面都有一个磁头。

扇区除了存储数据的字节,其它的字节用于校验数据和记录状态。

物理地址形式:柱面号 -- 磁头号 -- 扇区号

柱面号用于指示是哪个磁道,磁头号用于指示是哪个盘面。

2、磁盘的类型

  • 固定头磁盘:每个磁道都有一个磁头,I/O 速度快。
  • 移动头磁盘:每个盘面仅有一个磁头,I/O 速度慢

3、磁盘数据的组织和格式

典型的参数
20GB 60GB
39813 柱面 28733 柱面
16 头 16 头
63 扇区 255 扇区

柱面 -- 磁道数;头 -- 盘面数

4、磁盘的访问过程

由三个动作组成:

  1. 寻道:磁头移动定位到指定的磁道。
  2. 旋转延迟:等待指定的扇区从磁头下旋转经过。
  3. 数据传输:数据在磁盘与内存之间的实际传输。

5、磁盘访问时间

旋转延迟时间取的是一个均值,极端情况分别为:扇区刚好在磁头下和扇区刚好错过磁头。

5.8.2  磁盘调度算法

当有多个进程都请求访问磁盘时,由于它们访问的磁道各不相同,因此磁头需要频繁地来回移动以进行寻道操作。

磁头的寻道操作属于机械运动,花费的时间较长,而且过度的寻道操作会大大缩短磁盘的寿命。因此,必须采用适当的磁盘调度算法,使得在尽可能公平的情况下,缩短平均寻道时间,并使磁头移动距离最小。

1、先来先服务 FCFS

按访问请求到达的先后次序服务。

  • 优点:简单,公平。
  • 缺点:效率不高。

相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。

例、假设磁盘访问序列:98,183,37,122,14,124,65,67,磁头起始位置:53,问:

  • 安排磁头的服务序列
  • 计算磁头移动总道数

  • 磁头移动总道数:640
  • 平均寻道长度:80

2、最短寻道时间优先 SSTF

优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

  • 优点:改善了磁盘平均服务时间。
  • 缺点:造成某些访问请求长期等待得不到服务。

注意:计算时一定要仔细,不要选错了下一磁道!

  • 磁头移动总道数:236
  • 平均寻道长度:29.5

SSTF 算法虽然能获得较好的寻道性能, 但却可能导致某个进程发生饥饿现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的 I/O 请求将会被优先满足。而距离较远的老进程将会一直得不到满足。

3、扫描算法(电梯算法)SCAN

对 SSTF 算法略加修改后所形成的 SCAN 算法, 即可防止进程出现饥饿现象。SCAN 算法克服了 SSTF 算法的缺点,既考虑了距离又考虑了方向。

SCAN 具体做法

① 当设备无访问请求时,磁头不动;

② 当设备有访问请求时,磁头按一个方向移动。在移动的过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;

③ 否则改变移动方向,并为经过的访问请求服务,如此反复。

SCAN 算法举例

例、假设磁盘访问序列:98,183,37,122,14,124,65,67,磁头起始位置:53,并且此时磁头是在向内移动。

  • 磁头移动总道数:208
  • 平均寻道长度:26

SCAN 算法的优缺点

① 优点:SCAN 算法既能获得较好的寻道性能,又能防止饥饿现象,故被广泛用于大、中、小型机器和网络中的磁盘调度。

② 缺点:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被大大地推迟。

为了减少这种延迟,推出 CSCAN 算法,规定磁头单向移动。

4、循环扫描算法 CSCAN

SCAN 算法杜绝了饥饿,但假如对磁道的请求是均匀分布的,那么在磁头改变方向时便会发现:靠近磁头的请求很少(因为改变方向前刚刚服务过),而远离磁头的请求较多,从而导致这些请求的等待时间较长。

CSCAN 具体做法

  • 总是按照一个方向进行移动,假设是从里向外移动。
  • 移动臂到达最后一个柱面后,立即带动磁头快速返回到最里的欲访问磁道。
  • 返回时磁头不为任何访问请求服务,直到返回后才开始对访问请求进行扫描。

CSCAN 算法举例

虽然返回的过程中没有为任何访问请求进行服务,但是在计算总磁道时还是要计算返回时移动经过的磁道数。

例、假设磁盘访问序列:98,183,37,122,14,124,65,67,磁头起始位置:53,并且此时磁头是在向外移动。

  • 磁头移动总道数:352
  • 平均寻道长度:44

5、磁臂粘着

在 SSTF、SCAN 及 CSCAN 这几种调度算法中, 都可能出现磁臂停留在某处不动的情况。

例如,有一个或几个进程对某一磁道有较高的访问频率, 即这个/这些进程反复请求对某一磁道的 I/O 操作,从而垄断了整个磁盘设备。

我们把这一现象称为磁臂粘着(Armstickiness)。

在高密度磁盘上容易出现此情况:因为与低密度磁盘相比,它在一个扇区/一条磁道中容纳的数据更多,所以可能导致进程需要多次访问才能读取完其中的数据。

6、调度算法的选择

  • 实际系统相当普遍地采用 SSTF 算法,因为它简单有效且性价比好。
  • SCAN 算法更适用于磁盘负担重的系统。
  • 磁盘负担很轻的系统也可以采用 FCFS 算法。

一般要将磁盘调度算法作为操作系统的单独模块编写,利于修改和更换。

猜你喜欢

转载自blog.csdn.net/m0_64140451/article/details/130569151
今日推荐