实验三 Linux进程的创建与控制

一、实验目的

(1)加深对进程概念的理解,明确进程和程序的区别。

(2)进一步认识并发执行的实质。

(3)分析进程竞争资源现象,学习解决进程互斥的方法。

(4)了解Linux系统中进程通信的基本原理。

二、实验预备内容

阅读Linux的fork.c源文件,分析进程的创建过程。

三、实验内容

1. 进程的家族关系

在主程序中用3个fork()调用,最后输出一个字符或字符串,运行此简单的程序,观察并分析运行结果。

2. 进程的创建

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

3. 进程的控制

修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。

如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

四、实验源程序(仅供参考)

1. 用进程的家族关系

main()

{

fork();

fork();

fork();

printf(“S”);

}

查看运行结果并分析进程的创建和调用过程。

2.进程的创建

#include

main()

{ int p1,p2;

while((p1=fork())==-1); /创建进程p1,创建成功后退出/

if(p1= =0) /CPU运行p1/

putchar(…b?); /输出字符b/

else

{

while((p1=fork())==-1); /创建进程p2, 创建成功后退出/

if(p1= =0)

putchar(…c?);

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信