实验题目:进程管理及进程通信姓名 学号 实验日期 2024/10/12 实验环境:VMware Workstation 中的 Ubuntu 64 位操作系统
实验目的:利用 Linux 提供的系统调用设计程序,加深对进程概念的理解
体会系统进程调度的方法和效果
了解进程之间的通信方式以及各种通信方式的使用
实验内容:用 vi 编写使用系统调用的 C 语言程序
操作过程及结果:实验 1:编写程序
显示进程的有关标识(进程标识、组标识、用户标识等)
经过 5 秒钟后,执行另一个程序,最后按用户指示(如:Y/N)结束操作
结果:实验 2:编写程序
实现父进程创建一个子进程
体会子进程与父进程分别获得不同返回值,进而执行不同的程序段的方法
结果:思考:子进程是如何产生的
又是如何结束的
子进程被创建后它的运行环境是怎样建立的
答:是由父进程用 fork()函数创建形成的,通过 exit()函数自我结束,子进程被创建后核心将其分配一个进程表项和进程标识符,检查同时运行的进程数目,并且拷贝进程表项的数据,由子进程继承父进程所有文件
实验 3:编写程序
父进程通过循环语句创建若干子进程
探讨进程的家族树以及子进程继承父进程的资源的关系
结果:思考:① 画出进程的家族树
子进程的运行环境是怎样建立的
反复运行此程序看会有什么情况
② 修改程序,使运行结果呈单分支结构,即每个父进程只产生一个子进程
画出进程树,解释该程序
答 1:反复运行,子进程的编号在不断变化,但是初始的父进程的编号不会变,因为:父进程始终是该程序在虚拟机操作系统下的进程号,但是子进程是该父进程创建的子进程不断增加而得的,子进程的编号应该是顺序递增的
答 2: #include 〈stdio
h〉 #include 〈sys/types
h〉 #include 〈unistd
h> main() { int i,