Halo

A magic place for coding

0%

操作系统实验1--进程的创建实验

介绍

  这个实验的主要内容是关于进程的创建,让大家理解进程在操作系统中的作用,通过创建进程充分理解进程创建的过程。

实验内容

  编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符;父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。

分析与实现

题目分析

  在本实验中,进程的创建主要依赖于fork()函数的调用。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是说他们两个进程可以做相同的事(代码段相同)。
  进程创建后,系统给新创建的子进程分配资源。我们可以通过进程号pid来区分父进程和子进程。父进程返回的是子进程的pid,子进程返回的是0。详细可以参考fork过程详解

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main() {
int pid1 = fork();
if (pid1 == 0) {
printf("b\n");
}
else {
int pid2 = fork();
if (pid2 == 0) {
printf("c\n");
}
else {
printf("a\n");
}
}
return 0;
}

结果分析

  编译执行上述代码,结果如图:
进程结果
  使用流程图进行分析,思路如下:
结果分析

小结

  通过这个实验,相信大家可以很好地理解如何通过fork()来创建进程。通过创建多进程可以完成很多复杂的任务,这样可以提高CPU的工作效率。

Welcome to my other publishing channels