中易网

用c语言编写模拟进程控制程序

答案:1  悬赏:20  
解决时间 2021-02-17 20:51
用c语言编写模拟进程控制程序
最佳答案
#define null 0
#define M " Menu\n\n1.Creat a process\n2.Destroy a process\n3.Blockaprocess\n4.Wakeup a process\n5.Suspend a process\n6.Active a process\n7.Observe the processes\n\nPlease select the item you want to realize:"struct PCB
{char name;
int ko;
int cha;
}struct PCB pcb[10];
int i=0;void creat()
{char a;
int b;
printf("Please input the name of the process:");
scanf("%c",&a);
printf("\nPlease input the ko of the process:");
scanf("%d",&b);
i++;
pcb[i].name=a;
pcb[i].ko=b;
pcb[i].cha=1;
printf(M);
}void destroy()
{char a;
int j;
printf("Select a process you want to destroy:");
scanf("%c",&a);
printf("\n");
for(j=1;j<=10;j++)
{if(pcb[j].name==a)
{pcb[j].name=0;
pcb[j].ko=0;
pcb[j].cha=0;
printf("Process %c has been destroied.");
}
else printf("There isn't process %c existed!");
}
printf("\n");
printf(M);
}void block()
{char a;
int j;
printf("Please tell me which process you want to block:");
scanf("%c",&a);
printf("\n");
for(j=1;j<=10;j++)
{if(pcb[j].name==a)
{if(pcb[j].cha==1)
{pcb[j].cha=4;
pcb[j].ko++;
printf("Operation block has been finished!");
}
else if(pcb[j].cha==2)
{pcb[j].cha=3;
pcb[j].ko++;
printf("Operation block has been finished!");
}
else printf("There is no process can be blocked!");
}
}
printf("\n");
printf(M);
}void wakeup()
{char a;
int j;
printf("Please tell me which process you want to wakeup:");
scanf("%c",&a);
printf("\n");
for(j=1;j<=10;j++)
{if(pcb[j].name==a)
{if(pcb[j].cha==3)
{pcb[j].cha=2;
pcb[j].ko--;
printf("You have wakeup process %c.",a);
}
else if(pcb[j].cha==4)
{pcb[j].cha=1;
pcb[j].ko--;
printf("You have wakeup process %c.",a);
}
else printf("There is no process can be wakedup!");
}
}
printf("\n");
printf(M);
}void suspend()
{char a;
int j;
printf("Which process do you want to suspend?Select:");
scanf("%c",&a);
printf("\n");
for(j=1;j<=10;j++)
{if(pcb[j].name==a)
{if(pcb[j].cha==2)
{pcb[j].cha=1;
pcb[j].ko++;
printf("You have suspend process %c.",a);
}
else if(pcb[j].cha==3)
{pcb[j].cha=4;
pcb[j].ko++;
printf("You have suspend process %c.",a);
}
else if(pcb[j].cha==5)
{pcb[j].cha=1;
pcb[j].ko++;
printf("You have suspend process %c.",a);
}
else printf("You could suspend none!");
}
}
printf("\n");
printf(M);
}void active()
{char a;
int j;
printf("Please tell me which process you want to active:");
scanf("%c",&a);
printf("\n");
for(j=1;j<=10;j++)
{if(pcb[j].name==a)
{if(pcb[j].cha==1)
{pcb[j].cha=2;
pcb[j].ko--;
printf("You have active process %c.",a);
}
else if(pcb[j].cha==4)
{pcb[j].cha=3;
pcb[j].ko--;
printf("You have active process %c.",a);
}
else printf("There is no process can be actived!");
}
}
printf("\n");
printf(M);
}void run()
{struct PCB *p;
char t;
int j,m,k;
printf("The processes will run in the order of ko(lower earlier,higher later):\n");
for(j=1,p=pcb;p!=null;j++,p++)
{if(p[j].ko>p[j+1].ko)
{t=p[j].name;
p[j].name=p[j+1].name;
p[j+1].name=t;
m=p[j].cha;
p[j].cha=p[j+1].cha;
p[j+1].cha=m;
k=p[j].ko;
p[j].ko=p[j+1].ko;
p[j+1].ko=k;
}
}
for(p=pcb,j=1;p!=null;p++)
{printf("Process %c:",p[j].name);
printf("\tko:%d\tcha:%d",p[j].ko,p[j].cha);
printf("\n");
}
printf("\n");
printf(M);
}observe()
{int j;
for(j=1;j!=null;j++)
{printf("Process %c:",pcb[j].name);
printf("\tko:%d\tcha:%d",pcb[j].ko,pcb[j].cha);
printf("\n");
}
}exit()
{exit(1);
}main()
{int a,k;
for(k=1;k<=10;k++)
{pcb[i].name=0;
pcb[i].ko=0;
pcb[i].cha=0;
}
printf(" Menu\n\n");
printf("1.Creat a process\n");
printf("2.Destroy a process\n");
printf("3.Block a process\n");
printf("4.Wakeup a process\n");
printf("5.Suspend a process\n");
printf("6.Active a process\n");
printf("7.Observe the processes\n");
printf("8.Exit\n");
printf("\n\n");
printf("\n\nPlease select the item you want to realize:");
scanf("%d",&a);
printf("\n\n");
if(a!=null)
switch(a)
{case 1:creat();break;
case 2:destroy();break;
case 3:block();break;
case 4:wakeup();break;
case 5:suspend();break;
case 6:active();break;
case 7:observe();break;
case 8:exit();break;
}
getch();
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
您好,我问一下,我的贫困补助卡丢了,但是银
斯韵瓷砖价格是多少
筷子巷在哪里啊,我有事要去这个地方
GSM通信网元是什么?BSC的名称,MSC的名称,
汶上金点子广告多少钱一期
高级护理出来只能当护士吗?
想请教你一个光圈的问题,光圈的调整能够调整
酷酷的腾用过的 黑色背景漫画男生的头像 急!
东涌镇棋类协会地址有知道的么?有点事想过去
如何写网页评价
降龙十八掌还能干过一阳指吗
洋甘菊和蓝甘菊是一种植物吗?
4S店做售后服务工作,经常夜里加班到10点多?
兰天购物商场地址在哪,我要去那里办事
世界上真的有通灵术吗?
推荐资讯
金玉华板材贵溪专卖店在什么地方啊,我要过去
怀孕了为什么嘴巴周围痘痘长不停
一个男人初次见面直勾勾盯着女人脸看一般是为
大学生,哪些笔记本性价比高,实用,求推荐
我刚刚洗完纹身现在可以涂鲜芦荟吗
宁乡户口算长沙户口吗
have fun是什么意思?
广水市随州欧普照明这个地址在什么地方,我要
牛增膘增肥哪个饲料效果好
“素舍”和普通公寓楼有什么区别?
我叫一个女同事过来我这边她第一次肯,第二次
最近小区里总是有小偷。有时候小偷一晚上甚至
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?