第一范文网 - 专业文章范例文档资料分享平台

实验二 进程管理(linux)

来源:用户分享 时间:2025/11/11 12:42:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验二 进程管理(Linux)

一、 二、

实验目的与任务

1)加深对进程概念的理解,明确进程和程序的区别。 2)进一步认识并发执行的实质 三、

预习要求 1)进程的概念

2)进程控制的概念及内容 3)进程的并发执行 4)熟悉互斥的概念

5)用到的Linux函数有:fork(),lockf()等。 四、

实验基本原理

使用fork()系统调用来创建一个子进程,父进程和子进程并发执行,交替输出结果。使用lockf()系统调用对临界区进行加锁操作,实现对共享资源的互斥使用。 五、

六、

实验内容 1)进程的创建

编写一段程序,使用系统调用fork( ) 创建两个子程序。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。运行程序10次,观察记录屏幕上的显示结果,并分析原因。

2)进程的控制

修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程间的互斥,观察并分析出现的现象。

实验仪器与设备(或工具软件)

实验设备:计算机一台,软件环境要求: Linux操作系统和gcc编译器。

实验类型

本实验为设计性实验。

(1)进程的创建参考程序如下:

#include main() { int p1,p2;

while((p1=fork())==-1); //p父进程 p1子进程1 if(p1!=0) {

while(((p2=fork())==-1); //p父进程 p2子进程2 if(p2==0) putchar('b'); else putchar('c'); }

else putchar('a'); }

运行结果:略 cab bca bac 分析: 原因:

Fork()函数有三个返回值: 1. -1 执行不成功

2. 0 表示当前正在执行子进程

3. 其他数值 表示当前正在执行父进程,值是子进程的进程标识符 PID 4. 获取当前进程的标识符 getpid() 5. 获取当前进程的父进程的标识符getppid() (2)进程的控制参考程序如下 #include main() {int p1,p2,i;

while ((p1=fork())==-1); // 父进程p,子进程p1 if(p1==0)

{for(i=0;i<500;i++) printf(\} else {

while((p2=fork())==-1);//父进程p,子进程p2 if(p2==0) for(i=0;i<500;i++)

printf(\ else for(i=0;i<500;i++) printf(\} }

运行结果:略

分析:由于函数printf()输出和字符串之间不会被中断,因此字符串内部的字符顺序输出不变。但是由于进程并发执行时的调度顺序和父进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。

进程加锁后的参考程序如下: #include main() {int p1,p2,i;

while ((p1=fork())==-1); if(p1==0) {

lockf(1,1,0); for(i=0;i<500;i++) printf(\// 等待一会sleep() lockf(1,0,0); } else {

while((p2=fork())==-1); if(p2==0)

{

lockf(1,1,0) for(i=0;i<500;i++)

printf(\ lockf(1,0,0)

else {

lockf(1,1,0) for(i=0;i<500;i++)

printf(\ lockf(1,0,0) } } }

运行结果:略 分析:学生自己完成

(3)编写程序创建进程树如图1和图2所示,在每个进程中显示当前进程识别码和父进程

识别码。(选做题)

父进程

b c d 图1 进程树

图2 进程树

子进程 b c a a d e 参考代码及结果如下:

搜索更多关于: 实验二 进程管理(linux) 的文档
实验二 进程管理(linux).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8asin3h00f9x6b742rz56u75f0b43501d9w_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top