预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

时间片轮转法调度 #defineM200 #include"conio.h" #include"stdio.h" typedefstructpcb/*进程控制块的定义*/ { charProcessname[M];/*进程名*/ intruntime;/*运行时间*/ intarrivetime;/*到达时间*/ charstate;/*进程状态*/ structpcb*next;/*链接指针*/ }PCB; PCBhead_input; PCBhead_run; PCB*pcb_input; staticcharR='r',C='c'; unsignedlongcurrent;/*记录系统当前时间的变量*/ intProcessready();/*建立就绪队列函数*/ intDataready();/*判断进程是否就绪函数*/ voidinputprocess();/*建立进程函数*/ intrunprocess();/*运行进程函数*/ intProcessready() { while(1) { if(Dataready()==0) return1; else runprocess(); } } intDataready() { if(head_input.next==NULL) { if(head_run.next==NULL) return0; else return1; } PCB*p1,*p2,*p3; p1=head_run.next; p2=&head_run; while(p1!=NULL) { p2=p1; p1=p2->next; } p1=p2; p3=head_input.next; p2=&head_input; while(p3!=NULL) { if(((unsignedlong)p3->arrivetime<=current)&&(p3->state==R)) { printf("╭───────────────────╮\n"); printf("|时间片是:%d(时间:%d),进程%s开始|\n",current,(current+500)/1000,p3->Processname); printf("╰───────────────────╯\n"); p2->next=p3->next; p3->next=p1->next; p1->next=p3; p3=p2; } p2=p3; p3=p3->next; } return1; } voidinputprocess() { PCB*p1,*p2; intnum; unsignedlongmax=0; printf("╭──────────╮\n"); printf("|你要运行多少个进程:|\n"); printf("╰──────────╯"); scanf("%d",&num); p1=&head_input; p2=p1; p1->next=newPCB; p1=p1->next; for(inti=0;i<num;i++) { printf("╭───────────╮\n"); printf("|第%d个输入的进程名称:|\n",i+1); printf("╰───────────╯"); scanf("%s",p1->Processname); printf("╭───────╮\n"); printf("|输入运行时间:|\n"); printf("╰───────╯"); scanf("%d",&(p1->runtime)); printf("╭───────╮\n"); printf("|输入到达时间:|\n"); printf("╰───────╯"); scanf("%d",&(p1->arrivetime)); p1->runtime=(p1->runtime)*1000; p1->arrivetime=(p1->arrivetime)*1000; p1->state=R; if((unsignedlong)(p1->arrivetime)>max) max=p1->arrivetime; p1->next=newPCB; p2=p1; p1=p1->next; } deletep1; p1=NULL; p2->next=NULL; } intrunprocess() { PCB*p1,*p2; if(head_run.next==NULL) { current++; return1; } else { p1=head_run.next; p2=&head_run; while(p1!=NULL) { p1->runtime--; current++; if(p1->runtime<=0) { printf