一、实验目的
熟练Linux创建进程fork操作。
二、实验内容
- 使用Vim编辑器,在服务器
os_exp/exp2_process/fork_two_children.c
文件上编写一个程序实现一个进程创建两个子进程(只创建两个子进程,多的不要)。 - 查看进程树(命令
pstree -p pid
,详情见进程相关命令)
提示:
- 使用
unsigned sleep(unsigned seconds)
挂起进程,以便打印进程树 - 打印进程树命令
pstree -p pid
,或者用命令pstree -p $(pidof fork_two_children)
(不是好主意,因为大家的可执行程序都是这个名称)
三、实验要求
实验基本要求见:所有实验要求
截止时间:见课堂派
实验报告提交:提交到课堂派,同时上传pdf和markdown文档
三、评分
本次作业满分为10分。
- 只创建两个子进程,才能得满分。多于两个子进程,最多得7分。
- 代码原理及结果正确,得5分
- 分析源代码,得5分
深入分析Linux中的以下源代码,建议使用Linux 0.12:(参照上课讲的printf源码分析)
- 学号最后一位数为奇数:PCB,不能简单给出属性的含义,如
state
表示进程状态,还应给出其取值,进程状态是怎么转换的 - 学号最后一位数为偶数:fork
四、 实验报告
如果很尽力去做了,但代码运行不正确,或者部分功能未能实现。没关系,将你所做的努力写到报告里,依然可以得高分,因为实验重在展示你所做的努力,而非最后结果。
- 做了什么
- 碰到什么样的问题
- 针对遇到的问题,你做了哪些努力
如果运行结果正确,按以下方式来写:
- 结合源代码,解释代码背后的原理(对于别人不能一眼就能明白你代码要做什么的,你要给出解释)
- 打印出进程树
以下是代码运行正确的报告格式:
[!Warning]
实验报告内容应结合源代码分析,而不是贴个源代码,对源代码进一步解释,源代码只是服务于你的报告内容。
因此,应该按模块来讲解,而不是把整个代码文件贴上去,做增强版代码解释。
以下模板只是作为参考,可以根据需要,增加和删减章节。