《UNIX网络编程 卷2 进程间通信 第2版 英文版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)W.RICHARD STEVENS著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2016
  • ISBN:9787115401311
  • 页数:540 页
图书介绍:本书是一部UNIX网络编程的经典之作!进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递、同步、共享内存及远程过程调用。本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案。

Part 1.简介 1

Chapter 1.简介 3

1.1 概述 3

1.2 进程、线程与信息共享 5

1.3 IPC对象的持续性 6

1.4 名字空间 7

1.5 fork、exec和exit对IPC对象的影响 9

1.6 错误处理:包装函数 11

1.7 Unix标准 13

1.8 本书中IPC示例的路线图 15

1.9 小结 16

Chapter 2.Posix IPC 19

2.1 概述 19

2.2 IPC名字 19

2.3 创建与打开IPC通道 22

2.4 IPC权限 25

2.5 小结 26

Chapter 3.System V IPC 27

3.1 概述 27

3.2 key_t键和ftok函数 28

3.3 ipc_perm结构 30

3.4 创建与打开IPC通道 30

3.5 IPC权限 32

3.6 标识符重用 34

3.7 ipcs和ipcrm程序 36

3.8 内核限制 36

3.9 小结 38

Part 2.消息传递 41

Chapter 4.管道和FIFO 43

4.1 概述 43

4.2 一个简单的客户-服务器示例 43

4.3 管道 44

4.4 全双工管道 50

4.5 popen和pclose函数 52

4.6 FIFOs 54

4.7 管道和FIFO的额外属性 58

4.8 单服务器,多客户 60

4.9 迭代服务器与并发服务器的比较 66

4.10 流与消息 67

4.11 管道和FIFO限制 72

4.12 小结 73

Chapter 5.Posix消息队列 75

5.1 概述 75

5.2 mq_open、mq_close和mq_unlink函数 76

5.3 mq_getattr和mq_setattr函数 79

5.4 mq_send和mq_receive函数 82

5.5 消息队列限制 86

5.6 mq_notify函数 87

5.7 Posix实时信号 98

5.8 使用内存映射I/O实现 106

5.9 小结 126

Chapter 6.System V消息队列 129

6.1 概述 129

6.2 msgget函数 130

6.3 msgsnd函数 131

6.4 msgrcv函数 132

6.5 msgctl函数 134

6.6 简单的程序 135

6.7 客户-服务器示例 140

6.8 多路复用消息 142

6.9 消息队列上使用select和poll 151

6.10 消息队列限制 152

6.11 小结 155

Part 3.同步 157

Chapter 7.互斥锁和条件变量 159

7.1 概述 159

7.2 互斥锁:加锁与解锁 159

7.3 生产者-消费者问题 161

7.4 加锁与等待 165

7.5 条件变量:等待与信号发送 167

7.6 条件变量:定时等待和广播 171

7.7 互斥锁和条件变量的属性 172

7.8 小结 174

Chapter 8.读写锁 177

8.1 概述 177

8.2 获取与释放读写锁 178

8.3 读写锁属性 179

8.4 使用互斥锁和条件变量实现 179

8.5 线程取消 187

8.6 小结 192

Chapter 9.记录加锁 193

9.1 概述 193

9.2 记录加锁与文件加锁 197

9.3 Posix fcntl记录加锁 199

9.4 劝告性加锁 203

9.5 强制性加锁 204

9.6 读出者和写入者的优先级 207

9.7 只启动守护进程的一个副本 213

9.8 锁文件 214

9.9 NFS加锁 216

9.10 小结 216

Chapter 10.Posix信号量 219

10.1 概述 219

10.2 sem_open、sem_close和sem_unlink函数 225

10.3 sem_wait和sem_trywait函数 226

10.4 sem_post和sem_getvalue函数 227

10.5 简单的程序 228

10.6 生产者-消费者问题 233

10.7 文件加锁 238

10.8 sem_init和sem_destroy函数 238

10.9 多生产者,单消费者 242

10.10 多生产者,多消费者 245

10.11 多缓冲区 249

10.12 进程间共享信号量 256

10.13 信号量限制 257

10.14 使用FIFO实现 257

10.15 使用内存映射I/O实现 262

10.16 使用System V信号量实现 271

10.17 小结 278

Chapter 11.System V信号量 281

11.1 概述 281

11.2 semget函数 282

11.3 semop函数 285

11.4 semctl函数 287

11.5 简单的程序 289

11.6 文件加锁 294

11.7 信号量限制 296

11.8 小结 300

Part 4.共享内存 301

Chapter 12.共享内存简介 303

12.1 概述 303

12.2 mmap、munmap和msync函数 307

12.3 内存映射文件中的计数器递加 311

12.4 4.4BSD匿名内存映射 315

12.5 SVR4/dev/zero内存映射 316

12.6 引用内存映射的对象 317

12.7 小结 322

Chapter 13.Posix共享内存 325

13.1 概述 325

13.2 shm_open和shm_unl_ink函数 326

13.3 ftruncate和fstat函数 327

13.4 简单的程序 328

13.5 共享计数器递加 333

13.6 向服务器发送消息 336

13.7 小结 342

Chapter 14.System V共享内存 343

14.1 概述 343

14.2 shmget函数 343

14.3 shmat函数 344

14.4 shmdt函数 345

14.5 shmctl函数 345

14.6 简单的程序 346

14.7 共享内存限制 349

14.8 小结 351

Part 5.远程过程调用 353

Chapter 15.门 355

15.1 概述 355

15.2 door_call函数 361

15.3 door_create函数 363

15.4 door_return函数 364

15.5 door_cred函数 365

15.6 door_info函数 365

15.7 示例 366

15.8 描述符传递 379

15.9 door_server_create函数 384

15.10 door_bind、door_unbind和door_revoke函数 390

15.11 客户或服务器的过早终止 390

15.12 小结 397

Chapter 16.Sun RPC 399

16.1 概述 399

16.2 多线程技术 407

16.3 服务器绑定 411

16.4 鉴别 414

16.5 超时和重传 417

16.6 调用语义 422

16.7 客户或服务器的过早终止 424

16.8 XDR:外部数据表示 426

16.9 RPC分组格式 444

16.10 小结 449

后记 453

Appendix A.性能测量 457

A.1 概述 457

A.2 结果 458

A.3 消息传递带宽程序 467

A.4 消息传递延迟程序 480

A.5 线程同步程序 486

A.6 进程同步程序 497

Appendix B.A Threads Primer 501

B.1 概述 501

B.2 基本线程函数:创建和终止 502

Appendix C.其他源代码 505

C.1 unpipc.h头文件 505

C.2 config.h头文件 509

C.3 标准错误处理函数 510

Appendix D.精选习题答案 515

参考文献 535