进程调度算法实现代码(操作系统).doc

进程调度算法实现代码(操作系统).doc

ID:57430129

大小:17.50 KB

页数:7页

时间:2020-08-17

进程调度算法实现代码(操作系统).doc_第1页
进程调度算法实现代码(操作系统).doc_第2页
进程调度算法实现代码(操作系统).doc_第3页
进程调度算法实现代码(操作系统).doc_第4页
进程调度算法实现代码(操作系统).doc_第5页
资源描述:

《进程调度算法实现代码(操作系统).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、进程调度算法实现//数据:进程,队列结构 //处理流程: //1初始化--进程队列结构(包括:就绪队列,等待队列,运行队列)等必要的数据结构init(); //2进入无限循环,反复调度队列  #defineMAX5 #include #include  inttotal_time=20; inttime_slice=3;  typedefstructprocess{   //进程控制块     charpname[10];     intWaitTime;     intBurstTime;     intpri

2、ority;   //数字越小优先级越高     structprocess*next;     }PROCESS;   //typedefstructprocessPROCESS; PROCESS*in_queue(PROCESS*head,PROCESS*p); //声明    PROCESS*init()  //进程初始化 {  inti=0;    chara;  PROCESS*head_new; //队列的队头  head_new=(structprocess*)malloc(sizeof(structprocess));  if(!he

3、ad_new) exit(1);       head_new=NULL;    do  {   structprocess*s;    printf("initializetheprocess:");    s=(structprocess*)malloc(sizeof(structprocess));    if(!s) exit(1);    printf("pleaseinputthepname:WaitTime:BurstTime: priority:");    scanf("%c",&(s->pname));    scanf(

4、"%d",&(s->WaitTime));    scanf("%d",&(s->BurstTime));    scanf("%d",&(s->priority));    s->next=NULL;    in_queue(head_new,s);    i++;      printf("douwanttoinsertprocessmore?? 'Y'or'N'");  printf("----------------------------------------'");    scanf("%c",&a);    scanf("%c

5、",&a);   //if(a=='Y'

6、

7、a=='y')continue;   //elseif(a=='N'

8、

9、a=='n')break;  }while((i

10、

11、a=='y'));    return head_new; } ///////////////////////////////////////////////////////////  PROCESS*in_queue(PROCESS*head,PROCESS*p)  //入队函数 {  if(head==NULL)  {   head=p;   p->ne

12、xt=NULL;  }  else  {   p->next=head;   head=p;  } // printf("theprocessinsertintothemothballqueue:");  return head;   } ///////////////////////////////////////////////////////////// /* voidnew_queue() //后备队列 先来先服务方式进入就绪 {    return*head_new; }   */    PROCESS*FCFS_process() {

13、  PROCESS*p,*q,*a; //a用来记录选中结点的前一个结点  q=p=init(); //这里是不是有个问题??  while(p->next!=NULL)  {   a=p;   if(p->WaitTime>=q->WaitTime)   {    q=p;    p=p->next;   }  }  q->WaitTime--;  if(q->WaitTime==0)  //如果等待时间为0则把该进程从后备队列中移除  {   a->next=p->next;   free(p);  }  returnq;  //选择等待时间最久

14、的) }  //////////////////////就绪队列,入口函数为就绪队列的头指针////////

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。