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

操作系统实验报告

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

武汉工程大学实验报告 专业班级:网工01 姓名: 何彬 学号:1305120411 课程名称:操作系统 实验成绩: 指导教师: 蔡敦波 实验名称:进程控制与进程间通信

一、实验目的:

1、掌握进程的概念,明确进程和程序的区别。 2、认识和了解并发执行的实质。 3、了解什么是信号。

4、熟悉LINUX系统中进程之间软中断通信的基本原理。 二、实验内容:

1、进程的创建(必做题)

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

<参考程序>

运行的结果是bca. 首先创建进程p1,向子进程返回0,输出b.又创建进程p2,向子进程返回0,输出c,同时向父进程返回子进程的pid,输出a

2、 修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。(必做题) <参考程序>

# include int main()

{ int p1, p2, i;

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

for(i=0;i<500;i++)

printf(“child%d\\n”,i); else

{ while((p2=fork())= =-1); If(p2= =0)

for(i=0;i<500;i++) printf(“son%d\\n”,i); else

for(i=0;i<500;i++)

printf(“daughter%d\\n”,i); } }

运行的结果是如上图所示. 首先创建进程p1,向子进程返回0,并

for语句循环输出child +i字符串.又创建进程p2,向子进程返回0,输出字符串son+i,同时向父进程返回子进程的pid,输出字符串duaghter +i ,各打印5次。

3

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

a b c d 图1 进程树

图2 进程树

子进程 父进程

b c a d e 实验一代码及结果

图一 进程树实验结果及相关代码

图二 进程树实验结果及相关代码

4、编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进 程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止: Child process 1 is killed by parent! Child process 2 is killed by parent!

父进程等待两个子进程终止后,输出以下信息后终止: Parent process is killed! <参考程序> #include #include #include

#include #include int wait_mark;

void waiting(),stop(); void main() {int p1, p2;

signal(SIGINT,stop); while((p1=fork())==-1); if(p1>0) {①

while((p2=fork())==-1); If(p2>0) { ②

/*在父进程中*/

/*在父进程中*/

5

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