1、 课 程 设 计 设计题目:模拟实现磁盘的调度 一、一、课题设计目的课题设计目的 a、观察、体会操作系统的磁盘调度方法,并通过一个简单的磁盘调度模拟程序的实现,加 深对磁盘调度的理解。b、提高实际动手编程能力,为日后从事软件开发工作打下坚实基础。 c、通过对磁盘调度算法的设计,深入理解提高磁盘访问速度的原理。 二、课题实现环境二、课题实现环境 VC+6.0 MFC 三、课题设计思路三、课题设计思路 算法描述算法描述: 1.1.服务算法(服务算法(FCFSFCFS) 先来先服务(FCFS)调度:按先来后到次序服务,未作优化。 最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问
2、者要求访问 的物理位置,而只是考虑访问者提出访问请求的先后次序。例如,如果现在读写磁头正在 50 号柱面上执行输出操作, 而等待访问者依次要访问的柱面为 130、 199、 32、 159、 15、 148、 61、99,那么,当 50 号柱面上的操作结束后,移动臂将按请求的先后次序先移到 130 号柱 面,最后到达 99 号柱面。 采用先来先服务算法决定等待访问者执行输入输出操作的次序时, 移动臂来回地移动。 先来 先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。 2.2.算法(算法(SCANSCAN) SCAN 算法又称电梯调度算法。SCAN 算法是磁头前进方向上的最短查
3、找时间优先算法,它排 除了磁头在盘面局部位置上的往复移动, SCAN 算法在很大程度上消除了 SSTF 算法的不公平 性,但仍有利于对中间磁道的请求。 “电梯调度” 算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那 个柱访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。这好比乘电 梯,如果电梯已向上运动到 4 层时,依次有 3 位乘客陈生、伍生、张生在等候乘电梯。他们 的要求是:陈生在 2 层等待去 10 层;伍生在 5 层等待去底层;张生在 8 层等待 15 层。由于 电梯目前运动方向是向上,所以电梯的形成是先把乘客张生从 8 层带到 15 层,然后电梯换
4、 成下行方向,把乘客伍生从 5 层带到底层,电梯最后再调换方向,把乘客陈生从 2 层送到 10 层。 我们仍用前述的同一例子来讨论采用“电梯调度”算法的情况。由于磁盘移动臂的初始方向 有两个,而该算法是与移动臂方向有关,所以分成两种情况来讨论。 1 1.移动臂由里向外移动 开始时, ,在 50 号柱面执行操作的读写磁头的移动臂方向是由里向外,趋向 32 号柱面的位 置,因此,当访问 50 号柱面的操作结束后,沿臂移动方向最近的柱面是 32 号柱面。所以应 先为 32 号柱面的访问者服务,然后是为 15 号柱面的访问者服务。之后,由于在向外移方向 已无访问等待者,故改变移动臂的方向,由外向里依次
5、为各访问者服务。在这种情况下为等 待访问者服务的次序是 61、99、130、148、159、199。 2 2. .移动臂由外向里移动 开始时,正在 50 号柱面执行操作的读写磁头的移动臂是由外向里(即向柱面号增大的内圈 方向)趋向 61 号柱面的位置,因此,当访问 50 号柱面的操作结束后,沿臂移动方向最近的 柱面是 61 号柱面。所以,应先为 61 号柱面服务,然后按移动臂由外向里移动的方向,依次 为 99、130、148、159、199 柱面的访问者服务。当 201 号柱面的操作结束后,向里移动的 方向已经无访问等待者,所以改变移动臂的前进方向,由里向外依次为 32、15 柱面的访问 者服
6、务。 “电梯调度”与“最短寻找时间优先”都是要尽量减少移动臂时所花的时间。所不同的是: “最短寻找时间优先”不考虑臂的移动方向,总是选择离当前读写磁头最近的那个柱面,这 种选择可能导致移动臂来回改变移动方向; “电梯调度”是沿着臂的移动方向去选择离当前 读写词头最近的哪个柱面的访问者, 仅当沿移动臂的前进移动方向无访问等待者时, 才改变 移动臂的前进方向。由于移动臂改变方向是机械动作,速度相对较慢,所以,电梯调度算法 是一种简单、使用且高效的调度算法。 但是, “电梯调度”算法在实现时,不仅要记住读写磁头的当前位置,还必须记住移动臂的 当前前进方向。 设计流程图设计流程图: FCFSFCFS 流程图:流程图: J=0;sum=0; 磁头移动距离 Ej=abs(ii-pj) 磁头移动总距离 Sum+=Ej; 目的位置变为当前 位置 ii=pj+; j=0? Y N a=0; N ii=a; sa=pii; sum+=d-pii; ea+=d-pii; d=pii; +iisFileName;