磁盘调度实验报告.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文档。上传文档
查看更多
实验五磁盘调度 实验学时: 2学时 实验类型: 设计 实验要求: 必修 一、 实验目的: 磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担 负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。 系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求。由于磁盘访问时间主要受寻道时间 T的影响,为此需要采用合适的寻道算法,以降低寻道时间。本实验要求学生模拟设计一个磁盘调 度程序,观察调度程序的动态运行过程。通过实验让学生理解和掌握磁盘调度的职能。 实验内容: 实验内容: 模拟电梯调度算法,对磁盘进行移臂操作 提示及要求: 1、 假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。 2、 磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进 程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有 多个进程提出输入输出请求而处于等待状态时,可用电梯调度算法从若干个等待访问者中 选择一个进程,让它访问磁盘。为此设置“驱动调度”进程。 3、 由于磁盘与处理器是并行工作的,所以当磁盘在为一个进程服务时,占有处理器的其它进 程可以提出使用磁盘(这里我们只要求访问磁道) ,即动态申请访问磁道,为此设置“接受 请求”进程。 4、 为了模拟以上两个进程的执行,可以考虑使用随机数来确定二者的允许顺序,程序结构图 参考附图: 5、 “接受请求”进程建立一张“进程请求I/O ”表,指出等待访问磁盘的进程要求访问的磁道, 表的格式如下: 进程名 要求访问的磁道号 6、 “磁盘调度”的功能是查“请求I/O”表,当有等待访问的进程时, 按电梯调度算法(SCAN 算法) 从中选择一个等待访问的进程, 按其指定的要求访问磁道。 SCAN 算法参考课本第九 章。算法模拟框图略。 7、 附图中的“初始化”工作包括:初始化“请求 I/O ”表,设置置 当前移臂方向 ;当前磁道号 。 并且假设程序运行前请求 I/O ”表中已有若干进程(4?8个)申请访问相应磁道。 四、 实验报告: 1 、 实验题目。 2、 程序中用到的数据结构及其说明。 3、 打印源程序并附注释。 4、 实验结果内容如下:打印“请求 I/O ”表,当前磁道号,移臂方向,被选中的进程名和其要 求访问的磁道,看是否体现了电梯调度( SCAN )算法。 5、 体会与问题。 五、 附图: 六 实验源程序 主函数控制台 mai n.cpp #in cludeiostream.h #in elude no de.h #i ncludefcfs.h #i nclude sstf.h #in clude sca n.h void mai n() { struct node *first=creatlist(); int n=0; while (n !=4) cout请输入你的选择:\n1:先来先服务(FCFS) \n; cout2 :最短寻道时间优先(SSTF) \n3 :扫描(SCAN ) \n4 :退出\n; cinn; switch (n) { case 1:fcfs(first);break; case 2:sstf(first);break; case 3:scan(first);break; case 4:break; default:break; } } } 先来先服务 FCFS.h #ifndef FCFS_H #define FCFS_H #include math.h void fcfs(struct node *first) { int total=0; struct node*p=first-next; int start=p-track; int last=p-track; cout 该算法扫描磁道的顺序为 \n; while (p) { total +=abs(start-last); //coutabs(start-last)endl; coutp-track-; p=p-next; if (p) { last=start; start=p-track; } } cout\n 先来先服务总共寻道长度 :totalendl; cout 先来先服务平均寻道长度 :float(total)/9endl; } #endif 电梯调度算法 scan.h #ifndef SCAN_H #define SCAN_H struct node*search1(struct node*,struct node*,int); void del1(struct node*,struct node*); void scan(struct node*first) { struct node*p=first

文档评论(0)

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

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

1亿VIP精品文档

相关文档