版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉工程大学实验报告专业班级:姓名: 学号:课程名称:操作系统实验成绩: 指导教师: 实验名称:进程控制与进程间通信一、实验目的:1、掌握进程的概念,明确进程和程序的区别。2、认识和了解并发执行的实质。3、了解什么是信号。4、熟悉LINUX系统中进程之间软中断通信的基本原理。二、实验内容:1、进程的创建 编写一段程序,使用系统调用fork( )创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b” 和“c”。试观察记录屏幕上的显示结果,并分析原因。 <参考程序> # include<stdio.h&
2、gt; 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); 2、 修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。<参考程序># include<stdio.h>main() int p1, p2, i; while(p1=fork()= = -1); if(p1= =0) for(i=0;i<
3、500;i+) printf(“child%dn”,i); else while(p2=fork()= =-1); If(p2= =0) for(i=0;i<500;i+) printf(“son%dn”,i); else for(i=0;i<500;i+) printf(“daughter%dn”,i); 3、编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进 程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止: Child p
4、rocess 1 is killed by parent!Child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止: Parent process is killed!<参考程序> #include<stdio.h>#include<signal.h>#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>int wait_mark;void waiting(),stop();void main()i
5、nt p1, p2;signal(SIGINT,stop);while(p1=fork()=-1);if(p1>0)/*在父进程中*/while(p2=fork()=-1); If(p2>0)/*在父进程中*/ wait_mark=1; waiting(0); kill(p1,10); kill(p2,12); wait( ); wait( ); printf("parent process is killed!n"); exit(0); else/*在子进程2中*/ wait_mark=1;signal(12,stop);waiting();lockf(1,1
6、,0);printf("child process 2 is killed by parent!n");lockf(1,0,0);exit(0); else/*在子进程1中*/ wait_mark=1; signal(10,stop); waiting(); lockf(1,1,0); printf("child process 1 is killed by parent!n"); lockf(1,0,0); exit(0);void waiting() while(wait_mark!=0);void stop() wait_mark=0;三、实验要求
7、运行程序并分析结果。四、实验结果及分析第一题:代码运行结果 分析:首先判断子进程是否创建好,如果创建好则返回0,首先输出b,以此类推然后再输出c,a所以最后结果为bca。第二题代码运行结果分析:首先判断子进程是否判断好。然后进入一个for循环语句,i的值从0一直到499依次输出。下面的结果依次类推。第三题代码:运行结果:分析:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后,最后输出结果。【思考题】1、 系统是怎样创建进程的?答:linux 系统创建进程都是用 fork()系统调用创建子进程由 fork()系统调用创建的新进程被称为子进程。该函数被调用一次,但返回两次。如果fork()进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程号。2、 当首次调用新创建进程时,其入口在哪里?答:窗口、任务管理器里面的"新建任务" ,然,也可以去dos里面。3、 当前运行的程序(主进程)的父进程是什么?答
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力工程临时用工合同
- 办公楼新风系统安装协议
- 生态农业招投标与合同绿色生产
- 通信基站电力安全检查规定
- 通信行业会计专员财会聘用合同
- 企业内训会议室租赁合同样本
- 文化市场物业人员聘用合同
- 通信设备销售合同管理细则
- 入职承诺书:品牌推广策略篇
- 桑拿洗浴中心租赁合同样本
- 情绪智力量表EIS
- 《 民航服务心理学》考试题及参考答案
- 利用相似三角形测高说课稿
- 高二期中考试家长会
- 圆锥曲线的光学性质及其应用(理科)课件
- 《水浒传》导读5武松课件
- 分光光度计使用
- 拖欠房租起诉书【5篇】
- 12种气候类型表解
- 人教版选修5第一章第三节有机化合物的命名(俗称、习惯、系统命名法)课件
- 2021学堂在线网课《生活英语读写》课后作业单元考核答案
评论
0/150
提交评论