linux实验进程管理

上传人:re****.1 文档编号:489467214 上传时间:2023-11-18 格式:DOC 页数:9 大小:128KB
返回 下载 相关 举报
linux实验进程管理_第1页
第1页 / 共9页
linux实验进程管理_第2页
第2页 / 共9页
linux实验进程管理_第3页
第3页 / 共9页
linux实验进程管理_第4页
第4页 / 共9页
linux实验进程管理_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《linux实验进程管理》由会员分享,可在线阅读,更多相关《linux实验进程管理(9页珍藏版)》请在金锄头文库上搜索。

1、成 绩评 阅 人评阅日期 计算机科学与技术系实 验 报 告课程名称: 计算机操作系统 实验名称: 进程管理 班 级:_ _ 学 号:_ _ 姓 名: 2011年 11 月 21 日 实验二 进程管理3.1 实验目的l 加深对进程概念的理解,明确进程和程序的区别。l 进一步认识并发执行的实质。l 分析进程争用资源的现象,学习解决进程互斥的方法。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); else while (p2=fork()=-1); if (p2=0) putchar(c); else putchar(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;i50;i+) Printf(“child%dn”,i); Else While (p2=fork()= =-1); If (p2= =0) For(i=0;i50;i+) Printf(“son%dn”,i); Else For(i=0;i50;i+) Printf(“daught

4、er%dn”,i);运行结果: Child Son Daughter 或child son child son daughter 分析:由于函数printf()输出的字符串之间不会被中断,因此,字符串内部的字符顺序输出时不变。但是,由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,处处字符串的顺序和先后随着执行的不同而发生变化。参考程序3: #include #include 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);

5、 Lockf(1,0,0);Else While (p2=fork()= =-1); If (p2= =0) Lockf(1,1,0); for(i=0;i50;i+) printf(son%dn”,i); Lockf(1,0,0); Else Lockf(1,1,0); for(i=0;i50;i+) printf(“daughter%dn”,i); Lockf(1,0,0);3.3 背景知识1、fork()创建一个新进程int fork()其中返回int取值意义如下:0:创建子进程,从子进程返回的id值大于0:从父进程返回的子进程id值-1:创建失败2、lockf(files,functi

6、on,size):用作锁定文件的某些段或者整个文件,本函数适用的头文件为:#include参数定义:int lockf(files,function,size)int files,function;long size;其中:files是文件描述符:function是锁定和解锁;1表示锁定,0表示解锁。size是锁定和解锁的字节数,若用0,表示从文件的当前位置到文件尾。实验代码1源代码:#include main() int p1,p2; while (p1=fork()=-1); if (p1=0) putchar(b); else while (p2=fork()=-1); if (p2=0

7、) putchar(c); else putchar(a);2源代码:#include main() int p1,p2; while (p1=fork()=-1); if (p1=0) for(i=0;i50;i+) printf(child%dn,i); else While (p2=fork()=-1); if (p2=0) for(i=0;i50;i+) printf(son%dn,i); else for(i=0;i50;i+) printf(daughter%dn,i);3源代码 #include #include 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);else while (p2=fork()=-1); if (p2= =0) lockf(1,1,0); for(i=0;i50;i+) printf(son%dn,i); lockf(1,0,0); else lockf(1,1,0); for(i=0;i50;i+) printf(daughter%dn,i); lockf(1,0,0);实验心得通过这次实验,对进程管理有了独到的了解。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号