这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。
5
f4循环扫描(CSACN)循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。
6
f二、系统结构的说明
该系统共分为12个模块:1初始化模块:i
itial2窗口函数模块:frame3先来先服务算法模块:FCFS4最短寻道优先算法模块:SSTF5扫描算法模块:SCAN6循环扫描模块:CSAN7排序函数模块:sort8结果函数模块:result9磁道输入模块:getI
putData10开始磁道模块:getStartData11按钮监听器模块:classButto
Liste
er12画布模块:classCa
vas
系统结构图:
磁盘调度算法选择界面
设
设
置
F
置
开
C
磁
始
F
道
磁
S
道
SSTF
SCAN
C
动
SCA
画演
N
示
7
f三、数据结构的说明
数组a用于存放原始输入磁道数组b用于存放调度顺序磁道数组c用于存放播放动画时的中间数组i
t变量start:用于存放开始磁道float变量Avg:用于存放平均寻道长度float变量Sum:用于存放总寻道长度字符串数组s:用于存放按钮名称Stri
g变量ss:存放输入的磁道的字符串Stri
g变量sss:存放输入的开始磁道的字符串I
t变量Style选择具体的算法Boole
a变量A
imatio
是否播放动画的标志位Boolea
变量isOK用于防止未选算法就播放动画而出现无法关闭程序的bugTimer变量timer:用于设定一定时间执行某个消息I
t变量poi
t用于动画演示指向要画数字的下面cou
tTime用于记录动画播放的次数
8
f四、算法流程图
1先来先服务算法(FCFS)
先来先服务算法(FCFS)流程图
9
f2最短寻道时间优先算法(SSTF)
开始
读入磁道号使r