磁盘调度算法设计报告.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
磁盘调度算法设计报告

操作系统课程设计报告题目: 磁盘调度算法院系:信息学院班级:信管11-2姓名:王裕辰学号:1101051024指导教师: 赵 华 一、概述本次设计的程序主要功能是模拟访问磁盘的过程,实现先来先服务调度算法、最短寻道时间调度算法、扫描算法、循环扫描算法四个磁盘调度算法,并根据输入的数据和所选择的调度算法输出每种调度算法的磁盘访问顺序,计算并输出四个算法的平均寻道长度。本程序主要实现磁盘访问的顺序,输出四种不同的磁盘调度算法的磁盘访问结果,并计算出各自的平均寻道长度。以此来对四种调度算法的性能进行评价。 二、设计的基本概念和原理1、基本概念当前磁道号:磁头当前时刻所在磁盘的磁道编号。被访问的下一个磁道号:需要访问的下一个磁盘的磁道编号。移动距离:磁头从当前磁道移动到被访问的下一个磁道号所需移动的磁道数。2、基本原理先来先服务(FCFS,First Come First Served)按照进程请求访问磁盘的先后次序进行从小到大排序,每次访问最先请求访问的磁道。这样是每个进程的请求都能够依次地得到处理,不会出现某一进程的请求长期得不到满足的情况 最短寻道时间优先 (SSTF, Shortest Seek Time First)要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。磁头每次都移动到距离当前磁道距离最小的磁道上。扫描算法(SCAN)将请求访问的磁道号进行排序(升序或降序),磁头按照磁道号从大到小或从小到达的顺序访问磁盘。循环扫描算法(CSCAN)磁头从当前磁道从里向外(或从外向里)访问磁道,当访问到最外(或最里)的磁道并访问后,磁头立即返回最里的(或最外)的欲访问的磁道,即最小(或最大)的磁道号紧接着最大(或最小)磁道号构成循环,进行循环扫描。三、总体设计本程序才用了结构化程序设计方法,将程序进行模块化处理。首先将进程访问磁盘的请求抽象为一个类,用用户所输入的数据来把每个对象来初始化。然后分块地调用不同的函数实现不同的调度算法。本程序包括以下三个模块:预定义及进程类定义模块定义程序所用到的头文件和常量。定义请求类的类成员,成员函数以及输出请求类的类成员的输出函数主程序模块包括以下五个步骤① 选择进程调度算法② 输入请求③ 调用所选的磁盘调度算法④ 计算每个请求的移动距离⑤ 输出磁盘访问顺序和每个请求的移动距离,计算并输出所选算法的平均寻道长度其它函数模块定义了四种调度算法和程序中调用的其他函数。程序流程图如下图所示四、详细设计每个模块的代码及分析如下:预定义及进程类定义模块#include stdafx.h#include iostream#include cmath#include iomanipusing namespace std;#define Startnumber 100 //开始访问的磁道号#define Max 100 //进程最大值class Request{private:int number,distance,difference;// number-被访问的下一个磁道号 distance-移动距离 difference--被访问的下一个磁道与当前磁道的距离public:int getnumber()//返回被访问的下一个磁道号{return number;}int getdistance()//返回移动距离{return distance;}int getdifference()//返回被访问的下一个磁道与当前磁道的距离{return difference;}void setnumber(int t)//设置被访问的下一个磁道号{number=t;}void setdistance(int t)//设置移动距离{distance=t;}void setdifference(int t)//设置被访问的下一个磁道与当前磁道的距离{difference=t;}void show() const //输出被访问的下个磁道号和移动距离{coutsetw(17)numbersetw(6)distanceendl;}};主程序模块int main(int argc, char* argv[]){int i,c,num,option,choice;double averdis;// 平均寻道长度Request request[Max]; //请求数组存放请求while(1){cout磁盘调度算法 endlendl;cout 1.先来先服务 2.最短寻道时间优先 endl;cout 3.扫描算法 4.循环扫描算法endl;cout 0.退出endl;coutendl;cout请输入你选择的调度算法:;cinchoice; // 输入选择

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档