好书推荐 好书速递 排行榜 读书文摘

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

UNIX网络编程 : 第2版. 第2卷, 进程间通信(中文版)
作者:[美] W·Richard Stevens
副标题:进程间通信
出版社:人民邮电出版社
出版年:2010-07
ISBN:9787115230287
行业:计算机
浏览数:26

内容简介

两卷本的《UNIX网络编程》是已故著名技术作家W. Richard Stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。良好的进程间通信(IPC)机制是提高UNIX程序性能的关键。本书全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程调用(RPC)。书中包含了大量经过优化的源代码,帮助读者加深理解。这些源代码可以从图灵网站本书网页免费注册下载。

本书是网络研究和开发人员公认的权威参考书,深入理解本书内容,方能设计出良好的UNIX软件。

......(更多)

作者简介

W. Richard Stevens 国际知名的UNIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文台从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。

......(更多)

目录

第一部分 简介

第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

......(更多)

读书文摘

... mutexes are for locking and cannot be used for waiting. A mutex is for locking and a condition variable is for waiting.

......(更多)

猜你喜欢

点击查看