Linux进程控制

一、实验目的:

*进一步认识并发(并行)程序的概念,区别顺序执行和并发(并行)执行

  *分析进程争用临界资源的现象,学习解决进程互斥的方法

  *进一步了解对进程控制的系统调用方法。

  *通过进程通信设计达到了解UNIX或Linux系统中进程通信的基本原理。

二、实验环境

一台至少具有256MB内存的计算机,并已安装Red Hat Linux9的Linux操作系统

三、实验内容:

1.编写一段程序(程序名为fork.c),使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动,让每一个进程在屏幕上显示一个字母:父进程显示字符“a”,子进程分别显示“b”和“c”。

1)进入Linux系统,进入vi编辑器;

2)输入源程序代码(如图一图二所示),进入命令模式后,输入“: wq 文件名”就可以运行该程序,运行结果如下图三所示;

        Linux进程控制
        Linux进程控制                      

2.修改在实验编程中已编写的程序(程序名为fork.c)

1)如果是父进程,显示“Parent Process:a”;如果是子进程,分别显示“This is child1(pid=****)process: b”和“This is child2(pid=****)process: c”,其中的****分别指明子进程的pid号。源程序如图一图二所示,程序运行结果如下图三所示。

Linux进程控制

3. 在程序(程序名为lockf.c)中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥,                          源程序如图一图二所示,运行结果如图三所示

Linux进程控制
Linux进程控制     

4. 编写程序实现进程的管道通信(设定程序名为pipe.c),使用系统调用pipe()建立一条管道线,两 个子进程分别向管道写一句话,而父进程则从管道中读出两个子进程的信息

(1)进入Linux,进入vi编辑器,输入源程序代码(如下图一图二所示);

(2)进入命令模式,再输入“:wq 文件名”,查看运行结果,如下图三所示。

 Linux进程控制
Linux进程控制                                                      

5. 编制一段程序,使其实现进程的软中断通信(设定程序名为softint.c)。

(1)进入vi编辑器,输入源程序(如图一图二图三所示);

(2)运行程序结果如下图四所示。

 Linux进程控制

  Linux进程控制