Halo

A magic place for coding

0%

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

介绍

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

实验内容

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

分析与实现

题目分析

   在本实验中,进程的创建主要依赖于 fork () 函数的调用。fork () 函数通过系统调用创建一个 ** 与原来进程几乎完全相同的进程 ,也就是说他们两个进程可以做相同的事( 代码段相同 )。
   进程创建后,系统给新创建的 ** 子进程 ** 分配资源。我们可以通过进程号 pid 来区分父进程和子进程。
父进程返回的是子进程的 pid,子进程返回的是 0**。详细可以参考 [fork 过程详解](https://leungyukshing.github.io/archives/fork% E8% BF%87% E7% A8%8B% E8% AF% A6% E8% A7% A3.html)。

代码实现

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