操作系统实验进程管理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#includestdio.h#includestdlib.h#includestring.h/**************************************/structjincheng_type{intpid;intyouxian;intdaxiao;intzhuangtai;//标志进程状态,0为不在内存,1为在内存,2为挂起charinfo[10];};structjincheng_typeneicun[20];//一共20个内存/**************************************/intshumu=0,counter_guaqi=0,pid,flag=0;voidcreate(){if(shumu=20)printf(\n内存已满,请先挂起或杀死进程\n);else{for(inti=0;i20;i++)//if(neicun[i].zhuangtai==0)break;printf(\n请输入新进程pid\n);scanf(%d,&(neicun[i].pid));for(intj=0;ji;j++)if(neicun[i].pid==neicun[j].pid){printf(\n该进程已存在\n);return;}printf(\n请输入新进程优先级\n);scanf(%d,&(neicun[i].youxian));printf(\n请输入新进程大小\n);scanf(%d,&(neicun[i].daxiao));printf(\n请输入新进程内容\n);scanf(%s,&(neicun[i].info));neicun[i].zhuangtai=1;//创建进程,使标记位为1shumu++;//进程创建之后,内存中进程数目加一}}voidrun(){for(inti=0;i20;i++){if(neicun[i].zhuangtai==1){//输出运行进程的各个属性值printf(\npid=%d,neicun[i].pid);printf(youxian=%d,neicun[i].youxian);printf(daxiao=%d,neicun[i].daxiao);printf(zhuangtai=%d,neicun[i].zhuangtai);printf(info=%s,neicun[i].info);flag=1;}}if(!flag)printf(\n当前没有运行进程\n);}voidguaqi(){if(!shumu){printf(当前没有运行进程\n);return;}printf(\n输入挂起进程的ID值);scanf(%d,&pid);for(inti=0;i20;i++){//定位,找到所要挂起的进程if(pid==neicun[i].pid){if(neicun[i].zhuangtai==1)//进程在内存中{neicun[i].zhuangtai=2;//把进程状态改为挂起counter_guaqi++;//被挂起进程的数目加一printf(\n已经成功挂起进程\n);}elseif(neicun[i].zhuangtai==0)printf(\n要挂起的进程不存在\n);elseprintf(\n要挂起的进程已被挂起\n);flag=1;break;}}if(flag==0)printf(\n要挂起的进程不存在\n);}voidkill(){if(!shumu){printf(当前没有运行进程\n);return;}printf(\n输入杀死进程的ID值);scanf(%d,&pid);for(inti=0;i20;i++){//定位,找到所要杀死的进程if(pid==neicun[i].pid){if(neicun[i].zhuangtai==1)//如果进程在内存中,如果进程被挂起,则不可被杀死{neicun[i].zhuangtai=0;//把进程状态改为杀死shumu--;//被挂起进程的数目减一printf(\n已成功杀死进程\n);}elseif(neicun[i].zhuangtai==0)printf(\n要杀死的进程不存在\n);elseprintf(\n要杀死的进程已被挂起\n);//neicun[i].zhuangtai==2flag=1;break;}}if(!flag)printf(\n要杀死的进程不存在\n);//找不到,则说明进程不存在}voidhuanxing(){if(!shumu){printf(当前没有运行进程\n);return;}if(!counter_guaqi){printf(\n当前没有挂起进程\n);return;}printf(\n输入pid:\n);scanf(%d,&pid);for(inti=0;i20;i++){//定位,找到所要唤醒的进程if(pid==neicun[i].pid){flag=false;if(neicun[i].zhuangtai==2)//找到被挂起的进程{neicun[i].zhuangtai=1;//将其唤醒counter_guaqi--;//挂起进程的数目减一printf(\n已经成功唤醒进程\n);}elseif(neicun[i].zhuangtai==0)printf(\n要唤醒的进程不存在\n);elseprintf(\n要唤醒的进程已被挂起\n);break;}}if(flag)printf(\n要唤醒的进程不存在\n);//找不到,则说明进程不存在}voidmain(){intn=1;intnum;//一开始所有进程都不在内存中for(inti=0;i20;i++)neicun[i].zhuangtai=0;//初始化内存状态while(n){printf(\n********************************************);printf(\n*进程演示系统*);printf(\n********************************************);printf(\n1.创建新的进程2.查看运行进程);printf(\n3.挂起某个进程4.杀死运行进程);printf(\n5.唤醒某个进程6.退出系统);printf(\n********************************************);printf(\n请选择(1~6)\n);scanf(%d,&num);switch(num){case1:create();break;case2:run();break;case3:guaqi();break;case4:kill();break;case5:huanxing();break;case6:exit(0);default:n=0;}flag=0;//恢复标记}}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功