Linux进程控制
一、实验目的:
*进一步认识并发(并行)程序的概念,区别顺序执行和并发(并行)执行。
*分析进程争用临界资源的现象,学习解决进程互斥的方法。
*进一步了解对进程控制的系统调用方法。
*通过进程通信设计达到了解UNIX或Linux系统中进程通信的基本原理。
二、实验环境
一台至少具有256MB内存的计算机,并已安装Red Hat Linux9的Linux操作系统。
三、实验内容:
1.编写一段程序(程序名为fork.c),使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动,让每一个进程在屏幕上显示一个字母:父进程显示字符“a”,子进程分别显示“b”和“c”。
(1)进入Linux系统,进入vi编辑器;
(2)输入源程序代码(如图一图二所示),进入命令模式后,输入“: wq 文件名”就可以运行该程序,运行结果如下图三所示;
2.修改在实验编程中已编写的程序(程序名为fork.c)
(1)如果是父进程,显示“Parent Process:a”;如果是子进程,分别显示“This is child1(pid=****)process: b”和“This is child2(pid=****)process: c”,其中的****分别指明子进程的pid号。源程序如图一图二所示,程序运行结果如下图三所示。
3. 在程序(程序名为lockf.c)中使用系统调用lockf()来给每个进程加锁,可以实现进程之间的互斥, 源程序如图一图二所示,运行结果如图三所示
4. 编写程序实现进程的管道通信(设定程序名为pipe.c),使用系统调用pipe()建立一条管道线,两 个子进程分别向管道写一句话,而父进程则从管道中读出两个子进程的信息
(1)进入Linux,进入vi编辑器,输入源程序代码(如下图一图二所示);
(2)进入命令模式,再输入“:wq 文件名”,查看运行结果,如下图三所示。
5. 编制一段程序,使其实现进程的软中断通信(设定程序名为softint.c)。
(1)进入vi编辑器,输入源程序(如图一图二图三所示);
(2)运行程序结果如下图四所示。