上节讲了磁盘的一些基本知识。
这一节我们就开始磁盘的真正调度,调度之前需要先说一个知识点。
磁盘参数:
1. 磁盘容量 = 磁头数 * 柱面数 * 扇区数 * 512bytes,固定的
2. 转速:转速决定读写512字节的速度
3. 平均访问时间:是指磁头从起始位置到到达目标磁道位置,并且从目标磁道上找到要读写的数据扇区所需的时间。
平均访问时间=平均寻道时间+平均等待时间。
4. 传输速率:传输速率分内部传输速率和外部传输速率。内部传输速率由磁盘转速和平均访问时间决定。外部传输速率即系统总线与磁盘的交互速度。
5. 缓存:磁盘缓存主要用来干两件事:保存内存发来的写数据,保存读取磁盘的数据。
对于1245这些参数,都是磁盘厂商生产的硬件标准,是固定的。对于第3个,这个时间不可能为零,只能最优。所以在历史的探索中,就出现了很多算法来降低磁头平均访问时间。
那磁盘调度讲得就是这几种算法了。
1. 先来先服务FCFS:公平,简单,每个进程的请求都能依次得到处理。没有对寻道优化,平均寻道时间长。
2. 最短时间优先调度算法SSTF:要求访问的磁道是当前磁头所在的磁道最近,每次寻道时间最短,但不能保证平均寻道时间最短。可能导致一些请求无限期推延,产生饥饿现象。
3. 电梯调度算法SCAN:不仅考虑当前磁道的距离,优先考虑在磁道前进方向的最短时间,排除磁头在盘面上的往复运动,避免了出现“饥饿”现象。电梯原理。
4. N-SCAN:是SCAN的改良。磁头改变方向时,以到达请求服务的最短时间。对中间请求服务更有利。
5. 循环电梯调度算法C-SCAN:磁头单项移动。消除N-SCAN对两端请求的不公平。