Linux进程控制实验:并发执行与父子进程交互

需积分: 0 1 下载量 170 浏览量 更新于2024-08-05 收藏 403KB PDF 举报
"这篇文档是关于Linux进程控制的实验报告,由岳宇轩同学完成,实验内容包括使用fork系统调用来创建多个子进程,并观察并发执行时的输出顺序。实验中涉及的知识点主要包括fork系统调用、进程并发执行、处理机资源分配以及并发执行时的不确定性。" 实验21主要探讨了在Linux环境下如何使用`fork()`系统调用创建子进程,并研究了并发执行中的行为。首先,实验要求编写一个C或C++程序,通过`fork()`创建两个子进程,即儿子进程和女儿进程。父进程会打印"Iamfather",儿子进程打印"Iamson",女儿进程则打印"Iamdaughter"。 在多进程并发执行时,由于CPU调度的随机性,子进程的执行顺序并不是固定的,这导致屏幕输出顺序的不确定性。实验中提到,可能出现"Iamfather!"、"Iamson!"和"Iamdaughter!"的多种排列顺序,这是因为每个进程在何时获取到CPU资源(处理机)是不确定的。例如: 1. 当父进程先获得处理机时,它会创建女儿进程,然后两个子进程(儿子和女儿)与父进程并发执行。如果女儿进程首先获得处理机,它将打印"Iamdaughter!",随后儿子进程获取处理机并打印"Iamson!",输出顺序为"Iamfather!"、"Iamdaughter!"、"Iamson!"。 2. 另一种情况是,父进程创建完儿子进程后,儿子进程立即获得处理机,打印"Iamson!",之后女儿进程才得到处理机并打印"Iamdaughter!",最后父进程可能再次获得处理机,输出顺序变为"Iamfather!"、"Iamson!"、"Iamdaughter!"。 实验过程中,通过多次运行程序来观察这种并发执行带来的不同输出,这是为了理解进程并发执行的非确定性和CPU调度的影响。同时,要求在代码中添加注释以解释关键步骤,以增强代码的可读性和理解性。 实验还提到了,当判断一个进程是否正在执行时,实际上是在检查该进程是否获得了处理机资源,因为只有在占有处理机的情况下,进程才能执行代码。这进一步加深了对并发执行和处理机调度的理解。 总结来说,这个实验重点在于实践和理解Linux环境下的进程创建、并发执行和CPU资源分配的概念,以及这些因素如何影响程序的运行结果。通过这样的实验,学生可以更好地掌握操作系统中关于进程控制的基础知识。