磁盘性能
首先与格式有关
盘片、面、磁道、扇区
为方便处理,每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘块。
磁盘”格式化”的过程就是按规定的格式规划盘块。
与速度有关
磁盘访问时间主要包括:寻道时间(到磁道)、旋转延迟(到扇区)、传输时间。
磁盘调度的目标:对所有请求访问磁盘的进程进行合理调度,使平均寻道时间最少,使对磁盘的平均访问时间最小。
调度算法
1、FCFS 先来先服务
多个进程的磁盘I/O请求构成一个随机分布的请求队列,磁盘I/O执行顺序按磁盘请求的先后顺序。
2、SSTF(ShortestSeekTimeFirst )最短寻道时间优先
选择从当前位置出发移动最少的磁盘I/O请求,使每次磁头移动时间最少。不一定是最短平均柱面定位时间
可能会有进程处于饥饿状态。 改进→考虑距离的同时,更优先考虑方向。引进SCAN算法。
3、SCAN 磁盘电梯调度算法
规定磁头移动方向:自里向外,再自外向里移动。后续请求,哪个在规定方向上距离最近,就先执行哪个。
如当前为100,后续要求55,86,95,180,165,105。
调度过程 先由内向外:选最近的105执行,再判断剩余的,选165,180。再由外向内:95,86,55
存在“错过”问题:反方向较近的55号磁道请求的进程相对“饥饿”很久。改进→将SCAN规定的移动方向改为“单向移动”。引进CSCAN算法。
4、CSCAN
由里向外后,再由里向外。
前述算法存在“磁臂粘着”——磁头静止在一个磁道上,导致其它进程无法及时进行磁盘I/O。(因:高密度盘,进程的读写可能集中在某一磁道)。改进→N-Step-SCAN算法。
5、N-Step-SCAN
将磁盘请求队列分成长为N 的子队列 ,按FCFS选择子队列,队列内又按SCAN算法。
N=1时,就是FCFS,N很大时就是SCAN。
6、F-SCAN
N-Step-SCAN的简化。
请求队列只分为两个子队列,当前一个队列,按SCAN算法执行,扫描期间新生成的组成一个队列,等待被扫描。