操作系统实验报告四.doc

操作系统实验报告四.doc

ID:55584258

大小:105.00 KB

页数:3页

时间:2020-05-19

操作系统实验报告四.doc_第1页
操作系统实验报告四.doc_第2页
操作系统实验报告四.doc_第3页
资源描述:

《操作系统实验报告四.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、课程实验报告课程名称计算机操作系统班级实验日期姓名学号实验成绩实验名称实验4进程通信实验目的及要求1、加深理解进程通信的方法与原理;2、掌握如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信。实验环境操作系统:linuxUnbuntu11.10实验工具:Vmware实验内容1、了解系统调用pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程。2、编写一C语言程序,使其用管道来实现父子进程间通信。子进程向父进程

2、发送字符串“issendingamessagetoparent!”;父进程则从管道中读出子进程发来的消息,并将其显示到屏幕上,然后终止。3、运行该程序,观察、记录并简单分析其运行结果。算法描述及实验步骤三、有名管道、无名管道系统调用1、创建无名管道的系统调用2、读写管道的系统调用3、文件上锁、开锁系统调用4、命名管道创建系统调用四、Linux消息缓冲通信的系统调用1、创建一个消息队列或获取已存在消息队列的标识2、发送一条消息到指定的消息队列3、从消息队列接收消息4、对消息队列的操作五、共享内存通信的系统调用1、创建或获取一个共享内存2

3、、将共享内存附接到进程的虚拟地址空间3、将共享内存从进程的地址空间断开4、对共享内存的操作调试过程及实验结果总结1、管道当进程向管道中写时,数据就复制不予考虑了共享的数据页;从管道中读时,字节从共享页中按照FIFO的顺序复制出来。当所有进程完成管道的操作后,管道的i结点和共享数据页被释放1、避免死锁:为了保证管道操作过程中不至于因为用户的疏忽而死锁,Linux采用以下措施来避免死锁:当进程因读或写等待时,要检查管道的另一端是否已经关闭,如果发现对方已经关闭则直接返回,不再等待。当进程关闭管道时,要检查管道的另一端是否正处于等待状态,如

4、果是,则要先唤醒对方,然后再关闭管道。如果进程需要实现互斥,因为管道是文件,可以使用对文件上锁和开锁的系统调用。2、对共享内存操作的系统调用:shmget()IPC_STAT:返回包含在指定的shmid相关数据结构中的状态信息,并把它放置在户存储区中的*buf指针所指的数据结构中。执行此命令的进程必须有读取允许权。IPC_SET:对于指定的shmid,为它设置有效用户和小组标识符和操作存取权。IPC_RMID:删除指定的shmid以及与它相关的共享存储区的数据结构。SHM_LOCK:在内存中锁定指定的共享存储区,必须是超级用户才可以进

5、行此项操作。附录#include#includeintmain(){intp1;intfiledes[2];charbuf[100];pipe(filedes);while((p1=fork())==-1);if(p1==0)//son{sprintf(buf,"%s","issendingamessagetoparent!");write(filedes[1],buf,sizeof(buf));}else//father{read(filedes[0],buf,sizeof(buf));prin

6、tf("%s",buf);}return0;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。