欢迎来到天天文库
浏览记录
ID:9376852
大小:1.12 MB
页数:45页
时间:2018-04-29
《操作系统课程设计之消息函数的分析论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、摘要Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux采用消息队列的方式来实现消息传递。SystemV的消息队列(messagequeues)是进程之间互相发送消息的一种异步(asynchronously)方式,在这种情形之下,发送方不必等待接收方检查它的消息——即在发送完消息后,发送方就可以从事其它工作了—
2、—而接收方也不必一直等待消息。新的消息总是放在队列的末尾,接收的时候并不总是从头来接收,可以从中间来接收。消息队列允许一个或多个进程写消息,一个或多个进程读取消息。Linux维护了一系列消息队列的msgque向量表。其中的每一个单元都指向一个msqid_ds的数据结构,完整描述这个消息队列。当创建消息队列的时候,从系统内存中分配一个新的msqid_ds的数据结构并插入到向量表中。关键字:Linux,消息函数,分析45目录摘要11课设简介31.1课程设计题目31.2课程设计小组成员32LINUX的
3、消息函数主模块功能描述33LINUX的消息函数各个子模块功能描述43.1Msgget:43.2Msgsnd:53.3Msgrcv:63.4Msgctl:74LINUX的消息函数各个子模块相关函数代码分析结果94.1有关常量、函数及相关错误信息的含义:94.1.1常量含义:94.1.2错误信息含义94.1.3相关函数及文件首部含义94.2函数sys_msgget的分析164.2.1代码及注释164.3发送消息函数real_msgsnd的分析234.3.1代码分析234.4接收消息函数real_ms
4、grcv的分析284.4.1代码及注释284.5函数sys_msgctl的分析334.5.1代码及注释33心得体会42参考文献43451课设简介1.1课程设计题目LINUX的消息函数的分析1.2课程设计小组成员Msgget:孙帅,分析消息队列的创建函数(sys_msgget)以及与它相关的函数newque、findkey、msg_init,写出代码分析结果,明确组内成员的明细分工,总体把握组内成员的进度。后期组织组内成员成果汇总进行本组总体报告撰写。王亚璇,画出流程图来表示相关函数之间的相互调用
5、关系。魏蕾,负责查阅资料。Msgsnd:张婷,分析消息的发送函数(real_msgsnd)以及与它相关的函数sys_msgsnd,写出代码分析结果。王鑫坤,画出流程图来表示相关函数之间的相互调用关系。闫瞳,张飞龙,负责查阅资料。Msgrcv:樊德山,分析消息的接收函数(real_msgrcv)以及与它相关的函数sys_msgrcv,写出代码分析结果。赵松,画出流程图来表示相关函数之间的相互调用关系。鹿新宇,孙适,负责查阅资料。Msgctl:刘晶,分析消息队列的控制函数(sys_msgctl)以及
6、与它相关的函数freeque,写出代码分析结果。鞠冰霜,画出流程图来表示相关函数之间的相互调用关系。刘航,负责查阅资料。2LINUX的消息函数主模块功能描述Linux采用消息队列的方式来实现消息传递。SystemV的消息队列(messagequeues)是进程之间互相发送消息的一种异步(asynchronously)方式,在这种情形之下,发送方不必等待接收方检查它的消息——即在发送完消息后,发送方就可以从事其它工作了——而接收方也不必一直等待消息。新的消息总是放在队列的末尾,接收的时候并不总是从
7、头来接收,可以从中间来接收。消息队列允许一个或多个进程写消息,一个或多个进程读取消息。Linux维护了一系列消息队列的msgque向量表。其中的每一个单元都指向一个msqid_ds的数据结构,完整描述这个消息队列。当创建消息队列的时候,从系统内存中分配一个新的msqid_ds的数据结构并插入到向量表中。每一个msqid_ds数据结构都包括一个ipc_perm的数据结构和进入这个队列的消息的指针。另外,Linux保留队列的改动时间,例如上次队列写的时间等。Msqid_ds队列也包括两个等待队列:一
8、个用于向消息队列写,另一个用于读。45每一次一个进程试图向写队列写消息,它的有效用户和组的标识符就要和队列的ipc_perm数据结构的模式比较。如果进程可以向这个队列写,则消息会从进程的地址空间写到msg数据结构,放到消息队列的最后。每一个消息都带有进程间约定的,应用程序指定类型的标记。但是,因为Linux限制了可以写的消息的数量和长度,可能会没有空间容纳消息。这时,进程会被放到消息队列的写等待队列,然后调用调度程序选择一个新的进程运行。当一个或多个消息从这个消息队列中读出去的时候会被唤醒。从队
此文档下载收益归作者所有