文档库 最新最全的文档下载
当前位置:文档库 › 操作系统第三次实验报告

操作系统第三次实验报告

西安邮电大学

(计算机学院)

课内实验报告

实验名称:进程间通信

专业名称:网络工程

班级:

学生姓名:

学号(8位):

指导教师:任东陕

实验日期:2014年5月29日

一. 实验目的及实验环境

实验目的

Linux系统的进程通信机构 (IPC) 允许在任意进程间大批量地交换数据。本实验的目的

是了解和熟悉Linux支持的消息通讯机制及信息量机制。

实验环境:

Window7、Linux环境下

二. 实验内容

(1)消息的创建,发送和接收。

①使用系统调用msgget (), msgsnd (), msgrev (), 及msgctl () 编制一长度为1k的

消息的发送和接收程序。

②观察上面的程序,说明控制消息队列系统调用msgctl () 在此起什么作用?

(2)共享存储区的创建、附接和段接。

使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。

(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。

三.方案设计

(1)消息的创建,发送和接收。

①使用系统调用msgget (), msgsnd (), msgrev (), 及msgctl () 编制一长度为1k的消

息的发送和接收程序。

②观察上面的程序,说明控制消息队列系统调用msgctl () 在此起什么作用?

(2)共享存储区的创建、附接和段接。

使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。

(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。

2.共享存储区的创建,附接和断接

(1)为了便于操作和观察结果,用一个程序为“引子”,先后fork( )两个子进程,SERVER

和 CLIENT,进行通信。

(2)SERVER端建立一个KEY为75的共享区,并将第一个字节置为-1.作为数据空的标志.等

待其他进程发来的消息.当该字节的值发生变化时,表示收到了该消息,进行处理.然后再次

把它的值设为-1.如果遇到的值为0,则视为结束信号,取消该队列,并退出

SERVER.SERVER每接收到一次数据后显示”(server)received”.

(3)CLIENT端建立一个为75的共享区,当共享取得第一个字节为-1时, Server端空闲,可

发送请求. CLIENT 随即填入9到0.期间等待Server端再次空闲.进行完这些操作后,

CLIENT 退出. CLIENT每发送一次数据后显示”(client)sent”.

(4)父进程在SERVER和CLIENT均退出后结束.

四.测试数据及运行结果

(1)消息的创建,发送和接收:

正常测试及运行结果:

(2)共享存储区的创建,附接和断接

正常测试及运行结果:

五.总结

1.实验过程中遇到的问题:

对于调用的函数,看的不太懂

解决办法:

请教同学,查资料,最终得以解决

2.对设计及调试过程的心得体会。

此次试验,我明白了进程间的通信是怎么回事,当结果出来时,感觉挺神奇的,我觉得,不过是写代码还是其他,兴趣很重要,对自己兴趣的培养也很重要,以后会用心学习这门课程

相关文档