网站大量收购独家精品文档,联系QQ:2885784924

C语言,磁盘调度.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言,磁盘调度

/* 磁盘调度 磁盘的调度策略称为“驱动调度”。磁盘驱动调度由“移臂调度”和“旋转调度”两部分组成。 1。移臂调度:根据访问者指定的柱面位置来决定执行次序的调度,称为“移臂调度”。移臂调度的目的是尽可能的减少操作中的寻找时间。 1》先来先服务调度算法:该算法不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。 2》最短寻找时间优先调度算法:该算法总是从等待访问着中挑选寻找时间最短的那个请求先执行,而不考虑访问者到来的先后次序。 3》电梯调度算法:该算法是从移臂当前位置开始沿着臂移动方向去选择离当前移臂最近的那个访问者,如果沿移臂的移动方向无请求访问时,就改变臂的移动方向再选择。 1)移动臂由里向外移动; 2)移动臂由外向里移动。 4》单向扫描调度算法:该算法的基本思想是,不考虑访问者等待的先后次序,总是从0号柱面开始向里道扫描,按照各自所要访问柱面 位置的次序去选择访问者。在移动臂到达最后一个柱面后,立即快速返回到0号柱面,返回时不为任何访问者等待服务。在返回到0号柱 面后再次进行扫描。注意:移动臂到达最后一个柱面后,返回到0号柱面所经过的磁到数不记在磁到扫描数中!!! 2。旋转调度 磁盘调度算法 要求: 1。实现三种算法: 先来先服务; 最短寻道优先(老师会给当前磁头的位置); 电梯算法 2。磁道服务顺序从指定的文本文件(TXT文件)中取出 3。输入访问磁道流为130 199 32 159 15 148 61 99,磁头位置为:50 输出: 第一行:磁道的服务顺序 ;第二行:显示移动总道数 本程序包括:FIFO,最短寻道优先调度算法,电梯算法 */ #includestdio.h #includestdlib.h #includestring.h #includemath.h # define MAXQUEUE 200 //申明最大磁道号 typedef struct node { //结构体定义 int go; //磁道号(大于0,小于MAXQUEUE) int visited; //磁道访问标志(0——为访问;1——已访问) }qu; qu queue[MAXQUEUE]; //定义磁道数组 int quantity; //磁道记数器 int start; //定义开始时磁头所在位置 void initial() { //初始化函数 int i; for(i = 0; i MAXQUEUE; i++) { queue[i].go = -1; queue[i].visited = 0; } start = 50; //磁头的初始位置 } void reset() { //重置磁道访问标志信息 int i; for(i = 0; i quantity; i++) { queue[i].visited = 0; } } void readData() { //读入磁道号流 FILE *fp; char fname[20]; int temp, i; printf(请输入磁道号流文件名:); strcpy(fname, 7hard.txt); scanf(%s, fname); if((fp = fopen(fname, r)) == NULL) { printf(错误,文件打不开,请检查文件名 ! ! !\n); exit(1); } else { while(!feof(fp)) { //从文件中读入磁道号流 fscanf(fp, %d , temp); if((temp 0) || (temp MAXQUEUE) (temp == -1)) { printf(录入的磁道号有问题,或文件为空,请检查 ! ! !\n); exit(1); } queue[quantity].go = temp; quantity++; } printf(\n==============================================================\n); printf(所读入的磁道号流:\n); for(i = 0; i quantity; i++) { printf(%6d, queue[i].go); }

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档