磁盘的驱动调度算法

磁盘的驱动调度算法

磁盘是可供多个进程共享的设备,由于磁盘是串行I/O,当有多个进程要求访问磁盘时,应采用一种调度算法,以使各进程对磁盘的平均访问时间尽可能的少。

磁盘调度的目标:是磁盘的平均寻道时间最少

常用的调度算法有:

  1. 先来先服务FCFS:根据进程请求访问磁盘的先后次序进行调度
  2. 最短寻道时间优先SSTF:要求访问的磁道与当前磁头位置距离最近最短寻道时间优先SSTF:要求访问的磁道与当前磁头位置距离最近
  3. 扫描算法SCAN:按磁头移动方向,依次按距离移动,直到前方没有磁道需要访问时,转向扫描算法SCAN:按磁头移动方向,依次按距离移动,直到前方没有磁道需要访问时,转向
  4. 循环扫描算法CSCAN:按磁头移动方向,依次按距离移动到最边上的磁道,然后又回到离起始磁道位置最近的位置,依次按距离移动循环扫描算法CSCAN:按磁头移动方向,依次按距离移动到最边上的磁道,然后又回到离起始磁道位置最近的位置,依次按距离移动

例:某磁盘共200个磁道,编号为0-199。某时刻磁头刚从96磁道移动到100磁道,目前正停在第100磁道上。之后该磁盘一次接收到的磁盘请求分别为55,58,39,18,90,160,150,38,184
请采用各种磁盘调度算法进行调度。

1、先来先服务FCFS
磁头访问次序:55 58 39 18 90 160 150 38 184
磁头移动距离:45 3 19 21 72 70 10 112 146
平均寻道时间:55.3

2、最短寻道时间优先SSTF
磁头访问次序:90 58 55 39 38 18 150 160 184
磁头移动距离:10 32 3 16 1 20 132 10 24
平均寻道时间:27.6

3、扫描算法SCAN
磁头访问次序:150 160 184 90 58 55 39 38 18
磁头移动距离:50 10 24 94 32 3 16 1 20
平均寻道时间:27.8

4、循环扫描算法CSCAN
磁头访问次序:150 160 184 18 38 39 55 58 90
磁头移动距离:50 10 24 166 20 1 16 3 32
平均寻道时间:35.8

你可能感兴趣的:(Linux/操作系统)