1. 首页
  2. > 海外公司注册 >

时间片轮转调度是什么(轮转调度时间片确定例题)

今天给大家带来的是关于C 模拟进程调度时间片轮转算法,大家可以看一下,评论一下哪些地方有不足之处或者哪里有问题


#include"stdio.h"


#include"stdlib.h"


#include<iostream>


using namespace std;


#define ready 1


#define run 2


struct PCB


{


char name[10];


int priority; /*进程的优先级*/


int state; /*进程的状态:可以有运行和就绪*/


int needtime; /*进程需要运行的时间*/


int runtime;


int time; /*进程已运行的时间*/


struct pcb *next; /*指向下一个进程PCB的指针*/


};


typedef struct pcb PCB;


PCB *head=NULL;


void create() /*此函数用于创建进程队列*/


{


PCB *p, *q;


int n,i;


printf("请输入要创建的进程的数量:");


scanf("%d",&n);


head=(PCB *)malloc(sizeof(PCB));


p=head;


for(i=1;i<=n;i )


{


q=(PCB*)malloc(sizeof(PCB));


p->next=q;


p=q;


printf(" 请输入 NO.%d 个进程的标识符:",i);


scanf("%s",&p->name);


printf("请输入进程的优先级:");


scanf("%d",&p->priority);


printf("请输入进程所需的时间:");


scanf("%d",&p->needtime);


p->state=ready;


p->runtime=0;


p->next=NULL;


}


}


void lunzhuan () /*时间片轮转*/


{


PCB *p,*q,*r;


int time;


printf("请输入时间片大小: ");


scanf("%d",&time);


for(p=head->next;p->next;p=p->next)


r=p;


while(head->next)


{


p=head->next; /*选出就绪队列的第一个进程*/


p->state=run;


printf(" 正在运行的进程是: "); /*输出该进程的信息*/


printf("%s ",p->name);


printf("state: 运行 ");


printf("needtime: %d ",p->needtime);


printf("runtime: %d ",p->needtime);


q=head->next;


if(p->needtime-p->runtime<=p->time) /*时间片内,进程运行结束否*/


{


p->runtime=p->needtime;


printf("runtime:%d ",p->runtime);


}


else


{


p->runtime=p->runtime p->time;


printf("runtime:%d ",p->runtime);


}


q=p->next;


if(q!=NULL) /*输出就绪队列中的进程信息*/


printf("就绪队列是: ");


else


printf("就绪队列为空! ");


while(q)


{


printf("%s ",q->name);


printf("state: 就绪 ");


printf("needtime:%d ",q->needtime);


printf("runtime:%d ",q->runtime);


printf(" ");


q=q->next;


}


if(p->runtime==p->needtime)


{


delete(head,p);


}


else


{


head->next=p->next;


r->next=p;


r=p;


r->state=ready;


r->next=NULL;


}


}


}


void main()


{


cout<<"开始创建进程:"<<endl;


create();


if(head==NULL || head->next==NULL)


printf("就绪队列没有进程,请先创建进程 ");


else


lunzhuan();


}



想要一起学习C 的可以加裙248-894-430,群内有各种资料满足大家


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123456@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息