1、成 绩评 阅 人评阅日期计算机科学与技术系实 验 报 告课程名称: 计算机操作系统 实验名称: 进程管理 班 级:_ _ 学 号:_ _ 姓 名: 2011 年 11 月 21 日实验二 进程管理3.1 实验目的 加深对进程概念的理解,明确进程和程序的区别。 进一步认识并发执行的实质。 分析进程争用资源的现象,学习解决进程互斥的方法。3.2 实验内容3.2.1 进程创建编写一段程序,利用系统调用 fork( )创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”; 子进程分别显示字符“b”和字符“c” 。3.2.2 进程控制
2、修改已经编号的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。如果在程序中使用系统调用 lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。3.2.3 参考程序#include main()int p1,p2;while (p1=fork()= =-1); If (p1= =0) putchar(b);elsewhile (p2=fork()=-1);if (p2=0)putchar(c);elseputchar(a);分析:从进程并发执行来看,输出 bac,acb 或 bca 都有可能。原因:fork()创建进程所
3、需要的时间要多于输出一个字符的时间,因此在主进程创建进程 2 的同时,进程 1 就输出了”b”,而进程 2 和主程序的输出次序是有随机性的,所以会出现多种可能结果。进程控制源程序:#include Main()Int p1,p2;While (p1=fork()= =-1);If (p1= =0)For(i=0;i#include main()int p1,p2,I;while (p1=fork()= =-1);if (p1= =0)Lockf(1,1,0);for(i=0;i参数定义:int lockf(files,function,size)int files,function;long
4、size;其中:files 是文件描述符:function 是锁定和解锁;1 表示锁定,0 表示解锁。size 是锁定和解锁的字节数,若用 0,表示从文件的当前位置到文件尾。实验代码1源代码:#include main()int p1,p2;while (p1=fork()=-1); if (p1=0) putchar(b);elsewhile (p2=fork()=-1);if (p2=0)putchar(c);elseputchar(a);2源代码:#include main()int p1,p2;while (p1=fork()=-1);if (p1=0)for(i=0;i#includ
5、e main()int p1,p2,i;while (p1=fork()=-1);if (p1=0)lockf(1,1,0);for(i=0;i50;i+)printf(“child%dn“,i);lockf(1,0,0);elsewhile (p2=fork()=-1);if (p2= =0)lockf(1,1,0);for(i=0;i50;i+)printf(son%dn“,i);lockf(1,0,0);elselockf(1,1,0);for(i=0;i50;i+)printf(“daughter%dn“,i);lockf(1,0,0);实验心得通过这次实验,对进程管理有了独到的了解。