UNIX网络编程 : 第2版. 第2卷, 进程间通信(中文版)

出版时间:2010-7  出版社:人民邮电出版社  作者:(美)W. Richard Stevens  页数:454  
Tag标签:无  

前言

大多数重要的程序都涉及进程间通信(Inter process Communication,IPC)。这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程序更好。从历史角度看,应用程序有如下几种构建方法。(1)用一个庞大的程序完成全部工作。程序的各部分可以实现为函数,函数之间通过参数、返回值和全局变量来交换信息。(2)使用多个程序,程序之间用某种形式的IPC进行通信。许多标准的Unix工具都是按这种风格设计的,它们使用shell管道(IPC的一种形式)在程序之间传递信息。(3)使用一个包含多个线程的程序,线程之间使用某种IPC。这里仍然使用术语IPC,尽管通信是在线程之间而不是在进程之间进行的。还可以把后两种设计形式结合起来:用多个进程来实现,其中每个进程包含几个线程。在这种情况下,进程内部的线程之间可以通信,不同的进程之间也可以通信。上面讲述了可以把完成给定任务所需的工作分到多个进程中,或许还可以进一步分到进程内的多个线程中。在包含多个处理器(CPU)的系统中,多个进程也许可以(在不同的CPU上)同时运行,或许给定进程内的多个线程也能同时运行。因此,把任务分到多个进程或线程中有望减少完成指定任务的时间。

内容概要

  本书是一部UNIX网络编程的经典之作!进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存)及远程过程调用(Solaris门、Sun RPC)。附录中给出了测量各种IPC形式性能的方法。  本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

作者简介

作者:(美国)W.Richard StevensW.Richard Stevens,国际知名的UNIX和网络专家,备受赞誉的技术作家他1951年2月5日出生于赞比亚,后随父母回到美国中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位,1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁,1990年他回到图森,从事专业技术写作和咨询工作写下了多种经典的传世之作。

书籍目录

第一部分 简介 第1章 简介     1.1 概述     1.2 进程、线程与信息共享     1.3 IPC对象的持续性     1.4 名字空间     1.5 fork、exec和exit对IPC对象的影响     1.6 出错处理:包裹函数     1.7 Unix标准     1.8 书中IPC例子索引表     1.9 小结     习题  第2章 Posix IPC     2.1 概述     2.2 IPC名字     2.3 创建与打开IPC通道     2.4 IPC权限     2.5 小结     习题  第3章 System V IPC     3.1 概述     3.2 key_t键和ftok函数     3.3 ipc_perm结构     3.4 创建与打开IPC通道     3.5 IPC权限     3.6 标识符重用     3.7 ipcs和ipcrm程序     3.8 内核限制     3.9 小结     习题 第二部分 消息传递 第4章 管道和FIFO     4.1 概述     4.2 一个简单的客户-服务器例子     4.3 管道     4.4 全双工管道     4.5 popen和pclose函数     4.6 FIFO     4.7 管道和FIFO的额外属性     4.8 单个服务器,多个客户     4.9 对比迭代服务器与并发服务器     4.10 字节流与消息     4.11 管道和FIFO限制     4.12 小结     习题  第5章 Posix消息队列     5.1 概述     5.2 mq_open、mq_close和mq_unlink函数     5.3 mq_getattr和mq_setattr函数     5.4 mq_send和mq_receive函数     5.5 消息队列限制     5.6 mq_notify函数     5.7 Posix实时信号     5.8 使用内存映射I/O实现Posix消息队列     5.9 小结     习题  第6章 System V消息队列     6.1 概述     6.2 msgget函数     6.3 msgsnd函数     6.4 msgrcv函数     6.5 msgctl函数     6.6 简单的程序     6.7 客户-服务器例子     6.8 复用消息     6.9 消息队列上使用select和poll     6.10 消息队列限制     6.11 小结     习题 第三部分 同步 第7章 互斥锁和条件变量     7.1 概述     7.2 互斥锁:上锁与解锁     7.3 生产者-消费者问题     7.4 对比上锁与等待     7.5 条件变量:等待与信号发送     7.6 条件变量:定时等待和广播     7.7 互斥锁和条件变量的属性     7.8 小结     习题  第8章 读写锁     8.1 概述     8.2 获取与释放读写锁     8.3 读写锁属性     8.4 使用互斥锁和条件变量实现读写锁     8.5 线程取消     8.6 小结     习题  第9章 记录上锁     9.1 概述     9.2 对比记录上锁与文件上锁     9.3 Posix fcntl记录上锁     9.4 劝告性上锁     9.5 强制性上锁     9.6 读出者和写入者的优先级     9.7 启动一个守护进程的唯一副本     9.8 文件作锁用     9.9 NFS上锁     9.10 小结     习题  第10章 Posix信号量     10.1 概述     10.2 sem_open、sem_close和sem_unlink函数     10.3 sem_wait和sem_trywait函数     10.4 sem_post和sem_getvalue函数     10.5 简单的程序     10.6 生产者-消费者问题     10.7 文件上锁     10.8 sem_init和sem_destroy函数     10.9 多个生产者,单个消费者     10.10 多个生产者,多个消费者     10.11 多个缓冲区     10.12 进程间共享信号量     10.13 信号量限制     10.14 使用FIFO实现信号量     10.15 使用内存映射I/O实现信号量     10.16 使用System V信号量实现Posix信号量     10.17 小结     习题  第11章 System V信号量     11.1 概述     11.2 semget函数     11.3 semop函数     11.4 semctl函数     11.5 简单的程序     11.6 文件上锁     11.7 信号量限制     11.8 小结     习题 第四部分 共享内存区 第12章 共享内存区介绍     12.1 概述     12.2 mmap、munmap和msync函数     12.3 在内存映射文件中给计数器持续加    12.4 .4BSD匿名内存映射     12.5 SVR4/dev/zero内存映射     12.6 访问内存映射的对象     12.7 小结     习题  第13章 Posix共享内存区     13.1 概述     13.2 shm_open和shm_unlink函数     13.3 ftruncate和fstat函数     13.4 简单的程序     13.5 给一个共享的计数器持续加    13.6 向一个服务器发送消息     13.7 小结     习题  第14章 System V共享内存区     14.1 概述     14.2 shmget函数     14.3 shmat函数     14.4 shmdt函数     14.5 shmctl函数     14.6 简单的程序     14.7 共享内存区限制     14.8 小结     习题 第五部分 远程过程调用 第15章 门     15.1 概述     15.2 door_call函数     15.3 door_create函数     15.4 door_return函数     15.5 door_cred函数     15.6 door_info函数     15.7 例子     15.8 描述符传递     15.9 door_sever_create函数     15.10 door_bind、door_unbind和door_revoke函数     15.11 客户或服务器的过早终止     15.12 小结     习题  第16章 Sun RPC     16.1 概述     16.2 多线程化     16.3 服务器捆绑     16.4 认证     16.5 超时和重传     16.6 调用语义     16.7 客户或服务器的过早终止     16.8 XDR:外部数据表示     16.9 RPC分组格式     16.10 小结     习题 后记 附录A 性能测量 附录B 线程入门 附录C 杂凑的源代码 附录D 精选习题解答 参考文献 索引 

章节摘录

插图:即使一个进程终止时系统会自动释放某个锁,那也可能解决不了问题。该锁保护某个临界区很可能是为了在执行该临界区代码期间更新某个数据。如果该进程在执行该临界区的中途终止,该数据处于什么状态呢?该数据处于不一致状态的可能性很大:举例来说,一个新条目也许只是部分插入某个链表中,要是该进程终止时内核仅仅把那个锁解开的话,使用该链表的下一个进程就可能发现它已损坏。然而在某些例子中,让内核在进程终止时清理某个锁(若是信号量情况则为计数器)不成问题。例如,某个服务器可能使用一个SystemV信号量(打开其SEM-UNDO特性)来统计当前被处理的客户数。每次fork一个子进程时,它就把该信号量加1,当该子进程终止时,它再把该信号量减1。如果该子进程非正常终止,内核仍会把该计数器减1。9.7节给出了一个例子,说明内核在什么时候释放一个锁(不是我们刚讲的计数器)合适。那儿的守护进程一开始就在自己的某个数据文件上获得一个写入锁,然后在其运行期间一直持有该锁。如果有人试图启动该守护进程的另一个副本,那么新的副本将因为无法取得该写入锁而终止,从而确保该守护进程只有一个副本在一直运行。但是如果该守护进程不正常地终止了,那么内核会释放该写入锁,从而允许启动该守护进程的另一个副本。

后记

本书详细讲述了用于进程间通信(IPC)的四种不同技术:(1)消息传递(管道、FIFO、Posix莉lSystemV消息队列);(2)同步(互斥锁、条件变量、读写锁、文件和记录锁、.Posix和SystemV信号量);(3)共享内存区(匿名共享内存区、有名Posix共享内存区、有名SystemV共享内存区);(4)过程调用(Solaris门、SunRPC)。消息队列和过程调用往往单独使用,也就是说它们通常提供了自己的同步机制。相反,共享内存区通常需要某种由应用程序提供的同步形式才能正确工作.同步技术有时候单独使用,也就是说不涉及其他形式的IPC。讨论了共16章的细节后,很显然的一个问题是:解决某个特定问题应使用哪种形式的IPC?遗憾的是不存在关于IPC的简单判定。Unix提供的类型如此之多的IPC表明,不存在解决全部(或者甚至于大部分)问题的单一办法。你能做的仅仅是:逐渐熟悉各种IPC形式提供的机制,然后根据特定应用的要求比较它们的特性。我们首先列出必须考虑的四个前提,因为它们对于你的应用程序相当重要。(1)连网的(networked)还是非连网的(nonnetworked)。我们假设已作出这个决定,IPC就是用于单台主机上的进程或线程间的。如果应用程序有可能散布到多台主机上,那就考虑使用套接字代替IPC,从而简化以后向连网的应用程序转移的工作。

编辑推荐

《UNIX网络编程.卷2:进程间通信(第2版)》:图灵计算机科学丛书

图书封面

图书标签Tags

评论、评分、阅读与下载


    UNIX网络编程 : 第2版. 第2卷, 进程间通信(中文版) PDF格式下载


用户评论 (总计91条)

 
 

  •   本书详细讲解了UNIX系统进程间通信的各种方法。从进程的概念讲起,逐步深入各种通信机制。有管道、消息队列、信号、信号量、共享内存、套接字、线程等等。讲解详细,示例代码丰富,实在是一本好书。
  •   unix网络编程卷一、卷二永远是经典,国内从来未见过这么好的书,传世之作。不过说点别的,以money为先决条件去造就一个人才,造就出一本好书,我想这是不可能的,本书因为好,我觉得作者是带着对科学的敬业以及爱来写此书的,不多说了,好好看书,好好研读
  •   和套接字的那本书一起看,对unix进程以及网络通信会有更深的认知,并且对自身技术的提高真的有很大的帮助,只是厚了点
  •   很经典的学习Unix网络编程的书
  •   好书,对unix环境高级编程的进程通信方面做进一步剖析
  •   内容很详细,是一本学习UNIX网络编程的好书!
  •   这是关于unix编程方面非常经典的一本书籍,内容直接且非常核心,不过听说翻译的貌似不好,还是自己先看一下吧~
  •   UNIX编程经典之一,没读过不算入门。
  •   网络 编程中的经典之作。收藏+研读。。
  •   Unix/Linux开发很好的参考书籍
  •   经典书籍,不多说,学习linux等网络编程必备
  •   经典的书,学linux网络编程必看之书~~收获非常大!线程讲得很好~
  •   一直等着降价,终于等到了。送货速度快,书的内容好,值得做Unix的学习
  •   很少有书是单讲进程间通信的吧,这本书是比较全面的
  •   啥也不说了,大师的经典之作!!!
    个人感觉卷2要比卷1实用。卷1只适合与搞网络的人用,但是这本书却是搞linux的必备书籍,强烈推荐一下
  •   进程间通信原来是这么回事,这么简单的事。
  •   最近正在写多线程编程,这本书真是帮了大忙,恶补了我的不足~
  •   学linux编程的经典著作,但是一般这种经典著作的翻译质量都值得注意,所以在阅读的时候最好结合一本英文原著!!
  •   这是一本精典好书值得收藏,对于linux系统编程者,是一本不可多得的工具书、参考书。
  •   作者以其丰富的经验给我们留下来丰富的网络学习大餐
  •   学习linux网路编程的必读书目之一!!
    伟大的Richard 三部曲之一!!
    绝对值得学习和收藏!!!
  •   受益匪浅 linux编程必备
  •   这本书很好,代码很多,学习的例子也很多,但不足的就是,书里包含了作者自己写的一个头文件,有时用到了一个系统函数,但不知道从哪里调用,这挺麻烦的
  •   与第一卷一样的经典
  •   适合各个不同层面的开发人员阅读,这本书可以激发读者的灵感给予读者以启迪,可以给读者很透彻的理论指导和实践指南,相信有了世界级的大师的经验的分享,可以让读者在以后的开发生涯上越走越稳。
  •   这种经典的书通常都很厚, 内容很充实, 知识点极度完备, 不是1年2年就能写出来的, 目前正在一点点的啃书中. 希望中国的各位出书人士 ,能多学习这样的经典书籍, 不是为了出书而出书, 谢谢
  •   我一二卷一起买的。。好厚啊。。不容易懂。。我一定要坚持
  •   之前买了卷1,现在把卷2也买了,凑齐了!
  •   不过感觉没有第一卷那么好
  •   经典之作,大三以上的计算机系学生必读
  •   无需多说,经典之作,必看!!~
  •   内容经典,Stevens的书读完受益匪浅,只可惜英年早逝...
  •   经典书籍,是班导师的推荐读物。虽然现在水平有限,但是大师经典总会有用。
  •   书的质量和内容都挺好。是经典教材啊。大师之笔,就是神。
  •   前面两册买了,这个买了储备的,应为前面的写的太棒了.
  •   经典,不用多说。
  •   这本是经典名著,也根据技术发展做了一些更新。不过译者都不乐意署名了么?
  •   经典书籍,必备,同事人手一本
  •   经典书籍,结合自身情况学习,不错。
  •   经典 值得拥有
  •   喜欢linux,喜欢freebsd,喜欢经典书籍,,,,
  •   书很经典,值得,但当当的送货速度需要再提高点。
  •   经典的书就不用说了。。。
  •   书很经典,质量很好,很值
  •   包装一般,经典著作,从来都买正版。
  •   出自大师之作,值得精读,值得收藏!!
  •   国内写的书都是拿例子充字数,实用的内容没多少
  •   书是好书, 但翻译的太烂的,估计是用金山词霸翻译的,推荐大家阅读英文正版的
  •   值得推荐啊~~~
  •   相当不错的一本书,是正版哦,质量杠杠的
  •   这本书的作者本身就很值得我们尊敬,这本书也很值得我们拜读
  •   讲得很深,书很厚,当工具书可以~没必要逐字逐句的看~觉得哪些重要的看就可以了吧~我是这么觉得的~PS:书确实很贵!考虑好了再买吧……收藏是很值得的……想想,一双鞋子都要200以上~而且最多穿2年~这个可以阅读一辈子受益的~~还是值了....PS:这本书很薄~个人觉得确实贵了点~~
  •   纸质印刷都不错,书是正版,写的也好.
  •   好好读,多学习
  •   这套书很厚的,要有耐心的读,
  •   可惜作者上天堂了,不过他的五部书籍遗传万世。
  •   内容正在学习中。。。
  •   需要很用心的研究
  •   质量挺好,内容还没看
  •   书不错,是正版的,内容也很好
  •   难得的好书,内容相当详细,学起来很容易懂
  •   正版书,支持下,正在阅读中
  •   对此书的作者给予最高的敬意
  •   当当的快递包装太简陋了,到了后,书都有破损。
  •   不错的书。还没看。
  •   收到书了 很高兴。书很好 是正版
  •   书还不错,要是快递再给力点就好了
  •   拆封了的,有点污渍,但书是新的,正品,还行吧
  •   第二本说实话用处不大,不过拿来看看,了解一下还是好的。
  •   这是一本值得阅读的好书
  •   很不错的书,有深度
  •   书很好,价格还便宜,很支持当当!
  •   这个商品不错,物流给力
  •   两本一起看,还不错哦!
  •   初学者能看,高手也能有收获,工作中拿来做参考资料也很有帮助
  •   UNIX网络编程写的很经典的书,很值得UNIX网络编程的人员看一看。就是拿到书的时候包装袋都破了,希望以后送货的人注意一下。
  •   书质量很好,纸张不错,印刷清晰。物有所值吧。
  •   书的外皮看起来就是一本旧书,里面还好
  •   非常经典的书,现在买来读读也是受益匪浅~
  •   经典书籍,很好很好啊
  •   必读经典,别人已经说的够多了,我就不多说了。
  •   很不错的教材,里面的内容有些深奥
  •   啥也不说了,Richard的书,嗯
  •   比较贵,犹豫了很久。可看看Stevens的名字,尼玛,必须正版
  •   宝典就是宝典啊,当工具书
  •   基础类书,内容很浅,适合初学者
  •   经典收藏,肯定不错啊
  •   绝对是经典,活动买得,非常划算.
  •   经典名著,专讲IPC,用一本书的长度来诠释
  •   老公买的书,他说不错
  •   网络编程必备书
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7