操作系统原理与Linu系统结课实验报告

上传人:汽*** 文档编号:488983543 上传时间:2023-03-16 格式:DOCX 页数:10 大小:311.93KB
返回 下载 相关 举报
操作系统原理与Linu系统结课实验报告_第1页
第1页 / 共10页
操作系统原理与Linu系统结课实验报告_第2页
第2页 / 共10页
操作系统原理与Linu系统结课实验报告_第3页
第3页 / 共10页
操作系统原理与Linu系统结课实验报告_第4页
第4页 / 共10页
操作系统原理与Linu系统结课实验报告_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《操作系统原理与Linu系统结课实验报告》由会员分享,可在线阅读,更多相关《操作系统原理与Linu系统结课实验报告(10页珍藏版)》请在金锄头文库上搜索。

1、操作系统原理与Linux系统结课实验报告实验六 进程间通信)学 院:信息科学与工程学院班 级:网络li-i班姓 名: * * *号:*20i4 年 5 月 20 号实验题目: 进程间通信*姓名: *一、实验目的1、掌握Linux系统进程软中断通信的基本原理和实现方法;2、了解管道通信的特点,掌握管道通信的使用方法;3、了解消息队列通信机制及原理,掌握消息队列相关系统调用的使用方法和 功能。二、实验内容1、编写一个进程软中断通信程序,要求父进程生成子进程,父进程发送信号 并等待,子进程接收信号并完成某种功能,然后自我终止并唤醒父进程;2、编写一个进程管道通信程序,要求建立一个pipe,同时父进程

2、产生一个 子进程,子进程向pipe中写入一个字符串,父进程从中读出改字符串,并每隔 3秒钟输出一次打印一次;3、编写一个消息队列通信的程序,要求创建一个消息的模板结构体,并对声 明变量做初始化,然后创建一个消息队列,并对该队列中发送一条消息。三、程序程序一:/进程中断通信#include stdio.h#include signal.h#include #includesignal.h#include#include stdlib.h#include #include sys/stat .h#include fcntl .h#include #includeti me.h#include st

3、rings.h#include string.h#include stdio.h#include sys/ipc.h#include sys/msg.hstruct msg long msg_types;char msg_buf511;int main(void)int qid;int pid;int len;struct msg pmsg;pmsg.msg _ty pes = get pid();spri ntf (pmsg.msg_buf,hell o!t his is :%dn0, get pid();len = str len (pmsg.msgjbuf);if ( (qid= msg

4、get (IPC_PRIVATE, IPC_CREAT | 0666) 0 ) perror( msgget);exit(l);if ( (msgsnd(qid, & pmsg, len, 0) 1、进程中断通信进程软中断通信实验结果显示:先输出打印Paren t: Signal 17 will be send to Child!It is signal 17 processing function!睡眠 10 秒钟后,再输出打印 Chil d:A signal from my pare nt is received!It is signal 17 processing function!Pa

5、rent: finished!嘎 ubuntuubuntu-virtual-machine:面ubuntuubuntu-virtual machine Isexamples.deskto” jianpingcai 公共的模板视藏图片文档 T载音乐桌面 ubuntuubuntu-virtual-machinecd 桌面ubuntugubuntu-virtual-machine:-/桌面 $ gcc -c test .c test.c:在函数 Fain中:test.c:10:5:警告:传stgnaV的第2个秦数时在不兼容的指针类型间转换默认启 用In file included from test

6、:3:0:/usr/include/stgnal.h: 191:23:附注: 需要类型_sighandler t t 但实塞的类型为in t ()test.C:21:5:警告:隐式声明肓内建函数PxiT不兼容默认启用ubuntugubuntu-virtual-machinegcc tes-o nytest.o testae:在函数 Fmin中:test.c:10:5:警告:传stgnaV的第2个秦数时在不兼容的指针类型间转换默认启 用In file included from test:3:0:/usr/include/signal.h: 101:23:附注:需要类型_sighandler t

7、31 但实裁的类型为in t ()test.c:21:5:警告:隐式声明肓内建函数Pxi疋不兼容默认启用 ubuntugubuntu-virtualmachine:-/桌面$ ./mytest ,oParent: Signal 17 will be send to Child!1It is signal. 17 processing function 11Child:A signal from ny parent is received 11It is signal 17 processing function!Parent: finished 11 ubuntuubuntu-virtual-

8、machine:-/桌面$ |2、进程管道通信进程管道通信实验结果显示:实验结果是每隔3秒钟,无限循环的输出打印一次字符串“ &*& ”。终端ubuntugubuntu-virtual-machine:-/桌面$ gcc y testl*c 二一二二.-:在函数 f main* 中:testl.c:16:8:警告:隐式声明与内建函数xif不兼容默认启用testl*c:macc -otestl.c:在函数Fain中:testl.c:16:8:箸告:隐式声明与内建函数rexif不兼容默认启用 ubuntugubuntu-virtual-machine./nytestl.o&*&*&*& g*lfr

9、*g.&*g.& *g &*& & *& &*& &*g. &*& g*it*g. &*g.g &*& &*& &*& &*& &*g. &*& g*it*g. &*& &*& &*& &g *&3、消息队列通信消息队列通信实验结果显示:第一次执行mytest2.o文件得出的实验结果是Successfully send a message to the queue:0 ;第二次执行mytest2.o文件得出的实验结果是Successfully send a message to the queue:32769 ;以后每次执行mytest2.o文件得出数值都是在上一次的的基础上+32769,如:

10、 第三次执行mytest2.o文件得出的实验结果是Successfully send a message to the queue:65538 。五、结论1、软中断通信提供了一个简单的处理异步事件的方法,用户进程可以向自 己发送信号以中断程序的执行,并自动转入指定的软中断处理函数中去执行用户 自行安排的处理内容,处理完毕后再返回用户进程继续执行;实验中,指定的型号类型为17号即为用户自定义信号2类型,用fork() 创建子进程,再用系统调用signal ()让父进程捕捉键盘的中断信号,之后, 父进程用系统调用kill()向子进程发出信号,子进程捕捉到信号后输出A signal from my parent is received!2、管道是一种遵循先进先出原则的数据结构,也就是说,先进入管道的数 据,也能先从管道中读出,数据一旦读取后,就会自动删除。管道通信,以管道 数据结构作为内部数据存储方式,以文件系统作为数据存储媒体,将一个写进程 与一个读进程连接在一起,实现两个进程间的通信;实验中

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号