您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 绩效管理 > 进程管理实验报告源代码
实验一进程管理1.目的和要求通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。2.实验内容用C语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。3.实验环境Windows操作系统、VC++6.0C语言4.实验提示PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。主体程序#includeconio.h#includestdio.h#includestdlib.hstructjincheng_type{intpid;intyouxian;intdaxiao;intmsg;intlive;};structjincheng_typeneicun[20],waicun[20];intshumu=0,pid_l;main(){intn,m,i;chara;n=1;while(n==1){system(cls);printf(\n********************************************);printf(\n*进程演示系统*);printf(\n********************************************);printf(\n1.创建新的进程2.查看运行进程);printf(\n3.换出某个进程4.杀死运行进程);printf(\n5.进程之间通信6.退出);printf(\n********************************************);printf(\n请选择(1~6));a=getch();switch(a){case'1':create();break;case'2':viewrun();break;case'3':huanchu();break;case'4':kill();break;case'5':tongxun();break;case'6':exit(0);default:n=0;}}}create()/*创建一个进程的示例(不完整的程序)*/{if(shumu=20){printf(\n内存已满,请先结束或换出进程\n);}else{printf(\n请输入新进程的pid\n);scanf(%d,&neicun[shumu+1].pid);printf(\n请输入新进程的优先级\n);scanf(%d,&neicun[shumu+1].youxian);printf(\n请输入新进程的大小\n);scanf(%d,&neicun[shumu+1].daxiao);printf(\n请输入新进程的消息\n);scanf(%d,&neicun[shumu+1].msg);neicun[shumu+1].live=1;shumu++;}returnneicun[shumu-1].live;}viewrun()/*查看运行进程*/{intvpid;printf(\n请输入进程的pid\n);scanf(%d,&vpid);if(vpid0&&vpid=20&&neicun[vpid].live==1){printf(\n进程的pid是:%d\n,neicun[vpid].pid);printf(进程的优先级是:%d\n,neicun[vpid].youxian);printf(进程的大小是:%d\n,neicun[vpid].daxiao);printf(进程的消息是:%d\n,neicun[vpid].msg);}else{printf(\n所查看运行进程不存在\n);}printf(请按回车退出查看\n);vpid=getch();}huanchu()/*换出某个进程*/{intpid1,pid2;charc;printf(\n请输入第一个替换进程的pid\n);scanf(%d,&pid1);printf(\n请输入第二个替换进程的pid\n);scanf(%d,&pid2);if(pid10&&pid1=20&&neicun[pid1].live==1){if(neicun[pid1].youxianneicun[pid2].youxian){waicun[20].pid=neicun[pid1].pid;waicun[20].youxian=neicun[pid1].youxian;waicun[20].daxiao=neicun[pid1].daxiao;waicun[20].msg=neicun[pid1].msg;neicun[pid1].pid=neicun[pid2].pid;neicun[pid1].youxian=neicun[pid2].youxian;neicun[pid1].daxiao=neicun[pid2].daxiao;neicun[pid1].msg=neicun[pid2].msg;neicun[pid2].pid=waicun[20].pid;neicun[pid2].youxian=waicun[20].youxian;neicun[pid2].daxiao=waicun[20].daxiao;neicun[pid2].msg=waicun[20].msg;printf(\n替换完成\n);printf(\n被替换进程的pid是:%d\n,waicun[20].pid);printf(被替换进程的优先级是:%d\n,waicun[20].youxian);printf(被替换进程的大小是:%d\n,waicun[20].daxiao);printf(被替换进程的消息是:%d\n,waicun[20].msg);}else{printf(\n进程优先级不够大);}}else{printf(所查看运行进程不存在);}printf(请按回车退出换出进程\n);c=getche();return;}kill()/*杀死运行进程*/{intkpid;printf(\n请输入进程的pid\n);scanf(%d,&kpid);if(kpid0&&kpid20&&neicun[kpid].live==1){neicun[kpid].live=0;}return;}tongxun()/*进程之间通信*/{inttpid1,tpid2;intbuffer;chard;printf(\n请输入通信源进程pid\n);scanf(%d,&tpid1);printf(\n请输入通信目的进程pid\n);scanf(%d,&tpid2);if(tpid10&&tpid120&&neicun[tpid1].live==1){buffer=neicun[tpid1].msg;neicun[tpid1].msg=neicun[tpid2].msg;neicun[tpid2].msg=buffer;printf(\n源进程的消息是:%d\n,neicun[tpid1].msg);printf(\n目的进程的消息是:%d\n,neicun[tpid2].msg);}else{printf(\n所查看运行进程不存在\n);}printf(\n请按回车退出进程通信\n);d=getch();return;}5.实验运行结果*********************************************进程演示系统*********************************************1.创建新的进程2.查看运行进程3.换出某个进程4.杀死运行进程5.进程之间通信6.退出系统********************************************请选择(1~6)然后根据你选择的不同,出现不同的结果。
本文标题:进程管理实验报告源代码
链接地址:https://www.777doc.com/doc-2647067 .html