首页 实验三 进程通信 实验报告

实验三 进程通信 实验报告

举报
开通vip

实验三 进程通信 实验报告实验三 进程通信 实验报告 北京联合大学 信息学院 “操作系统”课程 实验报告 实 验 名 称: 实验三 进程间通信 姓名(学号): 专 业: 计算机科学与技术 编 制 时 间: 2010年5月2日 指 导 教 师: 北京联合大学-信息学院编制 0 (一)信号机制实验 1信号机制实验 1.1 题目描述 1、编写程序:用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子...

实验三 进程通信 实验报告
实验三 进程通信 实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 北京联合大学 信息学院 “操作系统”课程 实验报告 实 验 名 称: 实验三 进程间通信 姓名(学号): 专 业: 计算机科学与技术 编 制 时 间: 2010年5月2日 指 导 教 师: 北京联合大学-信息学院编制 0 (一)信号机制实验 1信号机制实验 1.1 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目描述 1、编写程序:用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process1 is killed by parent! Child process2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 2、分析利用软中断通信实现进程同步的机理 1.2 实验目标和意义 1、了解什么是信号 2、熟悉LINUX系统中进程之间软中断通信的基本原理 2 实验原理和实验设备 所涉及的中断调用 1、kill( ) 系统调用格式 int kill(pid,sig) 参数定义 int pid,sig; 其中,pid是一个或一组进程的标识符,参数sig是要发送的软中断信号。 (1)pid>0时,核心将信号发送给进程pid。 (2)pid=0时,核心将信号发送给与发送进程同组的所有进程。 (3)pid=-1时,核心将信号发送给所有用户标识符真正等于发送进程的有效用户标识号的进程。 2、signal( ) 预置对信号的处理方式,允许调用进程控制软中断信号。 系统调用格式 signal(sig,function) 头文件为 #include 参数定义 signal(sig,function) int sig; void (*func) ( ) 其中sig用于指定信号的类型,sig为0则 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示没有收到任何信号,余者如下表: 值 名 字 说 明 01 SIGHUP 挂起(hangup) 02 SIGINT 中断,当用户从键盘按^c键或^break键时 03 SIGQUIT 退出,当用户从键盘按quit键时 04 SIGILL 非法指令 05 SIGTRAP 跟踪陷阱(trace trap),启动进程,跟踪代码的执行 06 SIGIOT IOT指令 07 SIGEMT EMT指令 08 SIGFPE 浮点运算溢出 09 SIGKILL 杀死、终止进程 10 SIGBUS 总线错误 11 SIGSEGV 段违例(segmentation violation),进程试图去访问其虚地址空间以外的位 置 12 SIGSYS 系统调用中参数错,如系统调用号非法 13 SIGPIPE 向某个非读管道中写入数据 14 SIGALRM 闹钟。当某进程希望在某时间后接收信号时发此信号 15 SIGTERM 软件终止(software termination) 16 SIGUSR1 用户自定义信号1 17 SIGUSR2 用户自定义信号2 18 SIGCLD 某个子进程死 19 SIGPWR 电源故障 function:在该进程中的一个函数地址,在核心返回用户态时,它以软中断信号的序号作为参数调用该函数,对除了信号SIGKILL,SIGTRAP和SIGPWR以外的信号,核心自动地重新设置软中断信号处理程序的值为SIG_DFL,一个进程不能捕获SIGKILL信号。 function 的解释如下: (1)function=1时,进程对sig类信号不予理睬,亦即屏蔽了该类信号; (2)function=0时,缺省值,进程在收到sig信号后应终止自己; (3)function为非0,非1类整数时,function的值即作为信号处理程序的指针。 3实验步骤 3.1 实验步骤( 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ) 参考程序 #include #include #include void waiting( ),stop( ); int wait_mar k; main( ) { int p1,p2,stdout; while((p1=fork( ))= =-1); /*创建子进程p1*/ if (p1>0) { while((p2=fork( ))= =-1); /*创建子进程p2*/ if(p2>0) { wait_mark=1; signal(SIGINT,stop); /*接收到^c信号,转stop*/ waiting( ); kill(p1,16); 3 /*向p1发软中断信号16*/ kill(p2,17); 5 /*向p2发软中断信号17*/ kill(stdout, 7); wait(0); /*同步*/ wait(0); printf("Parent process is killed!\n"); exit(0); } else { wait_mark=1; signal(SIGINT,stop); signal(17,stop); /*接收到软中断信号17,转stop*/ waiting( ); lockf(stdout,1,0); printf("Child process 2 is killed by parent!\n"); lockf(stdout,0,0); exit(0); } } else { wait_mark=1; signal(SIGINT,stop); signal(16,stop); /*接收到软中断信号16,转stop*/ waiting( ); lockf(stdout,1,0); printf("Child process 1 is killed by parent!\n"); lockf(stdout,0,0); exit(0); } } void waiting( ) { while(wait_mark!=0); } void stop( ) { wait_mark=0; } 运行结果 图1 修改之后 图2 图3 屏幕上无反应,按下^C后,显示 Parent process is killed! 分析原因 上述程序中,signal( )都放在一段程序的前面部位,而不是在其他接收信号处。这是因为signal( )的执行只是为进程指定信号值16或17的作用,以及分配相应的与stop( )过程链接的指针。因而,signal( )函数必须在程序前面部分执行。 本方法通信效率低,当通信数据量较大时一般不用此法。 六、思考 1、该程序段前面部分用了两个wait(0),它们起什么作用, 2、该程序段中每个进程退出时都用了语句exit(0),为什么, 3、为何预期的结果并未显示出, 4、程序该如何修改才能得到正确结果, 图4 图5 5、不修改程序如何得到期望的输出, 5 实验小结
本文档为【实验三 进程通信 实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_792768
暂无简介~
格式:doc
大小:88KB
软件:Word
页数:9
分类:互联网
上传时间:2017-09-29
浏览量:328