基本信息
- 原书名:UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition)
- 原出版社: Prentice Hall PTR
- 作者: (美)W.Richard Stevens
- 丛书名: 图灵程序设计丛书 操作系统
- 出版社:人民邮电出版社
- ISBN:9787115215116
- 上架时间:2009-11-13
- 出版日期:2009 年11月
- 开本:16开
- 页码:558
- 版次:2-1
- 所属分类:计算机 > 操作系统 > UNIX
编辑推荐
UNIX和网络专家W. Richard Stevens的传世之作
UNIX系统网络编程人员的必备经典
内容详尽权威,提供精选习题及答案
详细描述4种不同的IPC形式
在Unix系统上测试通过的真实、可运行的代码让读者轻松深入学习网络编程复杂的新技术。
内容简介
计算机书籍
本书是一部UNIX网络编程的经典之作。进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存)及远程过程调用(Solaris门、Sun RPC)。附录中给出了测量各种IPC形式性能的方法。
本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。
作译者
目录
Chapter 1 Introduction
1.1 Introduction
1.2 Processes, Threads, and the Sharing of Information
1.3 Persistence of IPC Objects
1.4 Name Spaces
1.5 Effect of fork, exec, and exit on IPC Objects
1.6 Error Handling: Wrapper Functions
1.7 Unix Standards
1.8 Road Map to IPC Examples in the Text
1.9 Summary
Chapter 2 Posix IPC
2.1 Introduction
2.2 IPC Names
2.3 Creating and Opening IPC Channels
2.4 IPC Permissions
2.5 Summary
Chapter 3 System V IPC
3.1 Introduction
3.2 key_t Keys and ft:ok Function
前言
大多数重要的程序都涉及进程间通信(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]。
媒体评论
——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