2024年4月17日发(作者:)
MSG
一、实验目的
1、了解什么是消息
2、熟悉消息传送的机理。
二、实验内容
消息的创建、发送和接收。使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )
编制一长度为1k的消息发送和接收的程序
三、实验内容指导提示
(一)、什么是消息
消息(message)是一个格式化的可变长的信息单元。消息机制允许由一个进程给其
它任意的进程发送一个消息。当一个进程收到多个消息时,可将它们排成一个消息队列。
消息使用二种重要的数据结构:一是消息首部,其中记录了一些与消息有关的信息,如消
息数据的字节数;二个消息队列头表,其每一表项是作为一个消息队列的消息头,记录了
消息队列的有关信息。
1、消息机制的数据结构
(1)消息首部
记录一些与消息有关的信息,如消息的类型、大小、指向消息数据区的指针、消息队
列的链接指针等。
(2)消息队列头表
其每一项作为一个消息队列的消息头,记录了消息队列的有关信息如指向消息队列中
第一个消息和指向最后一个消息的指针、队列中消息的数目、队列中消息数据的总字节数、
队列所允许消息数据的最大字节总数,还有最近一次执行发送操作的进程标识符和时间、
最近一次执行接收操作的进程标识符和时间等。
2、消息队列的描述符
UNIX中,每一个消息队列都有一个称为关键字(key)的名字,是由用户指定的;消
息队列有一消息队列描述符,其作用与用户文件描述符一样,也是为了方便用户和系统对
消息队列的访问。
(二)、涉及的系统调用
1. msgget( )
创建一个消息,获得一个消息的描述符。核心将搜索消息队列头表,确定是否有指定
名字的消息队列。若无,核心将分配一新的消息队列头,并对它进行初始化,然后给用户
返回一个消息队列描述符,否则它只是检查消息队列的许可权便返回。
系统调用格式:
发布评论