操作系统程设计.docVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统程设计

东北大学秦皇岛分校 计算机与通信工程学院 操作系统课程设计 设计题目Linux的IPC消息实现机制分析 专业名称 班级学号 学生姓名 指导教师 设计时间 课程设计任务书 专业:: 学生姓名(签名): 设计题目:Linux的IPC消息实现机制的分析 一、设计实验条件 实验室 二、设计任务及要求 Linux的IPC消息实现机制的分析 三、设计报告的内容 设计题目与设计任务(设计任务书)Linux的IPC消息实现机制的分析进程间通信(IPC)的一个主要通信方式是通过消息,通过对Linux内核进行分析,说明Linux用于消息实现的主要数据结构,以及实现的方法。在Linux或Windows系统环境下,实现一个系统进程管理器,能够显示当前系统的活动进程信息(进程名、用户、优先级、内存使用等),并能结束或创建特定进程。可参考Windows下“任务管理器”功能。前言(绪论)在操作系统中,有些进程存在着相互制约的关系这些制约关系来源于并行进程的相互合作和资源共享。为了使合作进程和资源共享进程能协调一致的向前推进,必须使他们保持联系,一边相互了解。进程相互间需要交换一定数量的信息,以便协调一致共同完成指定的任务. 这种机制就叫做进程间通信或IPC.在linux 中支持UNIX SYSTEM V 的三种通信机制: 消息队列, 信号量和共享内存.现就消息队列这种机制进行分析设计主体Linux的IPC消息实现机制1、 一个大型的应用系统,往往需要众多进程相互协作,进程间通信(IPC,Interprocess Communication)的重要性就显而易见。Linux下的进程通信手段基本是从Uinx平台上的进程通信手段继承而来。而对Unix发展做出重大贡献的两大主力ATT的贝尔实验室及BSD在进程间通信方面侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“System V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接字(Socket)的进程间通信机制。Linux则把两者都继承下来。 Linux支持多种通信机制,常用的有:信号、管道、System V兼容的消息队列、信号量和共享内存。这里我们重点讨论的是消息队列的形式。见图1 图1 System V 进程间通信机制 Linux采用消息队列的方式来实现消息传递。System V的消息队列(message queues)是进程之间互相发送消息的一种异步(asynchronously)方式,在这种情形之下,发送方不必等待接收方检查它的消息——即在发送完消息后,发送方就可以从事其它工作了——而接收方也不必一直等待消息。 新的消息总是放在队列的末尾,接收的时候并不总是从头来接收,可以从中间来接收。消息队列允许一个或多个进程写消息,一个或多个进程读取消息。Linux维护了一系列消息队列的msgque向量表。其中的每一个单元都指向一个msqid_ds的数据结构,完整描述这个消息队列。当创建消息队列的时候,从系统内存中分配一个新的msqid_ds的数据结构并插入到向量表中每一个msqid_ds数据结构都包括一个ipc_perm的数据结构和进入这个队列的消息的指针。另外,Linux保留队列的改动时间,例如上次队列写的时间等。Msqid_ds队列也包括两个等待队列:一个用于向消息队列写,另一个用于读。 每一次一个进程试图向写队列写消息,它的有效用户和组的标识符就要和队列的 ipc_perm数据结构的模式比较。如果进程可以这个队列写,则消息会从进程的地址空间写到msg数据结构,放到消息队列的最后。每一个消息都带有进程间约定的,应用程序指定类型的标记。但是,因为Linux限制了可以写的消息的数量和长度,可能会没有空间容纳消息。这时,进程会被放到消息队列的写等待队列,然后调用调度程序选择一个新的进程运行。当一个或多个消息从这个消息队列中读出去的时候会被唤醒。从队列中读是一个相似的过程。进程的访问权限一样被检查。一个读进程可以选择是不管消息的类型从队列中读取第一条消息还是选择特殊类型的消息。如果没有符合条件的消息,读进程会被加到消息队列的读等待进程,然后运行调度程序。当一个新的消息写到队列的时候,这个进程会被唤醒,继续运行。 2、 负责:分析消息队列的创建部分以及与它相关的函数,写出代码分析结果,明确相关函数之间的相互调用关系。 负责:分析消息队列的发送部分以及与它相关的函数,写出代码分析结果,明确相关函数之间的相互调用关系。 负责:分析消息队列的接收部分以及与它相关的函数,写出代码分析结果,明确相关函数之间的相互调用关系。 负责:分析消息队列的控制 3、System V IPC 基础 3.1 文件名到键值 #include sys/typ

您可能关注的文档

文档评论(0)

技术支持工程师 + 关注
实名认证
文档贡献者

仪器公司技术支持工程师

1亿VIP精品文档

相关文档