版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉工程大学实验报告专业班级:网工01姓名: 何彬学号:1305120411 课程名称:操作系统实验成绩: 指导教师: 蔡敦波 实验名称:进程控制与进程间通信一、实验目的:1、掌握进程的概念,明确进程和程序的区别。2、认识和了解并发执行的实质。3、了解什么是信号。4、熟悉LINUX系统中进程之间软中断通信的基本原理。二、实验内容:1、进程的创建(必做题) 编写一段程序,使用系统调用fork( )创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b” 和“c”。试观察记录屏幕上的显示结果,并分析原因。<参考程序&
2、gt; 运行的结果是bca. 首先创建进程p1,向子进程返回0,输出b.又创建进程p2,向子进程返回0,输出c,同时向父进程返回子进程的pid,输出a2、 修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。(必做题)<参考程序># include<stdio.h> int main() int p1, p2, i; while(p1=fork()= = -1); if(p1= =0) for(i=0;i<500;i+) printf(“child%dn”,i); else while(p2=fork()= =-
3、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); 运行的结果是如上图所示. 首先创建进程p1,向子进程返回0,并for语句循环输出child +i字符串.又创建进程p2,向子进程返回0,输出字符串son+i,同时向父进程返回子进程的pid,输出字符串duaghter +i ,各打印5次。3、编写程序创建进程树如图1和图2所示,在每个进程中显示当前进程识别码和父进程识别码。(选做题)a父进程子进程图1 进程树bcdadbce图2 进程
4、树实验一代码及结果 图一 进程树实验结果及相关代码 图二 进程树实验结果及相关代码4、编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进 程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止: Child process 1 is killed by parent!Child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止: Parent process is killed!<参
5、考程序> #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()int p1, p2;signal(SIGINT,stop);while(p1=fork()=-1);if(p1>0)/*在父进程中*/while(p2=fork()=-1); If(p2>0)/*在父进程中*/ wait_ma
6、rk=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,0);printf("child process 2 is killed by parent!n");lockf(1,0,0);exit(0); else/*在子进程1中*/ wait_mark=1; signal(
7、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;实验要求:、运行程序并分析结果。中断后,父进程收到子进程退出状态,依次杀死子进程2子进程1,等待子进程完全退出后,杀死父进程、如果把signal(SIGINT,stop)放在号和号位置,结果会怎样并分析原因。改变signal(SIGINT,stop)
8、的位置后发现,只是杀死了子进程2和父进程,而子进程1没有被杀死。是因为子进程1没有设置对信号的处理操作,则键盘中断时,仍然无法将其杀死。、该程序段前面部分用了两个wait(0),为什么?wait(0)是为了让前面的子进程完全执行完,才可以进行下面的操作。、该程序段中每个进程退出时都用了语句exit(0),为什么? 首先是为了让进程退出,其次是向父进程返回退出时的状态;5、修改上面的程序,增加语句signal(SIGINT,SIG_IGN)和语句signal(SIGQUIT,SIG_IGN),再观察程序执行时屏幕上出现的现象,并分析其原因。<参考程序># include<std
9、io.h># include<signal.h># include<unistd.h>main() int pid1, pid2;int EndFlag=0; Pf1=0; Pf2=0;void IntDelete() kill(pid1,10); kill(pid2,12);EndFlag=1;void Int1() printf(“child process 1 is killed by parent !n”); exit(0);void Int2() printf(“child process 2 is killed by parent !n”); exit
10、(0);main() int exitcode; signal(SIGINT,SIG_IGN); signal(SIGQUIT,SIG_IGN);while(pid1=fork()=-1); if(pid=0) signal(SIGUSER1,Int1);signal(SIGQUIT,SIG_IGN);pause();exit(0); else while(pid2=fork()= =-1); if(pid2=0) signal(SIGUSER1,Int1);signal(SIGQUIT,SIG_IGN);pause();exit(0); else signal(SIGINT,IntDelet
11、e); waitpid(-1,&exitcode,0); printf(“parent process is killed n”); exit(0); 实验要求:运行程序并分析结果。【思考题】1、 系统是怎样创建进程的?系统通过调用fork()函数创建子进程2、 当首次调用新创建进程时,其入口在哪里?入口应该是创建进程的PID3、 当前运行的程序(主进程)的父进程是什么?当前运行程序的父进程是应该是该进程的上一个进程coefficient of linear expansion for pipe, unit: mm/(m. c); Working temperature of t fo
12、r pipeline and installation the ambient temperature difference of unit: ; L-pipe length unit: m; Drain pipe, water pipe, steam pipe and high pressure pipe connection or design a clear need to take over seats, should be suitable to take over, weld must have adequate strength. Drain funnel should be located in the line of sight and parts and pipes have bias and does not jeopardize the equipment and perso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗卫生事业单位招聘考试模拟试卷及答案详解
- 2026年山东省地方病防治技能竞赛(理论知识)全真模拟试题及答案
- 2026年金属冶炼(炼钢)安全生产管理人员核心知识题库(含答案)
- 2026年会计岗位面试问题及答案
- 2026年福建摩托车考试历年真题及完整答案(夺冠系列)
- 2026福建省莆田市对外贸易有限责任公司招聘1人笔试参考题库及答案
- 农村饮水安全巩固提升项目水资源论证报告书
- (2026年)云南省楚雄禄丰市法官逐级遴选考试题及答案
- 磷矿开采项目土地复垦方案报告书
- 2025华夏银行校园招聘笔试考试安排笔试历年典型考题及考点剖析附带答案详解2套
- 2026高速轮轨材料耐磨损性能改进技术研究及铁路设备寿命评估模型
- 2026年大学辅导员招聘面试高频题
- 2026年高考云南卷物理高考真题
- 2026年北京市朝阳区中考数学二模试卷(含答案)
- 蓄力高三赶考期末课件-高二下学期期末考试动员主题班会
- 镇静镇痛患者的健康教育
- 2024人教版(五线谱)一年级音乐下册 第一单元《爱的摇篮》教案
- 古浪县新堡红湾沟石膏矿矿产资源开发与恢复治理方案
- 人民日报招聘笔试题库2026
- 鲁科版二年级劳动实践指导手册全册教案
- 施工项目检查考核制度
评论
0/150
提交评论