免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1343 | 回复: 0
打印 上一主题 下一主题

《UNP》-IPC学习笔记(1):IPC综述 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-14 16:48 |只看该作者 |倒序浏览


1. 《UNP》是《UNIX Network Programming》,unix网络编程这本书的简称。作者是:W.Richard Stevens,他是unix与网络方面的专家,他写了几本书,都是unix和网络方面的经典:
(1). 《APUE》一卷,《AdvancedProgramming in the UNIX Environment》中文称为unix环境高级编程。是一本详细描述unix类系统调用的书,unix的C编程中的经典。
(2). 《UNP》二卷,第一卷是关于Unix 网络方面的API详细描述;第二卷写的是IPC,就是interprocess communication(进程间通信)。是关于Unix网络编程方面的经典。
(3). 《TCP/IP详解》三卷,第一卷写的是TCP/IP协议,第二卷写TCP/IP协议在BSD中的C实现,第三卷写事务和HTTP协议等。

这六本书,可以说一出书以来就是UNIX类黑客的最爱和必读之书。

在学习Stevens先生的书时,先对先生的在天之灵说声谢谢,由于他,我才能方便的学到这些知识。

我现在在看的是《UNP》的第二卷,IPC的应用。第一卷还没有翻过呢,打算看了第二卷之后有时间能学习第一卷的东西。

这些书中的源码可以到 Stevens 先生的主页:http://www.kohala.com/start/ 里面去下载哈。

2、IPC简介

IPC是进程间通信,就是不同进程如何传递消息和同步资源。IPC从来就是UNIX中的一个杂乱不堪的领域,虽然方案很多,但没有一个是完美的。

IPC通常分为4个领域:
(1)、信息传递(管道,fifo,消息队列)
(2)、同步(互斥锁,条件变量,读写锁,信号量)
(3)、共享内存区(匿名共享区,有名共享区)
(4)、RPC--远程调用(Solaris门,Sun RPC)

这里的IPC适用于单个进程中多个线程间的消息通信和多个进程间的消息通信。下面只说进程,如果要线程,把进换成线即可(呵呵)

3、信息共享方式

(1)、通过文件共享,线程之间通过访问同一个文件来共享文件里面的信息。要点:这样要访问文件则要穿越内核访问磁盘;当文件需要更新时,某种形式的同步是必须的。
(2)、通过共享在内核中的某些信息,对这些信息的访问操作要调用一次系统调用。如管道、System V信号量和System V 消息队列
(3)、设置一个共享内存区,如此,就不用通过内核而直接访问此内存区。需要某种形式上的同步机制。

4、书中的IPC例子:
(1)、文件服务器: C/S模式的程序,客户向服务器发送一个文件的路径名(请求),服务器向客户发送该文件的内容或者是出错信息。
(2)、生产者-消费者:一个或多个称为生产者的进程将数据放到共享缓冲区内,另外有一个或多个称为消费者的进程从缓冲区里面取数据出来。
(3)、序列号持续加1:一个或多个进程给同一个共享序列号持续加1,这个序列号在文件或者是在共享内存中。

第一个例子分析的是各种形式的消息传递,第二、三个例子分析的是共享内存和各种同步机制。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15201/showart_1996107.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP