笔记:IPC通信机制的认识 z

本文介绍了XSI IPC通信机制的基础概念,包括消息队列、信号量和共享内存。详细解释了标识符与键的作用及使用场景,并探讨了权限结构和配置限制等内容。

笔记: XSI IPC (SYSV IPC)

XSI IPC包含了三种通信机制:消息队列,信号量,共享内存。


1.标志符(identifiers)和键(keys)

内核中每个IPC结构都用一个非负整数加以引用,这个非负整数称为“标志符”。例如,给一个消息队列发送或者接收消息,只需要使用这个队列的标志符即可。

标志符是IPC对象的内部名称。

为了使多个合作进程能够在同一个IPC对象上会合,需要提供一个外部名称方案。键(keys)IPC对象的外部名称。每个IPC对象与一个键相关联,这个键作为该对象的外部名称。


当创建一个IPC对象时(调用msgget,semget或者shmget),都应指定一个键。键的数据类型是key_t。键由内核变换成标志符。

客户端程序和服务器程序在同一个IPC结构上汇合的三种方式:

1>. 如果key的值被指定为IPC_PRIVATE,服务器程序会创建一个新的IPC结构,返回identifier值;服务器程序需要将这个返回值存储到某一个地方(比如一个文件内),以便让客户端程序能够获取。

IPC_RIVATE key还可以用在父子进程中。父进程通过IPC_PRIVATE创建一个新的IPC结构,返回identifier值;父进程fork()一个子进程,然后可以将identifier的值作为exec()的一个参数传给子进程。达到父子进程在同一个IPC结构上通信的目的。

2>. 客户端程序和服务器端程序可以将一个指定的key定义到一个公用的头文件中。然而,指定的key不能保证它是否已经关联到其他的IPC结构上。

3>.客户端程序和服务器端程序可以传递一个pathname和一个project ID,调用ftok()函数来产生一个key;然后将这个key值放到一个公用的头文件中。


三个get函数(msgget, semget, shmgetg)都有两个类似的参数:一个key和一个flag。一个新的IPC结构(通常,由服务器)被在以下两种情况下创建:key被指定为IPC_PRIVATEkey被指定为一个唯一值(改值没有和其他IPC结构关联),flag里的IPC_CREATE位被置位。


2. Permission Structure

每个IPC结构会关联一个 ipc_perm的数据结构。这个数据结构定义了IPC的权限访问域:

struct ipc_perm {

uid_t uid; /* owner's effective user id */

gid_t gid; /* owner's effective group id */

uid_t cuid; /* creator's effective user id */

gid_t cgid; /* creator's effective group id */

mode_t mode; /* access modes */

.

.

.

};


Access mode List:

Permission

Bit

user-read

0400

user-write (alter)

0200

group-read

0040

group-write (alter)

0020

other-read

0004

other-write (alter)

0002


3. Configuration Limits

ipcs -l

cat /proc/sysvipc/msg

cat /proc/sysvipc/shm

cat /proc/sysvipc/sem

cat /poc/sys/kernel/msgmax

cat /poc/sys/kernel/msgmnb

cat /poc/sys/kernel/msgmni

cat /proc/sys/kernel/shmall

cat /proc/sys/kernel/shmmax

cat /proc/sys/kernel/shmmni

ipcrm






文件:笔记:IPC通信机制.pdf
大小:150KB
下载:下载

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值