书籍详情
UNIX网络编程:第2版(第2卷 进程间通信)
作者:(美)[W.R.史蒂文斯]W.Richard Stevens著;杨继张译
出版社:清华大学出版社
出版时间:2000-03-01
ISBN:9787302038153
定价:¥58.00
购买这本书可以去
内容简介
多数精致复杂的程序涉及某种形式的IPC,也就是进程间通信(InterprocessCommuni-cation)。它是一个程序设计原则的自然结果,即把应用程序设计成一组彼此通信的小片段是比设计成单个庞大的程序更好的方法。从历史上看,应用程序设计方式按如下的顺序渐次出现: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卷[Stevens1998]中详细讨论。有人可能坚称单台主机内的即不涉及网络的IPC(正是本卷的主题)不应该使用,相反,所有应用程序都应该编写成通过网络运行在各种主机的分布式应用程序。然而实践证明,单台主机内的IPC与穿越网络的通信相比,前者往往快得多,有时还简单些。诸如共享内存区和同步这样的技术通常只在单台主机上可用,穿越网络时可能没法用。经验与历史告诉我们,不涉及网络的IPC(本卷)和穿越网络的IPC(本丛书第1卷)都有用武之地。本书构筑在同一套丛书第1卷以及作者的其他4本书的基础之上,它们的书名在全书中缩写如下:·UNPvl: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/lP Illustrated,VOlume 2[Wright and Stevens 1995]TCPv3:TCP/IP Illustrated,Volume 3[Stevens 1996]尽管在以“网络编程”为书名的丛书中讨论IPC看起来可能奇怪,IPC却往往用在网络应用程序中。这正如在“UNIX Network Programming” 1990年版的前言中所说:“理解如何给一个网络开发软件的必要条件之一是理解进程间通信(IPC)”。
作者简介
作者:W.RichardStevens国际知名的Unix和网络专家,《TCP/IP详解》(三卷本)作者W.RichardStevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。Stevens先生1951年生于赞比亚,他的家庭曾多次搬迁,最终定居于南非。早年,他就读于美国弗吉尼亚州的费什本军事学校,后获得密歇根大学学士、亚利桑那大学系统工程硕士和博士学位。他曾就职于基特峰国家天文台,从事计算机编程;还曾在康涅狄格州纽黑文市的健康系统国际公司任主管计算机服务的副总裁。Stevens先生不幸病逝于1999年9月1日,他的离去是计算机界的巨大损失。UNIX环境高级编程(第2版)>>更多作品
目录
第I部分 简介
第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 小结
1.10 习题
第2章 Poslix IPC
2.1 概述
2 2 IPC名字
2.3 创建与打开IPC通道
2.4 IPC权限
2.5 小结
2.6 习题
第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 小结
3.10 习题
第4章 管道和FIFO
4.l 概述
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 小结
4.13 习题
第5章 Posix 消息队列
5.l 概述
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 小结
5.10 习题
第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 小结
6.12 习题
第3部分 同 步
第7章 互斥锁和条件变目
7.1 概述
7.2 互斥锁:上锁与解锁
7.3 生产者一消费者问题
7.4 上锁与等待
7.5 条件变量:等待与信号发送
7.6 条件变量:定时等待和广播
7.7 互斥锁和条件变量的属性
7.8 小结
7.9 习题
第8章 读写锁
8.1 概述
8.2 获取与释放读写锁
8.3 读写锁属性
8.4 使用互斥锁和条件变量实现读写锁
8.5 线程取消
8.6 小结
8.7 习题
第9章 记录上锁
9.1 概述
9.2 记录上锁与文件上锁
9.3 Posix fcntl记录上锁
9.4 劝告性锁
9.5 强制性上锁
9.6 读出者和写入者的优先级
9.7 启动一个守护进程的唯一拷贝
9.8 文件作锁用
9.9 NFS上锁
9.10 小结;
9.11 习题;
第10章 posix 信号灯
10.1 概述
10.2 sem-open、 sem-close和 sem- unlink函数
10.3 sem-walt和 sem-trywait函数
10.4 sem-post 和 semgetvalue 函数
10.5 简单的程序
10.6 生产者-消费者问题
10.7 文件上锁
10.8 sem-Inlt和 sem-destroy函数
10.9 多个生产者,单个消费者
10.10 多个生产者,多个消费者
10.11 多个缓冲区
10.12 进程间共车信号灯
10.13 信号灯限制
10.14 使用 FIFO实现信号灯
10.15 使用内存映射1/O实现信号灯
10.16 使用 System V信号灯实现 Posix信号灯
10.17 小结
10.18 习题
第11章 System V信号灯
11.1 概述
11.2 emget函数
11.3 semop函数
11.4 semctl函数
11.5 简单的程序
11.6 文件上锁
11.7 信号灯限制
11.8 小结
11.9 习题
第4部分 共享内存区
第12章 共享内存区介绍
12.1 概述
12.2 mmap、munmap和 msync函数
12.3 在内存映射文件中给计数器持续加1
12.4 4.4BSD匿名内存映射
12.5 SVR4/dev/zero内存映射
12.6 访问内存映射的对象
12.7 小结
13.3 ftruncate和 fstat函数
13.4 简单的程序
13.5 给一个共车的计数器持续加
13.6 向一个服务器发送消息
13.7 小结
13.8 习题
第14章 System V共享内存区
14.1 概述
14.2 shmget函数
14.3 shmat函数
14.4 shmdt函数
14.5 shmctl函数
14.6 简单的程序
14.7 共享内存区限制
14.8 小结
14.9 习题
第5部分 远程过程调用
第15章 门
15.1 概述
15.2 door-call函数
15.3 door-create函数
15.4 door-return函数
15.5 door-ored函数
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 小结
15.13 习题
第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 小结
16.11 习题
后记
第6部分 附 录
附录A 性能测量
A.1 概述
A.2 结果
A.3 消息传递带宽程序
A.4 消息传递延迟程序
A.5 线程同步程序
A.6 进程同步程序
附录B 线程入门
B.1 概述
B.2 基本线程函数:创建和终止
附录C 杂凑的源代码
C.1 unpipc.h头文件
C.2 config.h头文件
C.3 标准错误处理函数
附录D 部分习题解答
附录E 参考文献
附录F 函数和宏定义索引表
附录G 结构定义索引表
附录H 中英文词汇对照表
第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 小结
1.10 习题
第2章 Poslix IPC
2.1 概述
2 2 IPC名字
2.3 创建与打开IPC通道
2.4 IPC权限
2.5 小结
2.6 习题
第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 小结
3.10 习题
第4章 管道和FIFO
4.l 概述
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 小结
4.13 习题
第5章 Posix 消息队列
5.l 概述
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 小结
5.10 习题
第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 小结
6.12 习题
第3部分 同 步
第7章 互斥锁和条件变目
7.1 概述
7.2 互斥锁:上锁与解锁
7.3 生产者一消费者问题
7.4 上锁与等待
7.5 条件变量:等待与信号发送
7.6 条件变量:定时等待和广播
7.7 互斥锁和条件变量的属性
7.8 小结
7.9 习题
第8章 读写锁
8.1 概述
8.2 获取与释放读写锁
8.3 读写锁属性
8.4 使用互斥锁和条件变量实现读写锁
8.5 线程取消
8.6 小结
8.7 习题
第9章 记录上锁
9.1 概述
9.2 记录上锁与文件上锁
9.3 Posix fcntl记录上锁
9.4 劝告性锁
9.5 强制性上锁
9.6 读出者和写入者的优先级
9.7 启动一个守护进程的唯一拷贝
9.8 文件作锁用
9.9 NFS上锁
9.10 小结;
9.11 习题;
第10章 posix 信号灯
10.1 概述
10.2 sem-open、 sem-close和 sem- unlink函数
10.3 sem-walt和 sem-trywait函数
10.4 sem-post 和 semgetvalue 函数
10.5 简单的程序
10.6 生产者-消费者问题
10.7 文件上锁
10.8 sem-Inlt和 sem-destroy函数
10.9 多个生产者,单个消费者
10.10 多个生产者,多个消费者
10.11 多个缓冲区
10.12 进程间共车信号灯
10.13 信号灯限制
10.14 使用 FIFO实现信号灯
10.15 使用内存映射1/O实现信号灯
10.16 使用 System V信号灯实现 Posix信号灯
10.17 小结
10.18 习题
第11章 System V信号灯
11.1 概述
11.2 emget函数
11.3 semop函数
11.4 semctl函数
11.5 简单的程序
11.6 文件上锁
11.7 信号灯限制
11.8 小结
11.9 习题
第4部分 共享内存区
第12章 共享内存区介绍
12.1 概述
12.2 mmap、munmap和 msync函数
12.3 在内存映射文件中给计数器持续加1
12.4 4.4BSD匿名内存映射
12.5 SVR4/dev/zero内存映射
12.6 访问内存映射的对象
12.7 小结
13.3 ftruncate和 fstat函数
13.4 简单的程序
13.5 给一个共车的计数器持续加
13.6 向一个服务器发送消息
13.7 小结
13.8 习题
第14章 System V共享内存区
14.1 概述
14.2 shmget函数
14.3 shmat函数
14.4 shmdt函数
14.5 shmctl函数
14.6 简单的程序
14.7 共享内存区限制
14.8 小结
14.9 习题
第5部分 远程过程调用
第15章 门
15.1 概述
15.2 door-call函数
15.3 door-create函数
15.4 door-return函数
15.5 door-ored函数
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 小结
15.13 习题
第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 小结
16.11 习题
后记
第6部分 附 录
附录A 性能测量
A.1 概述
A.2 结果
A.3 消息传递带宽程序
A.4 消息传递延迟程序
A.5 线程同步程序
A.6 进程同步程序
附录B 线程入门
B.1 概述
B.2 基本线程函数:创建和终止
附录C 杂凑的源代码
C.1 unpipc.h头文件
C.2 config.h头文件
C.3 标准错误处理函数
附录D 部分习题解答
附录E 参考文献
附录F 函数和宏定义索引表
附录G 结构定义索引表
附录H 中英文词汇对照表
猜您喜欢