发布时间 : 星期一 文章操作系统上实验报告3更新完毕开始阅读70d9b10283c4bb4cf7ecd1ac
操作系统实验三报告
实验题目:
进程管理及进程通信
实验环境:
虚拟机Linux操作系统
实验目的:
1.利用Linux提供的系统调用设计程序,加深对进程概念的理解。 2.体会系统进程调度的方法和效果。
3.了解进程之间的通信方式以及各种通信方式的使用。
实验内容:
例程1:
利用fork()创建子进程 #include
/*父进程执行的程序段*/ /* 等待子进程结束*/
printf(\
printf(\} else{
printf(\sleep(10);
/*子进程执行的程序段*/ exit(1);
/*向父进程发出结束信号*/ } }
运行结果:
思考:子进程是如何产生的? 又是如何结束的?子进程被创建后它的运行环境是怎 样建立的?
答:子进程是通过函数fork()创建的,通过exit()函数自我结束的,子进程被创建后核心将为其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程的所有文件。
例程2:
循环调用fork()创建多个子进程 #include
printf(“My pid is %d, my father’s pid is %d\\n”,getpid() ,getppid());
for(i=0; i<3; i++) if(fork()==0)
printf(“%d pid=%d ppid=%d\\n”, i,getpid(),getppid()); else
{ j=wait(0);
Printf(“ %d:The chile %d is finished.\\n” ,getpid(),j); } }
运行结果:
思考:画出进程的家族树。子进程的运行环境是怎样建立的?反复运行此程序 看会有什么情况?解释一下。 答:21440 21441 21445 21447 21442 21444 21446 21443 子进程的运行环境是由将其创建的父进程而建立的,反复运行程序会发现每个进程标识号在不断改变,这是因为同一时间有许多进程在被创建。