- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
106Linux操作系统 SYSV进程间通信
10.6??SYS V 进程间通信;10.6.1 三者共有的特性
IPC资源 表示单独的消息队列、共享内存或是信号量集合 ;oflag包括读写权限,还可以包含IPC_CREATE和IPC_EXCL标志位。它们组合的效果如下:
(1)指定key为IPC_PRIVATE保证创建一个唯一的IPC资源。
(2)设置oflag参数的IPC_CREATE标志位但不设置IPC_EXCL。如果相应key的IPC资源不存在,则创建一个IPC资源,否则返回已存在的IPC资源。
(3)oflag参数的IPC_CREATE和IPC_EXCL同时设置。如果相应key的IPC资源不存在,则创建一个IPC资源。否则返回一个错误信息。
;(b)XXXctl() 均提供IPC_SET、IPC_STAT和IPC_RMID命令。前两者用来设置或得到IPC资源的状态信息,IPC_RMID用来释放IPC资源。 ;共同的数据结构
每一类IPC资源都有一个ipc_ids结构的全局变量用来描述同一类资源的公有数据,三个全局变量分别是semid_ds,msgid_ds和shmid_ds。
struct ipc_ids {
int size; /* entries数组的大小*/
int in_use; /* entries数组已使用的元素个数*/
int max_id;
unsigned short seq;
unsigned short seq_max;
truct semaphore sem; /*控制对ipc_ids结构的访问*/
spinlock_t ary;/*自旋锁控制对数组entries的访问*/
struct ipc_id* entries;
};
struct ipc_id {
struct kern_ipc_perm* p;};; 数组entries的每一项指向一个kern_ipc_perm结构,kern_ipc_perm结构表示每一个IPC资源的属性,用来控制操作权限。
struct kern_ipc_perm{
key_t key;/*用户提供的键值,为XXXget()所用*/
uid_t uid; /*创建者用户ID*/
gid_t gid; /*创建者组ID*/
uid_t cuid; /*所有者用户ID*/
gid_t cgid; /*所有者组ID*/
mode_t mode; /*操作权限,包括读、写等*/
unsigned long seq;
};
因为每个IPC资源描述符的第一个成员就是kern_ipc_perm结构。因此,我们可以认为数组entries 的每一非空项均指向一个IPC资源。;IPC资源ID与entries数组下标的联系
(1)当创建一个IPC资源时,
调用函数ipc_addid()从相应ipc_ids结构的entries数组中找出第一个未使用的项然后返回其下标index。
返回IPC资源ID
IPC资源ID = SEQ_MULTIPLIER * seq + index
SEQ_MULTIPLIER是可用资源的最大数目,seq是ipc_ids结构中的seq。每当分配一个IPC资源时,ipc_ids结构中的seq就增一。
(2)当知道IPC资源ID时,可通过
IPC资源ID % SEQ_MULTIPLIER 得到其在entries数组中的index,从而找到相应的IPC资源。
(3)why
保证在一段时期内IPC资源ID的唯一性?
;10.6.2? 信号量
信号量是具有整数值的对象,它支持P、V原语。进程可以利用信号量实现同步和互斥
SYSV支持的信号量实质上是一个信号量集合,由多个单独的信号量组成。我们称SYSV信号量为信号量集合,而单个的信号量直接称为信号量。
信号量集合在内核中用结构sem_array表示;struct sem_array {
struct kern_ipc_perm sem_perm;
time_t sem_otime; /* 最近一次操作时间 */
time_t sem_ctime; /* 最近一次的改变时间 */
struct sem *sem_base; /*指向第一个信号量 */
struct sem_queue *sem_pending;/* 挂起操作队列*/
struct sem_queue **sem_pending_last;
struct sem_undo *undo;
unsigned long sem_nsems;/*
您可能关注的文档
- .2 《向量的直角坐标运算》说课设计.ppt
- .1集合的概念 高中数学必修一.ppt.ppt
- .2 中心对称图形.ppt
- .1简单随机抽样.ppt
- .2 函数表示法.ppt
- .1小数的产生和意义.ppt
- .2 最小生成树( Minimum Spanning Tree).ppt
- .2 直线的两点式方程.ppt
- .2 离散型随机变量的分布列.ppt
- .2 有理数的除法.ppt
- 2025年一级建造师考试《水利水电工程管理与实务》冲刺必刷卷.docx
- 2025年一级建造师考试《水利水电工程管理与实务》逆袭破题卷1.docx
- 2025年一级建造师考试《市政工程管理与实务》冲刺必刷卷 .docx
- 2025年一级造价工程师考试《建设工程计价》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价管理》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(安装专业)》预习卷.docx
- 2025年一级造价工程师考试《建设工程造价案例分析(土建专业)》预习卷.docx
- 2025年中级会计考试《会计实务》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》冲刺提分卷.docx
- 2025年中级会计考试《财务管理》全真模拟卷.docx
最近下载
- 中国共产主义青年团团章.doc VIP
- 照明工程数量表计算.xlsx VIP
- 2024汽车维修工时定额.docx VIP
- 内网及邮箱用户名列表.doc VIP
- 新解读《GB_T 18295 - 2001油气储层砂岩样品扫描电子显微镜分析方法》最新解读.docx VIP
- DB11T 945.1-2023建设工程施工现场安全防护、场容卫生及消防保卫标准 第1部分:通则.pdf VIP
- JGT 160-2017 混凝土用机械锚栓.docx VIP
- 建筑施工安全生产治本攻坚三年行动方案(2024-2026年).docx VIP
- 2024年内蒙古巴林左旗林业和草原局国有公益林护林员招聘真题.docx VIP
- 鲁教版(五四学制)六年级上册地理期末复习重点知识点提纲(实用!).docx VIP
文档评论(0)