操作系统实验报告—磁盘调度算法.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文档。上传文档
查看更多
操作系统实验报告—磁盘调度算法

操作系统实验报告 实验3 磁盘调度算法 报告日期:2016-6-17 姓 名: 学 号: 班 级: 任课教师: 实验3 磁盘调度算法 一、实验内容 ? 模拟电梯调度算法,实现对磁盘的驱动调度。? 二、实验目的 磁盘是一种高速、大量旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,负担着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请示等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动调度能降低为若干个输入输出请求服务所须的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。 三、实验原理 模拟电梯调度算法,对磁盘调度。 磁盘是要供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求处于等待状态,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。当存取臂仅需移到一个方向最远的所请求的柱面后,如果没有访问请求了,存取臂就改变方向。 假设磁盘有200个磁道,用C语言随机函数随机生成一个磁道请求序列(不少于15个)放入模拟的磁盘请求队列中,假定当前磁头在100号磁道上,并向磁道号增加的方向上移动。请给出按电梯调度算法进行磁盘调度时满足请求的次序,并计算出它们的平均寻道长度。 四、实验过程 1.画出算法流程图。 2.源代码 #includestdio.h #includestdlib.h #includetime.h int *Init(int arr[]) { int i = 0; srand((unsigned int)time(0)); for (i = 0; i 15; i++) { arr[i] = rand() % 200 + 1; printf(%d , arr[i]); } printf(\n); return arr; } void two_part(int arr[]) { int i = 0; int j = 0; int k = 0; int sum = 0; int a[15]; int b[15]; int num = 100; //当前磁头在100号磁道上 a[0] = 100; b[0] = 100; for (i = 0; i 15; i++) { for (j = 1; j 15 - i; j++) { if (arr[j] arr[j - 1]) { int tmp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = tmp; } } } i = 0; j = 0; for (i = 0; i 15; i++) { if (arr[i] = num) { a[j+1] = arr[i]; j++; } else { b[k+1] = arr[i]; k++; } } printf(访问序列:\n); for (i = 1; i = j; i++) { printf(%d , a[i]); } for (i = k; i 0; i--) { printf(%d , b[i]); } sum = ((a[j]-100)*2+(100- b[1]))/15; printf(平均寻道长度:%d, sum); } int main() { int arr[15] = { 0 }; int *ret=Init(arr); two_part(ret); getchar(); return 0; } 4运行结果: 五、实验小结 通过本次实验,我对scan算法更加深入理解,用C语言模拟电梯调度算法,实现对磁盘的驱动调度,这个相比前两个实验实现起来相对简单,理解了算法实现起来尤为简单,程序敲出来之后没有错误,可直接运行,结果验证也无误。实验总能让我对理论知识理解的更加透彻。

文档评论(0)

159****0071 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档