磁盘存储器的性能和调度

磁盘性能简述  磁盘设备是一种相当复杂的机电设备,在此仅对磁盘的某些性能,如数据的组织、磁盘的类型和访问时间等方面做扼要的阐述。

1. 数据的组织和格式  磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(Surface),每个盘面上有若干个磁道(Track),磁道之间留有必要的间隙(Gap)。为使处理简单起见,在每条磁道上可存储相同数目的二进制位。

2. 磁盘的类型  对于磁盘,可以从不同的角度进行分类。最常见的有:将磁盘分成硬盘和软盘、单片盘和多片盘、固定头磁盘和活动头(移动头)磁盘等。下面仅对固定头磁盘和移动头磁盘做些介绍。  (1) 固定头磁盘。  (2) 移动头磁盘。

3. 磁盘访问时间  磁盘设备在工作时以恒定速率旋转。为了读或写,磁头必须能移动到所指定的磁道上,并等待所指定的扇区的开始位置旋转到磁头下,然后再开始读或写数据。 

早期的磁盘调度算法  

1. 先来先服务(FCFS)  这是最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。

2. 最短寻道时间优先(SSTF)  该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种算法不能保证平均寻道时间最短。

1. 扫描(SCAN)算法  SSTF算法的实质是基于优先级的调度算法,因此就可能导致优先级低的进程发生“饥饿”(Starvation)现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必然优先满足。在对SSTF算法略加修改后,则可防止低优先级进程出现“饥饿”现象。

2. 循环扫描(CSCAN)算法  SCAN算法既能获得较好的寻道性能,又能防止“饥饿”现象,故被广泛用于大、中、小型机器和网络中的磁盘调度。但也存在这样的问题:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续从里向外,然后再从外向里扫描完处于外面的所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被大大地推迟。

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

FSCAN算法  FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理。另一个是在扫描期间,将新出现的所有请求磁盘I/O的进程放入等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。

posted on 2022-05-30 15:47  只爱敲代码  阅读(148)  评论(0编辑  收藏  举报

导航