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

分類: 图书,计算机/网络,操作系统/系统开发,UNIX Solaris ,
作者: (美)史蒂文斯 著
出 版 社: 人民邮电出版社
出版时间: 2010-7-1字数: 830000版次: 1页数: 454印刷时间: 2010-7-1开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115230287包装: 平装

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

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