欢迎来到天天文库
浏览记录
ID:35627204
大小:279.00 KB
页数:11页
时间:2019-04-03
《操作系统课程设计--磁盘调度算法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、磁盘调度1.设计目的加深对操作系统的磁盘调度的进一步理解以及进一步的认识。加强实践能力和动手动脑能力,同时加深对磁盘调度概念的理解,同时也再一次提高了自己编程的能力。2.任务及要求2.1设计任务分析设计模拟磁盘管理系统的方法,加深对磁盘调度算法的了解以及个算法的特点。2.2设计要求分别设计出先来先服务算法,最短寻道时间优先算法,扫描算法。并分别求出它们的平均寻道时间。3.算法及数据结构3.1算法的总体思想(流程)1.先来先服务的算法,即先来的请求先被响应。FCFS算法看起来是比较合理的算法,但是当请求频率过高的时候
2、FCFS算法的响应时间就会大大的延长,这也是最基本的算法,直接实现的是由输入的顺序来顺序的执行。2.最短寻道时间优先算法,要求访问的磁道,与当前磁头所在的磁道的距离最近,从而以使每次的寻道时间最短。3.扫描磁盘调度,该算法不考虑与访问磁道与当前磁道的距离,更优先考虑的磁头当前的移动方向,例如,当磁头正在有向外移动时,SCAN算法所考虑的下一个访问对象,应是其与访问的磁道,即在当前磁道之外,又是最近的。这样磁头逐渐的从外向里移动,直至再无更里面的磁道要访问,从而避免了出饥饿的情况。3.2先来先服务模块3.2.1功能1
3、1实现磁盘调度的先来先服务调度。3.2.2数据结构用链表来存储输入的数据,即各待访问的磁道。然后遍历这个链表,依次对这个链表进行访问,从而实现先来先服务调度。3.2.3算法voidfcfs(Node*head,intc,intf)//先来先服务算法{voidprint(Node*);Node*l;//,*m,*n;floatnum=0;l=head->next;for(inti=0;idata-f);f=l->data;l=l->next;}num=num/c;cout<<"
4、先来先服务的寻道顺序是:"<5、e));l->next=NULL;m=l;q=head;p=head->next;s=head;r=head->next;floatnum=0;for(inti=0;idata);for(intj=0;jnext;q=q->next;if(abs(f-p->data)data);r=p;s=q;11}}num+=abs(f-r->data);f=r->data;s->next=r->next;r-6、>next=NULL;m->next=r;m=r;q=head;p=head->next;s=head;r=head->next;}num=num/c;cout<<"最短寻道时间优先顺序是:"<7、tc,intf)//扫描算法{voidprint(Node*);intmin,max,i=0,j=0;floatnum=0;Node*p,*q,*r,*s,*m,*n,*x,*y;r=(Node*)malloc(sizeof(Node));//存放比开始磁道小的磁道r->next=NULL;s=r;m=(Node*)malloc(sizeof(Node));//存放比开始磁道大的磁道m->next=NULL;n=m;x=(Node*)malloc(sizeof(Node));x->next=NULL;y=x;q=h8、ead;p=head->next;while(p->next!=NULL){if(p->data-f>0){q->next=p->next;p->next=NULL;n->next=p;n=p;p=q->next;i++;}11else{q->next=p->next;p->next=NULL;s->next=p;s=p;p=q->next;j++;}}if
5、e));l->next=NULL;m=l;q=head;p=head->next;s=head;r=head->next;floatnum=0;for(inti=0;idata);for(intj=0;jnext;q=q->next;if(abs(f-p->data)data);r=p;s=q;11}}num+=abs(f-r->data);f=r->data;s->next=r->next;r-
6、>next=NULL;m->next=r;m=r;q=head;p=head->next;s=head;r=head->next;}num=num/c;cout<<"最短寻道时间优先顺序是:"<7、tc,intf)//扫描算法{voidprint(Node*);intmin,max,i=0,j=0;floatnum=0;Node*p,*q,*r,*s,*m,*n,*x,*y;r=(Node*)malloc(sizeof(Node));//存放比开始磁道小的磁道r->next=NULL;s=r;m=(Node*)malloc(sizeof(Node));//存放比开始磁道大的磁道m->next=NULL;n=m;x=(Node*)malloc(sizeof(Node));x->next=NULL;y=x;q=h8、ead;p=head->next;while(p->next!=NULL){if(p->data-f>0){q->next=p->next;p->next=NULL;n->next=p;n=p;p=q->next;i++;}11else{q->next=p->next;p->next=NULL;s->next=p;s=p;p=q->next;j++;}}if
7、tc,intf)//扫描算法{voidprint(Node*);intmin,max,i=0,j=0;floatnum=0;Node*p,*q,*r,*s,*m,*n,*x,*y;r=(Node*)malloc(sizeof(Node));//存放比开始磁道小的磁道r->next=NULL;s=r;m=(Node*)malloc(sizeof(Node));//存放比开始磁道大的磁道m->next=NULL;n=m;x=(Node*)malloc(sizeof(Node));x->next=NULL;y=x;q=h
8、ead;p=head->next;while(p->next!=NULL){if(p->data-f>0){q->next=p->next;p->next=NULL;n->next=p;n=p;p=q->next;i++;}11else{q->next=p->next;p->next=NULL;s->next=p;s=p;p=q->next;j++;}}if
此文档下载收益归作者所有