《Linux编程及应用-任继平》09第09章 System V进程间通信.pptVIP

《Linux编程及应用-任继平》09第09章 System V进程间通信.ppt

  1. 1、本文档共31页,可阅读全部内容。
  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文档。上传文档
查看更多
第9章 System V进程间通信 1 2 System V IPC基础 消息队列 3 信号量通信机制 4 共享内存 2017-4-11 2 ipcs 2017-4-11 3 key值和ID值 Linux系统为每个IPC机制都分配了唯一的ID,所有针对该IPC机制的操作都使用对应的ID。因此,通信的双方都需要通过某个办法来获取ID值。显然,创建者根据创建函数的返回值可获取该值,但另一个进程如何实现呢?显然,Linux两个进程不能随意访问对方的空间(一个特殊是,子进程可以继承父亲进程的数据,实现父亲进程向子进程的单向传递),也就不能够直接获取这一ID值。 为解决这一问题,IPC在实现时约定使用key值做为参数创建,如果在创建时使用相同的key值将得到同一个IPC对象的ID(即一方创建,另一方获取的是ID),这样就保证了双方可以获取用于传递数据的IPC机制ID值。 2017-4-11 4 ftok 2017-4-11 人民邮电出版社出版 杨宗德编著 5 示例 第9章 System V进程间通信 1 2 System V IPC基础 消息队列 3 信号量通信机制 4 共享内存 2017-4-11 7 消息队列 2017-4-11 8 消息队列属性 2017-4-11 9 消息struct msg结构体 2017-4-11 10 创建消息队列 2017-4-11 11 消息队列属性控制 2017-4-11 12 发送信息到消息队列 2017-4-11 13 发送信息到消息队列(2) 2017-4-11 14 从消息队列接收信息 2017-4-11 15 消息队列应用实例 见教材。 第9章 System V进程间通信 1 2 System V IPC基础 消息队列 3 信号量通信机制 4 共享内存 2017-4-11 17 信号量通信机制概念图 2017-4-11 18 信号量集合属性 2017-4-11 19 信号量结构 2017-4-11 20 创建信号量集合 2017-4-11 21 控制信号量集合、信号量 2017-4-11 22 2017-4-11 23 信号量操作 2017-4-11 24 使用信号量实现生产消费问题 生产消费问题是一个经典的数学问题,要求生产者-消费者在固定的仓库空间条件下,生产者每生产一个产品将占用一个仓库空间,生产者生产的产品库存不能越过仓库的存储量,消费者每消费一个产品将增加一个仓库空间,消费者在仓库产品为0时不能再消费。 本例中采用信号量来解决这个问题,为了便于理解,本例中使用了两个信号量,一个用来管理消费者(以下为sem_produce),一个用来管理生产者(以下为sem_custom),即sem_produce表示当前仓库可用空间的数量,sem_custom用来表示当前仓库中产品的数量。 对于生产者来说,其需要申请的资源为仓库中的剩余空间,因此,生产者在生产一个产品前,申请sem_produce信号量,当此信号量的值大于0,即有可用空间,将生产产品,并将sem_produce的值减去1(因为占用了一个空间);同时,当其生产一个产品后,当前仓库的产品数量增加1,需要将sem_custom信号量自动加1。 对于消费者来说,其需要申请的资源为仓库中的产品,因此,消费者在消费一个产品前,将申请sem_custom信号量,当此信号量的值大于0时,即有可用产品,将消费一个产品,并将sem_custom信号量的值减去(因为消费了一个产品),同时,当消费一个产品,当前仓库的剩余空间增加1,需要将sem_produce信号量自动加1。 第9章 System V进程间通信 1 2 System V IPC基础 消息队列 3 信号量通信机制 4 共享内存 2017-4-11 26 共享内存IPC原理 2017-4-11 27 共享内存属性 2017-4-11 28 共享内存与管道对比 2017-4-11 29 创建共享内存 2017-4-11 30 共享内存控制 2017-4-11 31 共享内存应用示例 共享内存的权限管理示例 共享内存处理应用示例 代码见教材。

您可能关注的文档

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档