UNIX 网络编程卷2:进程间通信 第2版 PDF 文档
本书是一部 UNIX 网络编程的经典之作!进程间通信(IPC) 几乎是所有 Unix 程序性能的关键,理解 IPC 也是理解如何开发不同主机间网络应用程序的必要条件。本书从对 Posix IPC 和 System V IPC 的内部结构开始讨论,全面深入地介绍了 4 种 IPC 形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存) 及远程过程调用(Solaris 门、Sun RPC)。
附录中给出了测量各种 IPC 形式性能的方法。 本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。
第 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
3.1 概述 20
3.2 key_t 键和 ftok 函数 20
3.3 ipc_perm 结构 22
3.4 创建与打开 IPC 通道 22
3.5 IPC 权限 24
3.6 标识符重用 25
3.7 ipcs 和 ipcrm 程序 27
3.8 内核限制 27
3.9 小结 28
习题 29
第 二部分 消息传递
第 4 章 管道和 FIFO 32
4.1 概述 32
4.2 一个简单的客户-服务器例子 32
4.3 管道 32
4.4 全双工管道 37
4.5 popen 和 pclose 函数 39
4.6 FIFO 40
4.7 管道和 FIFO 的额外属性 44
4.8 单个服务器,多个客户 46
4.9 对比迭代服务器与并发服务器 50
4.10 字节流与消息 51
4.11 管道和 FIFO 限制 55
4.12 小结 56
习题 57
第 5 章 Posix 消息队列 58
5.1 概述 58
5.2 mq_open、mq_close 和 mq_unlink 函数 59
5.3 mq_getattr 和 mq_setattr 函数 61
5.4 mq_send 和 mq_receive 函数 64
5.5 消息队列限制 67
5.6 mq_notify 函数 68
5.7 Posix 实时信号 78
5.8 使用内存映射 I/O 实现 Posix 消息队列 85
5.9 小结 101
习题 101
第 6 章 System V 消息队列 103
6.1 概述 103
6.2 msgget 函数 104
6.3 msgsnd 函数 104
6.4 msgrcv 函数 105
6.5 msgctl 函数 106
6.6 简单的程序 107
6.7 客户-服务器例子 112
6.8 复用消息 113
6.9 消息队列上使用 select 和 poll 121
6.10 消息队列限制 122
6.11 小结 124
习题 124
第三部分 同步
第 7 章 互斥锁和条件变量 126
7.1 概述 126
7.2 互斥锁:上锁与解锁 126
7.3 生产者-消费者问题 127
7.4 对比上锁与等待 131
7.5 条件变量:等待与信号发送 132
7.6 条件变量:定时等待和广播 136
7.7 互斥锁和条件变量的属性 136
7.8 小结 139
习题 139
第 8 章 读写锁 140
8.1 概述 140
8.2 获取与释放读写锁 140
8.3 读写锁属性 141
8.4 使用互斥锁和条件变量实现读写锁 142
8.5 线程取消 148
8.6 小结 153
习题 153
第 9 章 记录上锁 154
9.1 概述 154
9.2 对比记录上锁与文件上锁 157
9.3 Posix fcntl 记录上锁 158
9.4 劝告性上锁 162
9.5 强制性上锁 164
9.6 读出者和写入者的优先级 166
9.7 启动一个守护进程的唯一副本 170
9.8 文件作锁用 171
9.9 NFS 上锁 173
9.10 小结 173
习题 174
第 10 章 Posix 信号量 175
10.1 概述 175
10.2 sem_open、sem_close 和 sem_unlink 函数 179
10.3 sem_wait 和 sem_trywait 函数 180
10.4 sem_post 和 sem_getvalue 函数 180
10.5 简单的程序 181
10.6 生产者-消费者问题 186
10.7 文件上锁 190
10.8 sem_init 和 sem_destroy 函数 191
10.9 多个生产者,单个消费者 193
10.10 多个生产者,多个消费者 196
10.11 多个缓冲区 199
10.12 进程间共享信号量 205
10.13 信号量限制 206
10.14 使用 FIFO 实现信号量 206
10.15 使用内存映射 I/O 实现信号量 210
10.16 使用 System V 信号量实现 Posix 信号量 218
10.17 小结 224
习题 225
第 11 章 System V 信号量 226
11.1 概述 226
11.2 semget 函数 227
11.3 semop 函数 229
11.4 semctl 函数 231
11.5 简单的程序 232
11.6 文件上锁 237
11.7 信号量限制 238
11.8 小结 242
习题 242
第四部分 共享内存区
第 12 章 共享内存区介绍 244
12.1 概述 244
12.2 mmap、munmap 和 msync 函数 247
12.3 在内存映射文件中给计数器持续加 1 250
12.4 4.4BSD 匿名内存映射 254
12.5 SVR4/dev/zero 内存映射 255
12.6 访问内存映射的对象 255
12.7 小结 259
习题 260
第 13 章 Posix 共享内存区 261
13.1 概述 261
13.2 shm_open 和 shm_unlink 函数 261
13.3 ftruncate 和 fstat 函数 262
13.4 简单的程序 263
13.5 给一个共享的计数器持续加 1 267
13.6 向一个服务器发送消息 270
13.7 小结 275
习题 275
第 14 章 System V 共享内存区 276
14.1 概述 276
14.2 shmget 函数 276
14.3 shmat 函数 277
14.4 shmdt 函数 277
14.5 shmctl 函数 277
14.6 简单的程序 278
14.7 共享内存区限制 281
14.8 小结 282
习题 283
第五部分 远程过程调用
第 15 章 门 286
15.1 概述 286
15.2 door_call 函数 291
15.3 door_create 函数 292
15.4 door_return 函数 293
15.5 door_cred 函数 294
15.6 door_info 函数 294
15.7 例子 295
15.8 描述符传递 306
15.9 door_sever_create 函数 310
15.10 door_bind、door_unbind 和 door_revoke 函数 315
15.11 客户或服务器的过早终止 315
15.12 小结 321
习题 322
第 16 章 Sun RPC 323
16.1 概述 323
16.2 多线程化 330
16.3 服务器捆绑 333
16.4 认证 336
16.5 超时和重传 338
16.6 调用语义 342
16.7 客户或服务器的过早终止 343
16.8 XDR:外部数据表示 345
16.9 RPC 分组格式 361
16.10 小结 365
习题 366
后记 368
附录 A 性能测量 371
附录 B 线程入门 406
附录 C 杂凑的源代码 409
附录 D 精选习题解答 417
参考文献 433
索引 435
下载地址:https://www.wenjiangs.com/wp-content/uploads/2023/12/QgYMUoJUMQYvsGut.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论