《2022年操作系统实验 7.pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验 7.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操作系统实验( 1)模拟进程管理专业:信息管理与信息系统班级:信管082 姓名:温静名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 实验一进程管理1目的和要求通过实验理解进程的概念,进程的组成(PCB 结构) ,进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。2实验内容用 C语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。3主体程序#i
2、nclude #include #include struct PCB_type int pid; int priority; int cputime; int state; int shumu=0,pid_l; struct PCB_type neicun20; struct PCB_type hc10; int max=0;int number=0; void create(); void run(); void huanchu(); void kill(); /* 创建新进程*/ void create() if(shumu=20) printf(n 内存已满,请先结束或换出进程n);
3、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - else shumu+; printf(n 请输入新进程的程序名n); scanf(%d,&neicunshumu-1.pid); printf(n 请输入新进程的优先级n); scanf(%d,&neicunshumu-1.priority); printf(n 请输入新进程的运行时间n); scanf(%d,&neicunshumu-1.cputime); printf(n 创
4、建进程时令其状态为就绪n); neicunshumu-1.state=2; printf(n 创建进程成功 !n); /* 查看当前运行进程*/ void run() int max=0; for(int i=0;i=neicunmax.priority) max=i; neicunmax.state=3; printf( 当前运行进程程序名:n%d,neicunmax.pid); printf(n 该进程的优先级:n%d,neicunmax.priority); printf(n 该进程的运行时间:n%d,neicunmax.cputime); printf(n 该进程的状态 :n%d,ne
5、icunmax.state); /* 换出*/ void huanchu() int k; printf( 请输入要换出程序的程序名:); scanf(%d,&k); for(int j=0;jshumu;j+) if(neicunj.state=1) hcnumber.pid=neicunj.pid; hcnumber.state=neicunj.state; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - hcnumber.
6、priority=neicunj.priority; hcnumber.cputime=neicunj.cputime; number+; neicunj.pid=0; neicunj.state=0; neicunj.priority=0; neicunj.cputime=0; pid_1+; else printf( 进程 %d 无法换出的pid:%dn,j.neicunj.pid); if(number!=0) for(int i=0;inumber;i+) printf( 当前运行进程程序名:n%d,hci.pid); printf(n 该进程的优先级:n%d,hci.priority
7、); printf(n 该进程的运行时间:n%d,hci.cputime); printf(n 该进程的状态 :n%d,hci.state); PCB_type temp=neicun0; for(k=0;ktemp.priority) tmpe=neicunk; neicunk.state=1; /* 杀死进程*/ void kill() neicunmax.pid=0; neicunmax.priority=0; neicunmax.cputime=0; neicunmax.state=0; if(max=(shumu-1) shumu-; else for(int j=max+1;jsh
8、umu;j+) neicunj-1.pid=neicunj.pid; neicunj-1.priority=neicunj.priority; neicunj-1.cputime=neicunj.cputime; neicunj-1.state=neicunj.state; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - shumu-; max=0; run(); /* int k=0; printf( 请输入要杀死程序的进程名
9、:); scanf(%d,&k); if(neicunk.state=1) neicunk.state=2; neicunk.cputime=0; neicunk.pid=0; neicunk.priority=0; neicunk.state=0; if(k=(shumu-1) shumu-; else for(int j=k+1;jshumu;j+) neicunj-1.pid=neicunj.pid; neicunj-1.priority=neicunj.priority; neicunj-1.cputime=neicunj.cputime; neicunj-1.state=neicun
10、j.state; shumu-; printf( 进程 %d 已被杀死 !,k); */ int main() int n,a; n=1; while(n=1) system(cls); printf(n*); printf(n* 进程演示系统*); printf(n*); printf(n 1.创建新的进程2.查看运行进程 ); printf(n 3.换出某个进程4.杀死运行进程 ); printf(n 5.退出系统); printf(n*); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
11、- - 第 5 页,共 7 页 - - - - - - - - - printf(n 请选择 (15):); scanf(%d,&a); switch(a) case 1: create( ); printf(npress anykey to go on); getch(); break; case 2 : run(); printf(npress anykey to go on); getch(); break; case 3 : huanchu(); printf(npress anykey to go on); getch(); break; case 4 : kill(); print
12、f(npress anykey to go on); getch(); break; case 5 : exit(0); default: n=0; break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 5感想与心得体会做了两周的实验,问了很多同学,可程序还是有很多问题。通过这次实验,我发现了自己在模拟进程调度和模拟程序换出这两块地方有很多东西都没有学好,自己还有很多的不足。以后还应多看看书,加深自己的知识储备。希望下次试验会比这次熟练多些。最后,真的要感谢徐老师耐心、细心的讲解。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -