代码文本文档代码文本文档
#include
#include
#include
#define OK 1
#define EVERFLOW -1
#define PCBSIZE 10
#define NULL 0
void main()
{
InitPcb(nullPcb);
//给就绪队列分配空间
readyPcbtail=(PCB*)malloc(sizeof(PCB));
readyPcb=readyPcbtail;
readyPcbtail->id=0;
readyPcbtail->priority=...
代码文本文档
#include
#include
#include
#define OK 1
#define EVERFLOW -1
#define PCBSIZE 10
#define NULL 0
void main()
{
InitPcb(nullPcb);
//给就绪队列分配空间
readyPcbtail=(PCB*)malloc(sizeof(PCB));
readyPcb=readyPcbtail;
readyPcbtail->id=0;
readyPcbtail->priority=0;
readyPcbtail->time=0;
readyPcbtail->next=NULL;
do
{/*创建程序控制界面*/
printf("******************************\n");
printf("\t1.创建一个PCB进程\n\t2.销毁运行PCB进程\n\t3.就绪队列打印输出\n\t4.退出系统\n");
printf("******************************\n");
scanf("%d",&on);//设置开关按钮
switch(on)
{
case 1: p=Create(nullPcb); InsertReadyPcb(readyPcb,p);break;
//执行创建PCB进程
case 2: printf("请输入销毁的进程的id值");scanf("%d",&deleteId);Delete(deleteId,readyPcb,nullPcb);break;
case 3: PrintPCB(readyPcb);break;
case 4: exit(0);
default:
printf("请输入1-4之间的序号\n");
}
}while(on!=4);
}
void InitPcb(PCBList &nullPcb)//初始化空闲队列
{
nullPcb=&pcb[0];
for(int i=0;inext;
printf("请输入创建pcb的序号id\n");
scanf("%d",&pcbP->id);
printf("请输入创建它的名字\n");
scanf("%s",&pcbP->name);
printf("请输入它的优先级\n");
scanf("%d",&pcbP->priority);
printf("请输入它运行所需时间\n");
scanf("%d",&pcbP->time);
pcbP->next=NULL;
}
return pcbP;
}
int Delete(int id,PCBList &readyPcb,PCBList &nullPcb)//用于销毁一个pcb进程
{
if(pcbT) {
while(pcbT) {
if(pcbT->id==id) {
pcbF->next=pcbT->next;
pcbT->next=nullPcb;
nullPcb=pcbT;
printf("销毁成功\n");
return OK;
}
pcbT=pcbT->next;
pcbF=pcbF->next;
}
if(!pcbT) {
printf("没有要删除的pcb进程\n");
} }
else{
printf("没有要删除的pcb进程\n");
}
return OK;
}
void PrintPCB(PCBList &readyPcb)//打印pcb就绪序列 {
printf("就绪队列中的进程,按照优先级排序的序列为:\n");
printf("\t\t序号\t名字\t优先级\t运行时间\n");
PCBList pcbP=readyPcb->next;
while(pcbP)
{
printf("\t\t%d\t%s\t%d\t%d\n",pcbP->id,pcbP->name,pcbP->priority,pcbP->time);
pcbP=pcbP->next;
}
}
void InsertReadyPcb(PCBList &readyPcb,PCBList &pcb)
{
PCBList pcbF=readyPcb;
PCBList pcbT=readyPcb->next;
if(pcbT)
{
while(pcbT)
{
if(pcbT->prioritypriority)
{
pcb->next=pcbT;
pcbF->next=pcb;
printf("创建成功并将进程插入到了就绪队列中了\n");
return;
}
pcbT=pcbT->next;
pcbF=pcbF->next;
}
if(!pcbT)
{
pcbF->next=pcb;
}
}
else{
pcbF->next=pcb;
printf("创建成功并将进程插入到了就绪队列中了\n");
}
}
本文档为【代码文本文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。