实验报告
四 观察进程的并发性
实验名称:
五 构造进程家族树 六 理解进程的独立空间
日期:
2014.5
班级:
一、实验目的
1.观察进程的并发性
姓名:
1)、通过创建子进程,观察父子进程的并发执行过程,区别顺序执行和并发执行; 明确进程和程序的区别; 2)、加深对操作系统进程概念和进程并发特性的理解 2. 构造进程家族树
通过创建若干个子进程,构造进程家族树,分析进程家族树的结构关系;学习相关系统调用(例如,getpid()和getppid()等)的使用方法。 3. 理解进程的独立空间
理解进程是操作系统独立分配资源的单位,进程拥有自己相对独立的程序空间。
二、实验内容
1.观察进程的并发性 1、学习进程的基础知识;
2、了解Linux系统中进程创建的基本原理;
3、熟悉进程的创建、控制、执行和终止等系统调用函数; 4、进程的创建
1
计算机操作系统实验报告
编制一段程序,使用系统调用fork()创建两个子进程,在此程序运行时,系统中就 有一个父进程和两个子进程在活动。 让每一个进程在屏幕上显示一个字符:父进程显示字符a,两个子进程分别显示字 符b和字符c。 观察、记录并分析屏幕上进程调度和并发执行的情况: 此时,在程序中使用系统调 用nice()来改变各进程的优先级, 观察、 记录并分析屏幕上进程调度和并发执行的情况
2. 构造进程家族树
学习进程构造的相关知识,学习获取进程相关信息的系统调用函数。 3. 理解进程的独立空间
预习进程创建和构造的相关知识,了解C语言程序编写的相关知识。
三、项目要求及分析
1. 构造进程家族树
进程的创建。编制一段程序,使用系统调用fork()创建三个子进程,在各个子进程中再使用系统调用fork()进一步创建子进程,如此重复,构造一棵具有图1形状的进程家族树。分别使用系统调用getpid()和getppid()获取当前进程和父进程的进程标识号并输出。
Parent Pid2 Pid3 Pid1 Pid11 Pid12
2
计算机操作系统实验报告
2. 理解进程的独立空间
a. 编写一个程序,在其main()函数中定义一个变量shared,对其进行循环加/减操作,并输出每
次操作后的结果;
b. 使用系统调用fork()创建子进程,观察该变量的变化;
c. 修改程序把shared 变量定义到main()函数之外,重复第(2)步操作,观察该变量的变化。
四、具体实现
1. 流程图 a. 构造进程家族树
开始 创建子进程Pid1 Pid1=0? >0 创建子进程Pid2 =0 =0 =0 打印 创建子进程Pid11 Pid11=0? >0 创建子进程Pid12 Pid2=0? >0 创建子进程Pid3 Pid11=0? =0 打印 Pid3=0? >0 结束 =0
b. 理解进程的独立空间
3
计算机操作系统实验报告
开始 调用父进程,执行shared 输出shared值 调用子进程,执行shared 输出shared值 结束
2. 添加函数的代码 a.构造进程家族树
4
计算机操作系统实验报告
b.理解进程的独立空间
5
计算机操作系统实验报告
五、调试运行结果
1.实验4:
6
计算机操作系统实验报告
2.实验5:
3.实验6:
7
计算机操作系统实验报告
六、实验总结
本次实验理解了进程的并发执行,进程家族树及进程独立空间的概念。深入理解了fork()、getpid()、getppid()函数的作用。认识到fork()函数在创建新的进程成功时,同时有两个返回值,pid为0则表示子进程,否则表示父进程。getpid()函数返回当前进程id,getppid()函数返回其父进程id。这些函数对我们理解进程及后续学习有很大帮助。以后还需继续巩固!
8
因篇幅问题不能全部显示,请点此查看更多更全内容