UNIX网络编程 : 第2版. 第2卷, 进程间通信(中文版)(已故著名技术作家Stevens的传世之作)
基本信息
- 原书名: UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition)
- 原出版社: Prentice Hall
- 作者: (美)W. Richard Stevens [作译者介绍]
- 丛书名: 图灵程序设计丛书 操作系统
- 出版社:人民邮电出版社
- ISBN:9787115230287
- 上架时间:2010-7-9
- 出版日期:2010 年7月
- 开本:16开
- 页码:454
- 版次:2-1
- 所属分类:
计算机 > 操作系统 > UNIX
计算机 > 软件与程序设计 > 网络编程 > 综合
内容简介回到顶部↑
两卷本的《unix网络编程》是已故著名技术作家w. richard stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。良好的进程间通信(ipc)机制是提高unix程序性能的关键。本书全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程调用(rpc)。书中包含了大量经过优化的源代码,帮助读者加深理解。这些源代码可以从图灵网站本书网页免费注册下载。
本书是网络研究和开发人员公认的权威参考书,深入理解本书内容,方能设计出良好的unix软件。
本书是网络研究和开发人员公认的权威参考书,深入理解本书内容,方能设计出良好的unix软件。
作译者回到顶部↑
本书提供作译者介绍
W. Richard Stevens 国际知名的UNIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。1990年他回到图森,.. << 查看详细
目录回到顶部↑
第一部分 简介
第1章 简介 2
1.1 概述 2
1.2 进程、线程与信息共享 3
1.3 ipc对象的持续性 4
1.4 名字空间 5
1.5 fork、exec和exit对ipc对象的影响 7
1.6 出错处理:包裹函数 8
1.7 unix标准 9
1.8 书中ipc例子索引表 11
1.9 小结 13
习题 13
第2章 posix ipc 14
2.1 概述 14
2.2 ipc名字 14
2.3 创建与打开ipc通道 16
2.4 ipc权限 18
2.5 小结 19
习题 19
第3章 system v ipc 20
第1章 简介 2
1.1 概述 2
1.2 进程、线程与信息共享 3
1.3 ipc对象的持续性 4
1.4 名字空间 5
1.5 fork、exec和exit对ipc对象的影响 7
1.6 出错处理:包裹函数 8
1.7 unix标准 9
1.8 书中ipc例子索引表 11
1.9 小结 13
习题 13
第2章 posix ipc 14
2.1 概述 14
2.2 ipc名字 14
2.3 创建与打开ipc通道 16
2.4 ipc权限 18
2.5 小结 19
习题 19
第3章 system v ipc 20
前言回到顶部↑
概述
大多数重要的程序都涉及进程间通信(Interprocess Communication, IPC)。这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程序更好。从历史角度看,应用程序有如下几种构建方法。
(1) 用一个庞大的程序完成全部工作。程序的各部分可以实现为函数,函数之间通过参数、返回值和全局变量来交换信息。
(2) 使用多个程序,程序之间用某种形式的IPC进行通信。许多标准的Unix工具都是按这种风格设计的,它们使用shell管道(IPC的一种形式)在程序之间传递信息。
(3) 使用一个包含多个线程的程序,线程之间使用某种IPC。这里仍然使用术语IPC,尽管通信是在线程之间而不是在进程之间进行的。
还可以把后两种设计形式结合起来:用多个进程来实现,其中每个进程包含几个线程。在这种情况下,进程内部的线程之间可以通信,不同的进程之间也可以通信。
上面讲述了可以把完成给定任务所需的工作分到多个进程中,或许还可以进一步分到进程内的多个线程中。在包含多个处理器(CPU)的系统中,多个进程也许可以(在不同的CPU上)同时运行,或许给定进程内的多个线程也能同时运行。因此,把任务分到多个进程或线程中有望减少完成指定任务的时间。
本书详细描述了以下4种不同的IPC形式:
(1) 消息传递(管道、FIFO和消息队列);
(2) 同步(互斥量、条件变量、读写锁、文件和记录锁、信号量);
(3) 共享内存(匿名的和具名的);
(4) 远程过程调用(Solaris门和Sun RPC)。
本书不讨论如何编写通过计算机网络通信的程序。这种通信通常涉及使用TCP/IP协议族的套接字API,相关主题在第1卷[Stevens 1998]中有详细讨论。
有人可能会提出质疑:不应该使用单主机或非网络IPC(本卷的主题),所有程序都应该在网络上的多台主机上同时运行。但在日常实践中,单主机IPC往往比网络通信快得多,而且有时还简单些。共享内存、同步等方法通常也只能用于单主机,跨网络时可能无法使用。经验和历史表明,非网络IPC(本卷)与跨网络IPC(第1卷)都是需要的。
本卷建立在第1卷和我写的另外4本书的基础上,这5本书在本书中简记如下:
UNPv1:UNIX Network Programming, Volume 1 [Stevens 1998];
APUE:Advanced Programming in the UNIX Environment [Stevens 1992];
TCPv1:TCP/IP Illustrated, Volume 1 [Stevens 1994];
TCPv2:TCP/IP Illustrated, Volume 2 [Wright and Stevens 1995];
TCPv3:TCP/IP Illustrated, Volume 3 [Stevens 1996]。
大多数重要的程序都涉及进程间通信(Interprocess Communication, IPC)。这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程序更好。从历史角度看,应用程序有如下几种构建方法。
(1) 用一个庞大的程序完成全部工作。程序的各部分可以实现为函数,函数之间通过参数、返回值和全局变量来交换信息。
(2) 使用多个程序,程序之间用某种形式的IPC进行通信。许多标准的Unix工具都是按这种风格设计的,它们使用shell管道(IPC的一种形式)在程序之间传递信息。
(3) 使用一个包含多个线程的程序,线程之间使用某种IPC。这里仍然使用术语IPC,尽管通信是在线程之间而不是在进程之间进行的。
还可以把后两种设计形式结合起来:用多个进程来实现,其中每个进程包含几个线程。在这种情况下,进程内部的线程之间可以通信,不同的进程之间也可以通信。
上面讲述了可以把完成给定任务所需的工作分到多个进程中,或许还可以进一步分到进程内的多个线程中。在包含多个处理器(CPU)的系统中,多个进程也许可以(在不同的CPU上)同时运行,或许给定进程内的多个线程也能同时运行。因此,把任务分到多个进程或线程中有望减少完成指定任务的时间。
本书详细描述了以下4种不同的IPC形式:
(1) 消息传递(管道、FIFO和消息队列);
(2) 同步(互斥量、条件变量、读写锁、文件和记录锁、信号量);
(3) 共享内存(匿名的和具名的);
(4) 远程过程调用(Solaris门和Sun RPC)。
本书不讨论如何编写通过计算机网络通信的程序。这种通信通常涉及使用TCP/IP协议族的套接字API,相关主题在第1卷[Stevens 1998]中有详细讨论。
有人可能会提出质疑:不应该使用单主机或非网络IPC(本卷的主题),所有程序都应该在网络上的多台主机上同时运行。但在日常实践中,单主机IPC往往比网络通信快得多,而且有时还简单些。共享内存、同步等方法通常也只能用于单主机,跨网络时可能无法使用。经验和历史表明,非网络IPC(本卷)与跨网络IPC(第1卷)都是需要的。
本卷建立在第1卷和我写的另外4本书的基础上,这5本书在本书中简记如下:
UNPv1:UNIX Network Programming, Volume 1 [Stevens 1998];
APUE:Advanced Programming in the UNIX Environment [Stevens 1992];
TCPv1:TCP/IP Illustrated, Volume 1 [Stevens 1994];
TCPv2:TCP/IP Illustrated, Volume 2 [Wright and Stevens 1995];
TCPv3:TCP/IP Illustrated, Volume 3 [Stevens 1996]。
媒体评论回到顶部↑
“我做专业程序员已经二十余年了,每当要写新程序的时候,我都要参考这本书。Stevens的书是我进入VoIP和音频CODEC网络编程领域的敲门砖。”
——C. T. Vanderdecken
“在我做过的项目中,已经记不清楚有多少次靠这套书挽狂澜于既倒……每位真正的UNIX系统程序员都应该买一套。”
——David Sharpe
“对每位UNIX平台的程序员而言,这本书都是必备的。它深入阐释了UNIX平台上的各种IPC API。既涵盖System V也涉及POSIX标准,对于IPC的论述无可匹敌。书末的附录对各种管道、FIFO、Posix消息队列、System V消息队列、门、Sun RPC的性能进行了比较,我从来没有看到任何书能如此广泛而深入地介绍这一主题。更何况,它出自权威人物之手。”
——asingh
“Stevens是UNIX网络编程的‘神’,至少是我的‘神’。”
——Matthew MacGibbon
——C. T. Vanderdecken
“在我做过的项目中,已经记不清楚有多少次靠这套书挽狂澜于既倒……每位真正的UNIX系统程序员都应该买一套。”
——David Sharpe
“对每位UNIX平台的程序员而言,这本书都是必备的。它深入阐释了UNIX平台上的各种IPC API。既涵盖System V也涉及POSIX标准,对于IPC的论述无可匹敌。书末的附录对各种管道、FIFO、Posix消息队列、System V消息队列、门、Sun RPC的性能进行了比较,我从来没有看到任何书能如此广泛而深入地介绍这一主题。更何况,它出自权威人物之手。”
——asingh
“Stevens是UNIX网络编程的‘神’,至少是我的‘神’。”
——Matthew MacGibbon


点击看大图





加载中...
