好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

磁盘调度算法程序课程设计报告.doc

15页
  • 卖家[上传人]:博****1
  • 文档编号:456620864
  • 上传时间:2023-06-27
  • 文档格式:DOC
  • 文档大小:73.50KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 成绩课程设计报告题 目 磁盘调度算法程序设计 课 程 名 称 操作系统课程设计院 部 名 称 信息技术学院专 业计算机科学与技术班 级 M11计算机科学与技术Ⅱ学 生 姓 名 学 号 课程设计地点 A205课程设计学时20指 导 教 师 莉金陵科技学院教务处制目录一、课程设计的目的和要求21、目的22、要求2二、设计任务介绍及系统需求分析2.1 任务介绍22.2根本需求设计2三、概要设计33.1程序主要流程33.2 程序的函数调用关系5四、详细设计54.1数据构造描述54.2各功能模块〔或主要过程〕分析54.3各子程序流程分析74.3.1 FCFS() 74.3.2 SSTF()84.3.3 SCAN( ) 9五、调试与测试105.1 程序运行初始界面105.2 键盘输入磁道105.3随机产生磁道105.4 先来先效劳算法105.5最短寻道时间优先算法………………………………………………………………105.6 扫描算法………………………………………………………………………………125.6.1先向外扫描115.6.2先向里扫描115.7退出程序11六、结论与体会12参考文献12:源程序清单13一、课程设计的目的和要求1.1目的磁盘是经常使用的一种重要的外设,对磁盘数据的寻道时间的长短直接影响机器的整体运行速度,本设计要求用C语言〔或高级语言〕编写程序模拟实现磁盘调度的常用算法。

      以加深对磁盘调度常用算法的理解和实现技巧1.2 要求1〕、设计一个函数完成先来先效劳的磁盘调度功能2〕、设计一个函数完成最短寻道时间优先的磁盘调度功能3〕、设计一个函数完成电梯算法的磁盘调度功能二、系统需求分析2.1任务介绍1、可利用先来先效劳算法〔FCFS即first e first served〕、最短寻道时间优先算法〔SSTF即shortest seek time first〕、扫描算法〔SCAN〕,来实现磁盘的访问顺序2、根据磁盘调度算法的不同的特性做好软件实现的需求分析3、可根据问题的实际需要,可模拟数据在磁道的存放位置4、当系统运行时,能直观地、动态地反映当前磁盘状态及不同算法的平均寻道时间5、要求在系统平安状态的前提下,用户指定需要访问的磁道,软件自动模拟在不同算法情况下,磁盘寻道顺序和平均寻道时间2.2根本需求设计系统主界面可以灵活选择*种算法,算法包括:先来先效劳算法〔FCFS〕、最短寻道时间优先算法〔SSTF〕、扫描算法〔SCAN〕1、先来先效劳算法〔FCFS〕这是一种比拟简单的磁盘调度算法它根据进程请求访问磁盘的先后次序进展调度此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现*一进程的请求长期得不到满足的情况。

      此算法由于未对寻道进展优化,在对磁盘的访问请求比拟多的情况下,此算法将降低设备效劳的吞吐量,致使平均寻道时间可能较长,但各进程得到效劳的响应时间的变化幅度较小2、最短寻道时间优先算法〔SSTF〕该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比拟好的吞吐量,但却不能保证平均寻道时间最短其缺点是对用户的效劳请求的响应时机不是均等的,因而导致响应时间的变化幅度很大在效劳请求很多的情况下,对外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期3、扫描算法〔SCAN〕扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之,从而防止了饥饿现象的出现由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法此算法根本上抑制了最短寻道时间优先算法的效劳集中于中间磁道和响应时间变化比拟大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

      三、概要设计3.1程序主要流程以下列图3-1为磁盘调度算法总流程图,程序运行开场,进入选择界面,输入磁道数,然后依次调用decide()函数和trans()函数,再进入主循环界面,选择调度算法,直到选择4,程序执行完毕退出开场进入选择界面,手动输入还是系统自动生成磁道序列调用decide〔〕函数调用trans〔〕函数进入while(1)主循环输入1~4中的一数值,选择相应操作是输入是否为4.否判断键值,选择相应的调度算法,完成相应的功能完毕图3-13.2程序函数调用关系以下列图为磁盘调度算法的函数之间的调用关系,主函数调用子函数,子函数也可以调用子函数,进展进程的初始化,排序等等函数调用关系图,如图3-2:main()decide()SCAN()trans()SSTF()FCFS()Sort()图3-2四、详细设计4.1数据构造描述本系统划分为三个模块:先来先效劳算法模块void FCFS(int cidao[],int m)、最短寻道时间优先算法模块void SSTF(int cidao[],int m)、扫描算法模块void SCAN(int cidao[],int m) 1. 先来先效劳算法模块:void FCFS(int cidao[],int m)输入磁道号,按先来先效劳的策略输出磁盘请求序列,求平均寻道长度,输出移动平均磁道数。

      这是一种简单的磁盘调度算法它根据进程请求访问磁盘的先后次序进展调度此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现*一进程的请求长期得不到满足的情况但此算法由于未对寻道进展优化,致使平均寻道时间可能较长2 .最短寻道时间优先算法模块:void SSTF(int cidao[],int m)将磁道号用冒泡法从小到大排序,输出排好序的磁道序列,输入当前磁道号,根据前磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短3 .扫描算法模块:void SCAN(int cidao[],int m)将磁道号用冒泡法从小到大排序,输出排好序的序列,输入当前磁道号,选择移动臂的移动方向,根据当前磁道在已排的序列中的位置,选择扫描的顺序,求出平均寻道长度,输出移动的平均磁道数SCAN算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向例如,当磁头正在自里向外移动时,SCAN算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。

      这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之,从而防止了饥饿现象的出现由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法4.2各模块函数功能分析由于一开场我们要对键盘输入的磁道数和要使用的算法进展一次有效性的判断,我使用了int decide(char str[]),如果输入的信息不是0~9之间的数都将被判定为不合法,合法后才能进展下一步判断完合法性后,要将我们输入的字符转化为数字,这里我用了int trans(char str[],int a)当然系统自动生成的就不要使用以上两个函数了一切都准备好后,开场选择要调用哪个算法了,先来先效劳调度算法我使用了void FCFS(int cidao[],int m),这个算法主要完成按原来键盘输入的次序或系统自动生成的次序来寻到,然后输出总的寻道长度和平均寻道长度以下两个算法都要用到排序算法,这里我使用了冒泡排序法int *sort(int cidao[],int m),将磁道数按从小到大的序列排好最短寻道时间优先调度算法我使用了void SSTF(int cidao[],int m),在排好序列磁道中选择离当前磁道最近的磁道开场寻道,然和再和相邻的两个磁道进展比拟,看离哪个更近;如果当前磁道是最大值或是最小值,直接按倒叙或是正序寻道,最后输出总的寻道长度和平均寻道长度。

      扫描调度算法我使用了void SCAN(int cidao[],int m),在排好序的磁道序列中根据当前磁道数,选择是向外寻道还是向寻道,如果当前磁道数是最大值或是最小值,直接向或向外寻道,最后也要输出总的寻道长度和平均寻道长度4.3各子函数流程分析4.3.1 FCFS()以下列图4-1为FCFS函数的流程图:开场输入磁道号或系统随机生成按原顺序将磁道序列输出求总的寻道长度sum+=abs(cidao[0]-now)求平均寻道长度ave=sum/m完毕图4-14.3.2 SSTF()以下列图4-1为FCFS函数的流程图:开场输入磁道号或系统随机生成调用sort〔〕否min=now是是按排好的顺序直接输出磁道序列按排好的顺序倒序输出磁道序列按离当前磁道now最短的顺序输出磁道序列求总的寻道长度和平均寻道长度完毕图4-24.3.3 SCAN()以下列图4-1为FCFS函数的流程图:开场输入磁道号或系统随机生成调用sort〔〕否min

      图5-15.2随机产生磁道输入1可随机产生磁道数,如图5-2所示图5-25.3键盘输入磁道输入2进展键盘输入,并附带错误提醒功能,如图5-3所示图5-35.4先来先效劳算法输入1,选择先来先效劳算法,如图5-4所示图5-45.5最短寻道时间优先算法输入2,选择最短寻道时间优先算法,如图5-5所示图5-55.6扫描算法5.6.1先向外扫描:输入3后,选择扫描算法,再输入1选择先向外扫描,如图5-6所示图5-65.6.2先向里扫描:输入3后,选择扫描算法,再输入0选择先向里扫描,如图5-7所示图5-75.7退出程序输入4退出,如图5-8所示图5-8六、结论与体会这次操作系统的课程设计,从理论到实践,我学到很多很多的的东西,不仅可以稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.