欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:154945       资源大小:121.06KB        全文页数:27页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、模拟磁盘调度算法操作系统课程设计某某年夜学之阿布丰王创作时间:二O二一年七月二十九日课程设计陈说课程名称: 把持系统设计题目:模拟磁盘调度算法系 别:计算机系 专 业:计算机科学与技术 组 别:学生姓名:学 号:起止日期:指导教师:第一章需求分析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参考文献1附源代码2第一章

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

    3、战略的.经常使用的分配战略有先请求先分配、优先级高者先分配等战略.在多道法式系统中,低效率通常是由于磁盘类旋转设备使用不妥造成的.把持系统中,对磁盘的访问要求来自多方面,经常需要排队.这时,对众多的访问要求按一定的次第响应,会直接影响磁盘的工作效率,进而影响系统的性能.访问磁盘的时间因子由3部份构成,它们是查找(查找磁道)时间、等候(旋转等候扇区)时间和数据传输时间,其中查找时间是决定因素.因此,磁盘调度算法先考虑优化查找战略,需要时再优化旋转等候战略.平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即:L=(M1+M2+Mi+MN)/N.其中Mi为所需访问的磁道号

    4、所需移动的磁道数.启动磁盘执行输入输出把持时,要把移动臂移动到指定的柱面,再等候指定扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送.因此,执行一次输入输出所花的时间有:寻找时间磁头在移动臂带动下移动到指定柱面所花的时间.延迟时间指定扇区旋转到磁头下所需的时间.传送时间由磁头进程读写完成信息传送的时间.其中传送信息所花的时间,是在硬件设计就固定的.而寻找时间和延迟时间是与信息在磁盘上的位置有关.为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序寄存满一个盘面后,再放到下一个盘面上.而是按柱面寄存,同一柱面上的各磁道被放满信息后,再放到下一个柱面上.所以各磁盘的

    5、编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序.1.4课程设计内容系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN).并计算及比力磁头移动总磁道数和平均磁道数.1.4.1、先来先服务算法(FCFS)这是一种比力简单的磁盘调度算法.它根据进程请求访问磁盘的先后次第进行调度.此算法的优点是公平、简单,且每个进程的请求都能依次得处处置,不会呈现某一进程的请求长期得不到满足的情况.此算法由于未对寻道进行优化,在对磁盘的访问请求比力多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较

    6、长,但各进程获得服务的响应时间的变动幅度较小.1.4.2、最短寻道时间优先算法(SSTF)该算法选择这样的进程,其要求访问的磁道与以后磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以获得比力好的吞吐量,但却不能保证平均寻道时间最短.其缺点是对用户的服务请求的响应机会不是均等的,因而招致响应时间的变动幅度很年夜.在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不成预期.1.4.3、扫描算法(SCAN)扫描算法不单考虑到欲访问的磁道与以后磁道的距离,更优先考虑的是磁头的以后移动方向.例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲

    7、访问的磁道既在以后磁道之外,又是距离最近的.这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动.这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在以后磁道之内,从而防止了饥饿现象的呈现.由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法.此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变动比力年夜的缺点,而具有最短寻道时间优先算法的优点即吞吐量较年夜,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道.第二章概要设计2.1设计思想本次课程设计我们是以面向对象的思想为主,利用Visual C为工具实现模

    8、拟磁盘调度.法式主要是利用冒泡排序函数、FCFS函数、SSTF函数、SCAN函数、CSCAN函数实现函数的功能.利用菜单式的选择界面,方便的用户把持.最终对每一种模拟磁盘调度输出磁头平均移动的磁道数以及总磁道数.2.2 数据结构该法式主要是利用7个函数.Panduan()函数:对输入的字符进行判断是否合法,zhuanhua()函数:对输入合法的字符进行转化,bubble()函数:对输入的磁道进行冒泡排序,FCFS()函数,即先来先服务函数,SSTF()函数:最短最短寻道时间函数,SCAN()函数:扫描函数,CSCAN()函数:循环扫描函数.各函数之间有点可以相互调用,共同实现要求.本法式主要用

    9、到的数据结构为数组、字符串,包括对字符串的合法性判断,利用数组算磁头移动的总磁道数,平均移动磁道数.2.3模块调用关系图图2-1 磁盘调度模拟系统2.4子模块法式流程图2.4.1先来先服务算法(FCFS)流程图:2.4.2最短寻道时间优先算法(SSTF)流程图2.4.3扫描算法(SCAN)流程图第三章 详细设计3.1模块划分本系统划分为四个模块:先来先服务算法模块int FCFS(int array,int m)、最短寻道时间优先算法模块int SSTF(int array,int m)、扫描算法模块int SCAN(int array,int m)3.1.1 先来先服务算法模块:int FC

    10、FS(int array,int m)输入磁道号,按先来先服务的战略输出磁盘请求序列,求平均寻道长度,输出移动平均磁道数.主要代码:for(i=0,j=1;jm;i+,j+) sum+=abs(arrayj-arrayi);ave=(float)(sum)/(float)(m);3.1.2 最短寻道时间优先算法模块:int SSTF(int array,int m)将磁道号用冒泡法从小到年夜排序,输出排好序的磁道序列,输入以后磁道号,根据前磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数.主要代码:for(i=0;im;i+) /*使用冒泡法按从小到年夜顺序排列

    11、*/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+) /*磁头移动到最小号,则改变方向向外扫描未扫描的磁道*/ co

    12、utarrayj ; /*输出向外扫描的序列*/sum=now-2*array0+arraym-1; else /*选择移动臂方向向外,则先向外扫描*/ for(j=r;jm;j+)coutarrayj=0;j-) /*磁头移动到最年夜号,则改变方向向内扫描未扫描的磁道*/coutarrayj ;sum=-now-array0+2*arraym-1; ave=(float)(sum)/(float)(m);第四章 测试4.1 先来先服务算法输入磁道序列:65 78 34 23 87 100 18 26以后磁道号:80磁盘扫描序列为:65 78 34 23 87 100 18 26平均寻到长度:

    13、31.25磁头移动总磁道数:2504.2 最短寻道时间优先算法(1)以后磁道号年夜于磁道序列中的最年夜的磁道号时 输入磁道序列:65 78 34 23 87 100 18 26 排序后的磁道序列为:18 23 26 34 65 78 87 100以后磁道号:200磁盘扫描序列为100 87 78 65 34 26 23 18平均寻到长度:22.75磁头移动总磁道数:182(2)以后磁道号小于磁道序列中的最小的磁道号时输入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列为:18 23 26 34 65 78 87 100以后磁道号:10磁盘扫描序列为:18 23 26

    14、34 65 78 87 100平均扫描长度:11.25磁道移动总磁道数:90(3)以后磁道号年夜于磁道序列中的最小的磁道号且小于最年夜磁道号时输入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列为:18 23 26 34 65 78 87 100以后磁道号:80磁盘扫描序列为:78 87 100 65 34 26 23 18平均扫描长度:13.25磁道移动总磁道数:1064.3 扫描算法(1)以后磁道号年夜于磁道序列中的最年夜的磁道号时输入磁道序列:65 78 34 23 87 100 18 26 排序后的磁道序列为:18 23 26 34 65 78 87 100以

    15、后磁道号:200磁盘扫描序列为100 87 78 65 34 26 23 18平均寻到长度:22.75磁头移动总磁道数:182(2)以后磁道号小于磁道序列中的最小的磁道号时输入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列为:18 23 26 34 65 78 87 100以后磁道号:10磁盘扫描序列为:18 23 26 34 65 78 87 100平均扫描长度:11.25磁道移动总磁道数:90(3)以后磁道号年夜于磁道序列中的最小的磁道号且小于最年夜磁道号(磁头向外)时输入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列为:18 23

    16、26 34 65 78 87 100以后磁道号:80请输入以后移动臂的移动的方向(1暗示向外,0暗示向内):1磁盘扫描序列为:87 100 78 65 34 26 23 18平均寻到长度:12.75磁道移动总磁道数:102第五章 心的体会通过这次的课程设计使我认识到要将把持系统这门计算机专业的课学好不单仅是要把书上的基本知识学好而且还要不竭进行实践,将所学的跟实践把持结合起来才华更好地巩固所学,才华提高自己实践能力.通过这次的设计使我认识到只停留在概况理解问题是很难使问题获得很好的解决的,实践能力与理论知识同样重要.可以说此课程设计的理论难度其实不年夜,可是若要深入发掘其中的工具,而且实际去编

    17、程实现,就遇到了相当年夜的难度.因为与之涉及的很多方面并没有学过,需要自己去自学和实践检验.通过本次课程设计,通过模拟磁盘调度及进程排队算法来加深对把持系统中各个磁臂调度算法概念的理解.模拟磁盘调度算法(FCFS,SSTF,SCAN,CSCAN),实现各种分歧调度算法的过程,并计算各算法的平均寻道长度,以便于我们判断各种算法的优劣以及各种算法使用的场所.对VC+6.0的应用也更加驾轻就熟.第六章致谢感谢陕粉丽老师和本组成员在这次系统开发过程中对我的帮手参考文献1 计算机把持系统 高等教育出书社,作者:孙钟秀,费翔林,骆斌等编著2VC+深入详解 电子工业出书社作者:孙鑫,余指导教师评语: 指导教

    18、师签名: 年 月 日成果评定项 目权重成果1、设计过程中出勤、学习态度等方面0.12、设计技术水平0.43、平安水平及可把持水平0.24、设计陈说书写及图纸规范水平0.3总 成 绩教研室审核意见:教研室主任签字: 年 月 日教学院(系)审核意见: 主任签字: 年 月 日附源代码#include#include#include#includeconst int maxsize=1000;int panduan(char str); int zhuanhua(char str,int a); int *bubble(int cidao,int m); int FCFS(int cidao,int

    19、m); void SSTF(int cidao,int m);void SCAN(int cidao,int m); int main() int a; int c; int cidaomaxsize; int i=0,count; char str100; cout请输入磁道序列(0结束):str; a=panduan(str); if(a=0) cout输入数据的类型毛病,请重新输入!str; a=panduan(str); if(a=0) cout输入数据的类型毛病,请重新输入!endl; else cidaoi=zhuanhua(str,a); i+; count=i-1; cout你

    20、输入的磁道序列为:; for(i=0;icount;i+) coutcidaoi ; coutendl; while(1) coutendl; cout|_|endl; cout| (*_*) 系统菜单 (*_*) |endl; cout|_|endl; cout| |endl; cout| 1. 先来先服务 |endl; cout| |endl; cout| 2. 最短寻道时间优先 |endl; cout| |endl; cout| 3. 扫描调度 |endl; cout| |endl; cout| 4. 退出 |endl; cout| |endl; cout|_|endl; cout|_|

    21、endl; bei7:coutstr; a=panduan(str); if(a=0) cout输入数据的类型毛病,请重新输入!5) cout数据输入毛病!请重新输入endl; goto bei7; switch(c) case 1: FCFS(cidao,count); break; case 2: SSTF(cidao,count); break; case 3: SCAN(cidao,count); break; return 0;/*判断输入数据是否有效*/int panduan(char str) int i=0; while(stri!=0) if(stri9) return 0;

    22、 break; i+; return i;/*将字符串转换成数字*/int zhuanhua(char str,int a) int i; int sum=0; for(i=0;ia;i+) sum=sum+(int)(stri-0)*pow(10,a-i-1); return sum;/*冒泡排序算法*/int *bubble(int cidao,int m) int i,j; int temp; for(i=0;im;i+) for(j=i+1;jcidaoj) temp=cidaoi; cidaoi=cidaoj; cidaoj=temp; cout排序后的磁盘序列为:; for( i=

    23、0;im;i+) coutcidaoi ; coutendl; return cidao; /*先来先服务调度算法*/int FCFS(int cidao,int m) int now; int sum=0; int j,i; int a; char str100; float ave; cout磁盘请求序列为:; for( i=0;im;i+) coutcidaoi ; coutendl; coutstr; a=panduan(str); if(a=0) cout输入数据的类型毛病,请重新输入!endl; goto bei2; else now=zhuanhua(str,a); sum+=a

    24、bs(cidao0-now); cout磁盘扫描序列为:; for( i=0;im;i+) coutcidaoi ; for(i=0,j=1;jm;i+,j+) sum+=abs(cidaoj-cidaoi); ave=(float)(sum)/(float)(m); coutendl; cout平均寻道长度:aveendl; cout磁头移动总磁道数:sumendl; return 0;/*最短寻道时间优先调度算法*/void SSTF(int cidao,int m) int k=1; int now,l,r; int i,j,sum=0; int a; char str100; float ave; cidao=bubble(cidao,m); coutstr; a=panduan(str); if(a=0) cout输入数据的类型毛病,请重新输入!endl; goto bei3; else now=zhuanhua(str,a); if(cidaom-1=now) cout=0;i-) coutcidaoi=now) cout磁盘扫描序列为:; for(i=0;im;i+)


    注意事项

    本文(模拟磁盘调度算法操作系统课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开