实验五磁盘调度管理实验.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文档。上传文档
查看更多
实验五磁盘调度管理实验 一、 实验目的 用不同算法实现对磁盘调度的模拟实现,并比较各算法性能。 二、 设备与环境 1 ?硬件设备:PC机一台 2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相 关的程序开发环境,如C\C++\Java等编程语言环境。 三、 实验要求 设计并实现一个分别利用下列磁盘调度算法进行磁盘调度的模拟程 序。 ? (1)扫描算法 ? (2)循环扫描算法 设计要求: ?1 ?磁头初始磁道号,磁头初始运动方向,序列长度,磁道号序列等 数据可键盘输入。 ?2.最好能实现磁道号序列中磁道号的动态增加。 ?3.磁道访问序列以链表的形式存储。 ? 4.给出各磁盘调度算法的调度顺序和平均寻道长度。 四、 实验设计参考 算法说明 (1)扫描算法(SCAN) 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的 是磁头的当前移动方向。例如,当磁头正在口里向外移动时,扫描算法所 选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离 最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换 向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其耍 访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算 法中磁头移动的规律颇似电梯的运行,故乂称为电梯调度算法。此算法基 本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变 化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平 均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍 低于中间磁道。 2、循环扫描算法(CSCAN) 循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分 布的,当磁头到达磁盘的一端,并反向运动吋落在磁头之后的访问请求相 对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高, 且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定 磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时, 磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成 循环,进行扫描。 2.主耍功能模块流程图 程序参考代码如下:^include lt;iostreamgt; #include lt;stringgt; }; int no; LinNode *next; class LinList { private : LinNode *lndex(int i)〃定位函数{ if(ilt;-l| | igt;size-l) { } if(i==-l)return head; if(i==0)return head-gt;next; LinNode *p=head-gt;next; int k=0; while(p!=NULLamp;amp;klt;i) { p=p-gt;next; k++; coutlt;lt;”exit(O); void lnsert(int no)//插入函数 { } LinNode *newnode=new LinNode; newnode-gt;no二no; newnode?gt;next=NULL; Index(size-l)-gt;next二newnode; size++; LinNode *head; int size; LinList() 〃构造函数,用于构造头结点和声明长度{ } head二new LinNode; head-gt;next=NULL; size=0; public : } } return p; void SCANl(int start_place)//电梯调度算法(向外寻道) { coutlt;lt; -gt;SCAN 调度算法(向 外寻道)女口下:float sum=0; float ave; int *a=sort(); for(int i=O;ilt;size;i++) { if(start_placelt;二a[i]) {for(int m=i;mlt;size;m++) } { } for(int n=i-l;ngt;=O;n-) { } ave=sum/size; coutlt;lt; ?gt;平均寻道长度 为:lt;lt;avelt;lt;endl; break; if(n==i-l){sum+=abs(a[n]-a[size-l]);} if(n!=i-l){sum+=abs(a[n]-a[n+l]);} {coutlt;lt;a[n]lt;lt;-gt;;} if(i==0amp;amp;m==size-l) { coutlt;lt;a[m]lt;lt;n-gt;; if(m==i){sum+=abs(start_place-a[i]);} else {sum+

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档