登录 注册
当前位置:主页 > 资源下载 > 9 > 磁盘调度在操作系统课程设计中的应用

磁盘调度在操作系统课程设计中的应用

  • 更新:2024-09-28 23:40:32
  • 大小:73KB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:C - 后端
  • 格式:DOC

资源介绍

#include #include using namespace std; typedef struct node { int data; struct node *next; }Node; void main() { void fcfs(Node *,int,int);//声明先来先服务函数FCFS void sstf(Node *,int,int);//声明最短寻道时间优先函数SSTF void scan(Node *,int,int);//声明扫描函数SCAN void print(Node *); //输出链表函数 Node *head,*p,*q; //建立一个链表 int it,c=0,f,s; //c为链表长度,f是开始的磁道号,s是选择哪个算法 head=(Node *)malloc(sizeof(Node)); head->next=NULL; q=head; cout<<" /**************磁盘调度算法***************/"<>it; while(it!=0) { p=(Node *)malloc(sizeof(Node)); p->next=NULL; p->data=it; q->next=p; q=p; cin>>it; c++; } cout<<"从几号磁道开始:"; cin>>f; //f为磁道号 print(head); cout<<"链表长度为:"<>s; while(s!=0) { switch(s) { case 1:cout<<"你选择了:先来先服务算法FCFS"<>s; } } /***********************************************************/ void fcfs(Node *head,int c,int f)//先来先服务算法 { void print(Node *); Node *l;//*m,*n; float num=0; //num为平均寻道长度 l=head->next; for(int i=0;idata-f); f=l->data; l=l->next; } num=num/c; cout<<"先来先服务的寻道顺序是:"<next=NULL; m=l; q=head; p=head->next; s=head; r=head->next; float num=0; for(int i=0;idata); for(int j=0;jnext; q=q->next; if(abs(f-p->data)data); r=p; s=q; } } num+=abs(f-r->data); f=r->data; s->next=r->next; r->next=NULL; m->next=r; m=r; q=head; p=head->next; s=head; r=head->next; } num=num/c; cout<<"最短寻道时间优先顺序是:"<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=head; 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++; } else { q->next=p->next; p->next=NULL; s->next=p; s=p; p=q->next; j++; } } if(p->data>=f) { n->next=p; n=p; i++; } else { s->next=p; s=p; j++; } q=r; //对比开始磁道小的磁道排序 p=r->next; while(q->next->next!=NULL) { q=q->next; p=q->next; max=q->data; while(p->next!=NULL) { if(p->data>max) { max=p->data; p->data=q->data; q->data=max; max=q->data; } p=p->next; } if(p->data>max) { max=p->data; p->data=q->data; q->data=max; max=q->data; } } //print(r); q=m; p=m->next; while(q->next->next!=NULL) { q=q->next; p=q->next; min=q->data; while(p->next!=NULL) { if(p->datadata; p->data=q->data; q->data=min; min=q->data; } p=p->next; } if(p->datadata; p->data=q->data; q->data=min; min=q->data; } } //print(m); x=m; p->next=r->next; y=x->next; while(y->next!=NULL) { num+=abs(f-y->data); f=y->data; y=y->next; } num+=abs(f-y->data); num=num/c; cout<<"扫描算法的顺序是:"<next; cout<<"单链表显示:"; if(p==NULL) { cout<<"单链表为空:"; } else if(p->next==NULL) { cout<data; } else { while(p->next!=NULL) { cout<data<<"->"; p=p->next; } cout<data<