好文档 - 专业文书写作范文服务资料分享网站

实验题目:进程管理系统及进程通信

天下 分享 时间: 加入收藏 我要投稿 点赞

实验题目:进程管理及进程通信

学号 实验日期 2016/10/12

实验环境:

VMware Workstation中的Ubuntu 64位操作系统。

实验目的:

利用Linux提供的系统调用设计程序,加深对进程概念的理解。体会系统进程调度的方法和效果。

了解进程之间的通信方式以及各种通信方式的使用。

实验容:

用vi 编写使用系统调用的C 语言程序。

操作过程及结果:

实验1:

编写程序。显示进程的有关标识(进程标识、组标识、用户标识等)。经过5 秒钟后,

执行另一个程序,最后按用户指示(如:Y/N)结束操作。 结果:

实验2:

编写程序。实现父进程创建一个子进程。体会子进程与父进程分别获得不同返回值,进

而执行不同的程序段的方法。 结果:

思考:子进程是如何产生的?又是如何结束的?子进程被创建后它的运行环境是怎样建立

的?

答:是由父进程用fork()函数创建形成的,通过exit()函数自我结束,子进程被创建后核心将其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件。 实验3:

编写程序。父进程通过循环语句创建若干子进程。探讨进程的家族树以及子进程继承父进程的资源的关系。 结果:

思考:① 画出进程的家族树。子进程的运行环境是怎样建立的?反复运行此程序看会有什么情况?解释一下。

② 修改程序,使运行结果呈单分支结构,即每个父进程只产生一个子进程。画出进程树,解释该程序。 答1:

反复运行,子进程的编号在不断变化,但是初始的父进程的编号不会变,因为:父进程始终是该程序在虚拟机操作系统下的进程号,但是子进程是该父进程创建的子进程不断增加而得的,子进程的编号应该是顺序递增的。 答2:

#include #include

main() {

int i, pid; for (i=1; i<4; i++) if (pid=fork()) break; }

实验4:

编写程序。使用fork( )和exec( )等系统调用创建三个子进程。子进程分别启动不同程序,并结束。反复执行该程序,观察运行结果,结束的先后,看是否有不同次序。 结果:

思考:子进程运行其它程序后,进程运行环境怎样变化的?反复运行此程序看会有什么情况?解释一下。

答:子进程运行其他程序后,这个进程就完全被新程序代替。由于并没有产生新进程所以进程标识号不改变,除此之外的旧进程的其他信息,代码段,数据段,栈段等均被新程序的信息所代替。新程序从自己的main()函数开始进行。反复运行此程序发现结束的先后次序是不可预知的,每次运行结果不一样。原因是当每个子进程运行其他程序时,他们的结束随着其他程序的结束而结束,所以结束的先后次序在改变。 实验5:

编写程序。验证子进程继承父进程的程序、数据等资源。如用父、子进程修改公共变量

和私有变量的处理结果;父、子进程的程序区和数据区的位置。 结果:

思考:子进程被创建后,对父进程的运行环境有影响吗?解释一下。

答:子进程被创建后,对父进程的运行环境无影响,因为当子进程在运行时,他有自己的代码段和数据段,这些都可以作修改,但是父进程的代码段和数据段是不会随着子进程数据段和代码段的改变而改变。 实验6:

复习管道通信概念,编写一个程序。父进程创建两个子进程,父子进程之间利用管道进行通信。要求能显示父进程、子进程各自的信息,体现通信效果。 结果:

思考:①什么是管道?进程如何利用它进行通信的?解释一下实现方法。

实验题目:进程管理系统及进程通信

实验题目:进程管理及进程通信学号实验日期2016/10/12实验环境:VMwareWorkstation中的Ubuntu64位操作系统。实验目的:利用Linux提供的系统调用设计程序,加深对进程概念的理解。体会系统
推荐度:
点击下载文档文档为doc格式
30hes5ek8b3uh255c6he20sz532alg00cer
领取福利

微信扫码领取福利

微信扫码分享