模拟磁盘调度算法操作系统课程设计

上传人:博****1 文档编号:470964902 上传时间:2023-12-31 格式:DOCX 页数:24 大小:141.12KB
返回 下载 相关 举报
模拟磁盘调度算法操作系统课程设计_第1页
第1页 / 共24页
模拟磁盘调度算法操作系统课程设计_第2页
第2页 / 共24页
模拟磁盘调度算法操作系统课程设计_第3页
第3页 / 共24页
模拟磁盘调度算法操作系统课程设计_第4页
第4页 / 共24页
模拟磁盘调度算法操作系统课程设计_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《模拟磁盘调度算法操作系统课程设计》由会员分享,可在线阅读,更多相关《模拟磁盘调度算法操作系统课程设计(24页珍藏版)》请在金锄头文库上搜索。

1、模拟磁盘调度算法,操作系统课程设计某某大学课程设计报告操作系统课程名称:设计题目:模拟磁盘调度算法系 别:计算机系专 业:计算机科学与技术组 别:学生姓名:学 号:起止日期:指导教师:目录第一章 需求分析 11.1 课程设计的简介 11.2 课程设计的目的 11.3 磁盘调度主要思想 11.4 课程设计内容 2第二章 概要设计 32.1 设计思想 32.2 数据结构 32.3 模块调用关系图 32.4 子模块程序流程图 5第三章 详细设计 63.1 模块划分 6第四章 代码测试 94.1 先来先服务 94.1 最短寻道时间优先 114.1 扫描算法 12第五章 心得体会 13第六章 致谢 13

2、参考文献 13附源代码 1第一章 需求分析1.1 课程设计的简介这是一个用VC+6.0为工具、C+为编程语言而实现模拟先来先服务算法(FCFS、最短寻道时间优先算法(SSTF、扫描算法(SCAN的一个磁盘调度程 序。该程序设计系统主界面可以灵活选择某种算法并算出磁头移动的总磁道数以 及平均磁道数。1.2 课程设计的目的本课程设计的目的是通过设计一个磁盘调度模拟系统, 从而使磁盘调度算法 更加形象化,容易使人理解, 使磁盘调度的特点更简单明了, 能使使用者加深对 先来先服务算法(FCFS、最短寻道时间优先算法(SSTF、扫描算法(SCAN等 磁盘调度算法的理解。1.3 磁盘调度主要思想 设备的动

3、态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、 优先级高者先分配等策略。 在多道程序系统中, 低效 率通常是由于磁盘类旋转设备使用不当造成的。 操作系统中,对磁盘的访问要求 来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直 接影响磁盘的工作效率, 进而影响系统的性能。 访问磁盘的时间因子由 3 部分构 成,它们是查找(查找磁道) 时间、等待(旋转等待扇区) 时间和数据传输时间, 其中查找时间是决定因素。 因此,磁盘调度算法先考虑优化查找策略, 需要时再 优化旋转等待策略。平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道

4、 数(N),即: L=(M1+M2十+Mi+MN /N。其中Mi为所需访问的磁道号所需移动的磁道数。启动磁盘执行输入输出操作时, 要把移动臂移动到指定的柱面, 再等待指定 扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。因此, 执行一次输入输出所花的时间有:寻找时间磁头在移动臂带动下移动到指定柱面所花的时间。 延迟时间指定扇区旋转到磁头下所需的时间。传送时间由磁头进程读写完成信息传送的时间。 其中传送信息所花的时间, 是在硬件设计就固定的。 而寻找时间和延迟时间 是与信息在磁盘上的位置有关。为了减少移动臂进行移动花费的时间, 每个文件的信息不是按盘面上的磁道 顺序存放满一个盘面

5、后, 再放到下一个盘面上。 而是按柱面存放, 同一柱面上的 各磁道被放满信息后, 再放到下一个柱面上。 所以各磁盘的编号按柱面顺序 (从 0 号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。1.4 课程设计内容 系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF、扫描算法(SCA)并计算及比较磁头移动总磁 道数和平均磁道数。1.4.1 、先来先服务算法( FCFS、这是一种比较简单的磁盘调度算法。 它根据进程请求访问磁盘的先后次序进 行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不 会出现某一进程的请求长期

6、得不到满足的情况。此算法由于未对寻道进行优化, 在对磁盘的访问请求比较多的情况下, 此算法将降低设备服务的吞吐量, 致使平 均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。1.4.2 、最短寻道时间优先算法( SSTF、 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短, 该算法可以得到比较好的吞吐量, 但却不能保证 平均寻道时间最短。 其缺点是对用户的服务请求的响应机会不是均等的, 因而导 致响应时间的变化幅度很大。 在服务请求很多的情况下, 对内外边缘磁道的请求 将会无限期的被延迟,有些请求的响应时间将不可预期。1.4.3 、扫描算法

7、( SCAN、 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离, 更优先考虑的是磁头的当前移动方向。 例如,当磁头正在自里向外移动时, 扫描算法所选择的下一个 访问对象应是其欲访问的磁道既在当前磁道之外, 又是距离最近的。 这样自里向 外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时, 同样也是每次选择这样的进程来调度, 即其要访问的磁道, 在当前磁道之内, 从 而避免了饥饿现象的出现。 由于这种算法中磁头移动的规律颇似电梯的运行, 故 又称为电梯调度算法。 此算法基本上克服了最短寻道时间优先算法的服务集中于 中间磁道和响应时间变化比较大的缺点, 而具有最短寻道时间优先算法

8、的优点即 吞吐量较大, 平均响应时间较小, 但由于是摆动式的扫描方法, 两侧磁道被访问 的频率仍低于中间磁道。第二章 概要设计2.1 设计思想本次课程设计我们是以面向对象的思想为主,利用 Visual C 为工具实 现模拟磁盘调度。程序主要是利用冒泡排序函数、FCFS函数、SSTF函数、SCAN函数、CSCA函数实现函数的功能。禾U用菜单式的选择界面,方便的用户操作。 最终对每一种模拟磁盘调度输出磁头平均移动的磁道数以及总磁道数。2.2 数据结构该程序主要是利用7个函数。Panduan ()函数:对输入的字符进行判断是否合法,zhuanhua ()函数:对输入合法的字符进行转化,bubble

9、()函数:对 输入的磁道进行冒泡排序,FCFS()函数,即先来先服务函数,SSTF()函数: 最短最短寻道时间函数,SCAN()函数:扫描函数,CSCAN )函数:循环扫描 函数。各函数之间有点可以相互调用,共同实现要求。本程序主要用到的数据结构为数组、字符串,包括对字符串的合法性判断, 利用数组算磁头移动的总磁道数,平均移动磁道数。2.3 模块调用关系图模拟磁盘调度算法,操作系统课程设计图2-1磁盘调度模拟系统模拟磁盘调度算法,操作系统课程设计2.4子模块程序流程图2.4.1先来先服务算法FCFS流程图:FCFS算法流程图开始输入磁道号按输入顺序将序列输岀号磁道L求平均寻道长度输出移动的平

10、道数片均磁J结束2.4.2最短寻道时间优先算法(SSTF)流程图SSTF算法流程图开始匚输入磁道号调用冒泡排序函数输出排好序的磁道 序列输入当前磁道号判断当前磁头在序 列中的位置选择与当前磁道距离最近 的磁道进行扫描移动到最小(大丿号,改I向外(内)移动扫描未扫描的磁道求平均寻道长度求总寻道长度结束模拟磁盘调度算法,操作系统课程设计243扫描算法(SCAN流程图第三章详细设计3.1模块划分本系统划分为四个模块:先来先服务算法模块int FCFS(i nt array,i ntm)、最短寻道时间优先算法模块int SSTF(int array,int m)、扫描算法模块int SCAN(int

11、array,int m)3.1.1 先来先服务算法模块:int FCFS(i nt array,i nt m)输入磁道号,按先来先服务的策略输出磁盘请求序列,求平均寻道长度,输出移动平均磁道数。主要代码:for(i=0,j=1;jm;i+,j+)sum+=abs(arrayj-arrayi);ave=(float)(sum)/(float)(m);3.1.2 最短寻道时间优先算法模块:int SSTF(i nt array,i nt m)模拟磁盘调度算法 ,操作系统课程设计将磁道号用冒泡法从小到大排序, 输出排好序的磁道序列, 输入当前磁道号,根据前磁道在已排的序列中的位置, 动的平均磁道数。

12、主要代码: for(i=0;im;i+) /*for(j=i+1;jarrayj)temp=arrayi;arrayi=arrayj;arrayj=temp;if(arraym-1=0;i-)coutarrayi=now) /*小者,则直接由内向外依次给予各请求服务while(l=0)&(rm) /*选择扫描的顺序, 求出平均寻道长度, 输出移使用冒泡法按从小到大顺序排列 */若当前磁道号大于请求序列中最*/if(now-arrayl)=(arrayr-now) /*若当前磁道号小于请求序列中最*/当前磁道在请求序列范围内 */选择与当前磁道最近的请求给予服务 */模拟磁盘调度算法 ,操作系统课程设计coutarrayl=0;j-) coutarrayj ; /* 输出向内扫描的序列 */ for(j=r;jm;j+) /*磁头移动到最小号, 则改变方向向外扫描未扫描的磁道*/coutarrayj ; /* 输出向外扫描的序列 */ sum=now-2*array0+arraym-1;else /* 选择移动臂方向向外,则先向外扫描 */for(j=r;jm;j+)coutarrayj=0;j-)/* 磁头移动到最大号, 则改变方向向内扫描未扫描的磁道*/coutvvarrayjvv;sum=-no w-array0+2*arraym-1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号