linux消息机制详解,Linux的IPC消息实现机制及要点解析.doc

东北大学秦皇岛分校

计算机与通信工程学院

操作系统课程设计

设计题目Linux的IPC消息实现机制分析

专业名称班级学号学生姓名指导教师设计时间202015.01.15

课程设计任务书

专业:: 学生姓名(签名):

设计题目:Linux的IPC消息实现机制的分析

一、设计实验条件

实验室

二、设计任务及要求

仔细阅读设计题目要求,对设计内容进行详细分析、设计。每组同学需有明确分工,并在提交的课程设计报告中能够充分体现具体分工情况,设计报告中体现个人分工部分的内容不应低于正文60%。报告内容应包括题目分析、总体设计、代码实现(如果是内核分析题目此部分为内核主要代码和算法等的分析)、结果展示和课程设计总结几个组成部分。报告格式按照“计算机与通信工程学院课程设计模板”中的要求编写。设计报告的内容

设计题目与设计任务(设计任务书)设计:进程间通信(IPC)的一个主要通信方式是通过消息,通过对Linux内核进行分析,说明Linux用于消息实现的主要数据结构,以及实现的方法。System V的消息队列(message queues)是进程之间互相发送消息的一种异步(asynchronously)方式,在这种情形之下,发送方不必等待接收方检查它的消息——即在发送完消息后,发送方就可以从事其它工作了——而接收方也不必一直等待消息。新的消息总是放在队列的末尾,接收的时候并不总是从头来接收,可以从中间来接收。消息队列允许一个或多个进程写消息,一个或多个进程读取消息。Linux维护了一系列消息队列的msgque向量表。其中的每一个单元都指向一个msqid_ds的数据结构,完整描述这个消息队列。当创建消息队列的时候,从系统内存中分配一个新的msqid_ds的数据结构并插入到向量表中每一个msqid_ds数据结构都包括一个ipc_perm的数据结构和进入这个队列的消息的指针。另外,Linux保留队列的改动时间,例如上次队列写的时间等。Msqid_ds队列也包括两个等待队列:一个用于向消息队列写,另一个用于读。 每一次一个进程试图向写队列写消息,它的有效用户和组的标识符就要和队列的 ipc_perm数据结构的模式比较。如果进程可以这个队列写,则消息会从进程的地址空间写到msg数据结构,放到消息队列的最后。每一个消息都带有进程间约定的,应用程序指定类型的标记。但是,因为Linux限制了可以写的消息的数量和长度,可能会没有空间容纳消息。这时,进程会被放到消息队列的写等待队列,然后调用调度程序选择一个新的进程运行。当一个或多个消息从这个消息队列中读出去的时候会被唤醒。从队列中读是一个相似的过程。进程的访问权限一样被检查。一个读进程可以选择是不管消息的类型从队列中读取第一条消息还是选择特殊类型的消息。如果没有符合条件的消息,读进程会被加到消息队列的读等待进程,然后运行调度程序。当一个新的消息写到队列的时候,这个进程会被唤醒,继续运行。消息队列的控制sys_msgctl)以及与它相关的函数freeque,写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例25%。

负责:分析消息的发送函数(real_msgsnd)以及与它相关的函数sys_msgsnd,写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例25%。

负责:分析消息的接收函数(real_msgrcv)以及与它相关的函数sys_msgrcv,写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例25%。

负责:分析消息队列的创建函数(sys_msgget)以及与它相关的函数newque、findkey、msg_init,写出代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。所占工作比例25%。

2.前言(绪论)(设计的目的、意义等)linux 中支持UNIX SYSTEM V 的三种通信机制: 消息队列, 信号量和共享内存. 现就消息队列这种机制进行分析,以达到充分理解Linux内核代码及消息队列机制的具体实现过程中的数据结构及方法。

3.LINUX的消息函数各个子模块分析

3.1Msgrcv:(负责)

功能:用msgrcv系统调用从msqid消息队列中读取一条信息并将其放入消息段指针msgp指向的结构。msgsz给mtext的字节数, 如果所接收的消息比msgsz大且msgflg&MSG_NOERROR为真,则按msgsz的大小截断而不通知调用进程。从消息队列中取得指定类型的消息.系统调用从由msqid指定的消息队列中读取一个由msgtyp指定类型的消息到由msgp指向的缓冲区中,同样的,该缓冲区的结构如前所述,包括消息类型和消息正文.msgsz为可接收的消息正文的字节数.若接收到的消息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值