操作系统课程设计---linux的消息函数的分析

操作系统课程设计---linux的消息函数的分析

ID:9859893

大小:877.50 KB

页数:22页

时间:2018-05-12

操作系统课程设计---linux的消息函数的分析_第1页
操作系统课程设计---linux的消息函数的分析_第2页
操作系统课程设计---linux的消息函数的分析_第3页
操作系统课程设计---linux的消息函数的分析_第4页
操作系统课程设计---linux的消息函数的分析_第5页
资源描述:

《操作系统课程设计---linux的消息函数的分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程设计报告课程名称操作系统课题名称LINUX的消息函数的分析专业通信工程班级0502学号1姓名金国兴指导教师颜国风、谭小兰2008年7月1日21湖南工程学院课程设计任务书课程名称操作系统课题LINUX的消息函数的分析专业班级通信0502学生姓名金国兴学号1指导老师颜国风谭小兰审批任务书下达日期2008年7月1日任务完成日期2008年7月4日21任务书一、设计内容与设计要求1.设计内容以学号除以4求余数,余数相同的同学为一组选择相应的课题完成课程设计。掌握操作系统的工作原理,培养小组合作能力,培养阅读大型程序代码的能力。本小组的设计课题为:设计三

2、LINUX的消息函数的分析要求是:根据设计书所提供的基础知识,分析相关代码,得到相关的框图,写出设计报告。代码的位置:icp/msg.c2.设计要求认真阅读代码,与同组同学合作,通过充分的讨论得到相关的结论二、进度安排第18周星期二14:30--18:30星期三12:30--14:30星期四12:30--14:3021目录一、课程设计任务书1二、目录3三、课题的主要功能4四、课题的功能模块的划分5五、主要功能的实现7六、调试分析9七、总结14八、附件:15课程设计评分表2121一、课题主要功能:Linux采用消息队列的方式来实现消息传递。Syst

3、emV的消息队列(messagequeues)是进程之间互相发送消息的一种异步(asynchronously)方式,在这种情形之下,发送方不必等待接收方检查它的消息——即在发送完消息后,发送方就可以从事其它工作了——而接收方也不必一直等待消息。新的消息总是放在队列的末尾,接收的时候并不总是从头来接收,可以从中间来接收。消息队列允许一个或多个进程写消息,一个或多个进程读取消息。Linux维护了一系列消息队列的msgque向量表。其中的每一个单元都指向一个msqid_ds的数据结构,完整描述这个消息队列。当创建消息队列的时候,从系统内存中分配一个新的

4、msqid_ds的数据结构并插入到向量表中。每一个msqid_ds数据结构都包括一个ipc_perm的数据结构和进入这个队列的消息的指针。另外,Linux保留队列的改动时间,例如上次队列写的时间等。Msqid_ds队列也包括两个等待队列:一个用于向消息队列写,另一个用于读。每一次一个进程试图向写队列写消息,它的有效用户和组的标识符就要和队列的ipc_perm数据结构的模式比较。如果进程可以向这个队列写,则消息会从进程的地址空间写到msg数据结构,放到消息队列的最后。每一个消息都带有进程间约定的,应用程序指定类型的标记。但是,因为Linux限制了可

5、以写的消息的数量和长度,可能会没有空间容纳消息。这时,进程会被放到消息队列的写等待队列,然后调用调度程序选择一个新的进程运行。当一个或多个消息从这个消息队列中读出去的时候会被唤醒。从队列中读是一个相似的过程。进程的访问权限一样被检查。一个读进程可以选择是不管消息的类型从队列中读取第一条消息还是选择特殊类型的消息。如果没有符合条件的消息,读进程会被加到消息队列的读等待进程,然后运行调度程序。当一个新的消息写到队列的时候,这个进程会被唤醒,继续运行。在小组中,我做了函数msgctl()的分析。Linux消息函数Msgctl()功能描述:功能:在消息队

6、列上执行指定的操作。根据参数的不同和权限的不同,可以执行检索、删除等等操作。主要由sys_msgctl执行。说明:系统调用提供一系列消息控制操作,操作动作由cmd定义,以下cmd定义值表明了各操作动作的定义..IPC_STAT:将msqid相关的数据结构中各个元素的当前值放入由buf指向的结构中.21.IPC_SET:将msqid相关的数据结构中的下列各元素设置为由buf指向的结构中的对应值.msg_perm.uidmsg_perm.gidmsg_perm.modemsg_qbytes该命令只能由有效UID等于msg_perm.cuid或msg_

7、perm.uid的进程或有效UID有合适权限的进程操作.只有具有合适权限的用户才能增加msg_qbytes的值..IPC_RMID:删除由msqid指示的消息队列.将它从系统中删除并破坏相关的数据结构.该命令只能由有效UID等于msg_perm.cuid或msg_perm.uid的进程或有效UID有合适权限的进程操作.返回值:调用成功则返回值为0,否则为-1.其它子函数功能:Msgget:(刘纯负责)功能:取得一个消息队列。调用者提供消息队列的键标(用于表示一个消息队列的唯一的名字),当这个队列存在的时候,这个系统调用负责返回这个队列的标识号;如

8、果这个队列不存在,就创立一个消息队列,然后返回这个消息队列的标识号。主要由sys_msgget执行。Msgsnd:(付馨霞负责)功能:发

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

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

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