文档介绍:Linux源代码分析内容::欧阳杨丑位:浙江大学混合9741999年12月10日于求是Linux源代码分析ipc/•前言:在操作系统中,有些进程存在■相互制妁的关系,这些制约关系来源于并行进程的相互舍作和资源共享。为了使合作进程和资源共享进程艇协调一致的向前推进,必须使他们保持联系,一边相互了解。进程相互间册妥交换_定数量的信息,,:消电队列,信号■•.•包含的头文件:#include<linux/>#include<linux/>#include<linux/>#include<linux/>#include<linux/>#include<asm/>•msg,c中包含的函数模块:>有关进程间通信资源的属性:•键(key):一个由用小提供的醛数,用来标志某个湖g。•创建者(creator):创建运个洲电的进程的用户ID(UID)和通ID(GID).•所有者(owner):,资源的剑建者就匙资源的所有者。资源的剑笑法进程,当前的所有者进程和布姒用户具小改变资源所有者的权力。>拿数类型的说明:structipc_perm{__key_tkey;//整型,0表示private,非0表示publicushortuid; //资源拥有者前有效标识ushortgid; //资源拥有者所在组的有效标识ushortcuid;//资源创建者的有效标识ushortcgid;//资源创建者所在组的有效标识ushortmode;//访问模式ushortseq;//序列号『计算标识符];系统在创建泌息队列的同时设定了访问权限,,,,(structmsg*msg_next;longmsg_type;char*msg_spot;time_tmsg_time;shortirsg_ts;);〃消息队列中的下一个〃消息的类型〃存放消息内容的地址〃消息发送的时间〃(structipc_permmsg_perm;structmsg*msg_first;structmsg*msg_last;〃指向消息队列的第一条消息〃指向消息队列的最后一条消息time_tmsg_stime;time_tmsg_rtime;msg_ctime;structwait_queue*wvvait;structwait_queue*rwait;ushortmsg_cbytes;ushortmsg_qnum;ushortmsg_qbytes;ushortmsg_lspid;//最后发送时间//最后接收时间〃最后修改时间〃写消息进程的等待队列〃读消息进程的等待队列〃队列中消息的字节数〃队列中的消息数〃队列中消息的最大字节数//最后一个发送消息的进程的标识ushortmsgjrpid;〃最后一个接收消息的进程的标识号每一^msqid_ds结构代表一个洲息队列,悬进程读国的信庖的存储空间ostaticstructmsqid_ds*msgque[MSGMNI];定义了一个消息队列数姐msgque,数姐的无素类型指向msqid_ds结构的指针。渭鹿在队列中Jt装到来的顺序维护。进程建新魔时,这些洲息技FIFO从趴列中移去。图:Linux消息队列以下是消息传递的示意图:(longmtype; 〃消息的类型charmtext[l]; 〃消息的内容);*next;〃指针指向等待队列的下一个structtask_struct*task;/^tasMtruct存放的是进程控制块的信息*/);wait_queue代表者种者样的进程等待队列。staticintmsgbytes=0;〃代表消息的字节数staticintmsghdrs=0;staticunsignedshortmsg_seq=0;〃代表消息的序列号staticintused_queues=0;〃代表使用的消息数staticintmax_ms