实验二进程管理(Linux)实验类型本实验为设计性实验
实验目的与任务1)加深对进程概念的理解,明确进程和程序的区别2)进一步认识并发执行的实质三、预习要求1)进程的概念2)进程控制的概念及内容3)进程的并发执行4)熟悉互斥的概念5)用到的Linux函数有:fork(),lockf()等
四、实验基本原理使用fork()系统调用来创建一个子进程,父进程和子进程并发执行,交替输出结果
使用lockf()系统调用对临界区进行加锁操作,实现对共享资源的互斥使用
五、实验仪器与设备(或工具软件)实验设备:计算机一台,软件环境要求:Linux操作系统和gcc编译器
六、实验内容1)进程的创建编写一段程序,使用系统调用fork()创建两个子程序
当此程序运行时,在系统中有一个父进程和两个子进程活动
让每一个进程在屏幕上显示一个字符:父进程显示字符方”;子进程分别显示字符’b”和字符“c”
运行程序10次,观察记录屏幕上的显示结果,并分析原因
2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因
如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程间的互斥,观察并分析出现的现象
{(1)进程的创建参考程序如下:#includemain(){intp1,p2;while((p1=fork())==-1);//p父进程p1子进程1if(p1
=0){while(((p2=fork())==-1);//p父进程p2子进程2if(p2==0)putchar('b');elseputchar('c');}elseputchar('a');}运行结果:略cabbcabac分析:原因:Fork()函数有三个返回值:1
-1执行不成功2
0表示当前正在执行子