分享
 
 
 

UNIX网络编程 卷2:进程间通信(英文版·第2版)(图灵原版计算机科学系列)(UNIX Network Programming Volume2:Interprocess Communications,Second Edition)

UNIX网络编程 卷2:进程间通信(英文版·第2版)(图灵原版计算机科学系列)(UNIX Network Programming Volume2:Interprocess Communications,Second Edition)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 计算机与互联网,操作系统,Unix,
  品牌: 史蒂文斯(W.Richard Stevens)

基本信息·出版社:人民邮电出版社

·页码:561 页

·出版日期:2009年11月

·ISBN:9787115215116

·条形码:9787115215116

·包装版本:第1版

·装帧:平装

·开本:16

·正文语种:中文/英语

·丛书名:图灵原版计算机科学系列

·外文书名:UNIX Network Programming Volume2:Interprocess Communications,Second Edition

产品信息有问题吗?请帮我们更新产品信息。

内容简介《UNIX网络编程 卷2:进程间通信(英文版·第2版)》是一部UNIX网络编程的经典之作。进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。《UNIX网络编程 卷2:进程间通信(英文版·第2版)》从对Posix IPC和System V IPC的内部结构开始讨论,全面深入地介绍了4种IPC形式:消息传递(管道、FIFO、消息队列)、同步(互斥锁、条件变量、读写锁、文件与记录锁、信号量)、共享内存(匿名共享内存、具名共享内存)及远程过程调用(Solaris 门、Sun RPC)。附录中给出了测量各种IPC形式性能的方法。

《UNIX网络编程 卷2:进程间通信(英文版·第2版)》内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

作者简介W.Richarqd Stevens,国际知名的LINIX和网络专家,备受赞誉的技术作家。他1951年2月5日出生于赞比亚,后随父母回到美国。中学时就读于弗吉尼亚菲什伯恩军事学校,1973年获得密歇根大学航空和航天工程学士学位。1975年至1982年,他在亚利桑那州图森市的基特峰国家天文合从事计算机编程工作,业余时间喜爱飞行运动,做过兼职飞行教练。这期间他分别在1978年和1982年获得亚利桑那大学系统工程硕士和博士学位。此后他去康涅狄格州纽黑文的健康系统国际公司任主管计算机服务的副总裁。1990年他回到图森,从事专业技术写作和咨询工作。写下了多种经典的传世之作,包括《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷)。Steverls于1999年9月1日去世,年仅48岁。2000年他被国际权威机构USENIX追授“终身成就奖”。

媒体推荐“我做专业程序员已经二十余年了,每当要写新程序的时候,我都要参考这本书。Stevens的书是我进入VoIP和音频CODEC网络编程领域的敲门砖。”.

——C. T. Vanderdecken

“在我做过的项目中,已经记不清楚有多少次靠这套书挽狂澜于既倒……每位真正的UNIX系统程序员都应该买一套。”

——David Sharpe

“对每位UNIX平台的程序员而言,这本书都是必备的。它深入阐释了UNIX平台上的各种IPC API。既涵盖System V也涉及POSIX标准,对于IPC的论述无可匹敌。书末的附录对各种管道、FIFO、Posix消息队列、System V消息队列、门、Sun RPC的性能进行了比较,我从来没有看到任何书能如此广泛而深入地介绍这一主题。更何况,它出自权威人物之手。”

——asingh

“Stevens是UNIX网络编程的‘神’,至少是我的‘神’。”

——Matthew MacGibbon

编辑推荐《UNIX网络编程 卷2:进程间通信(英文版·第2版)》:两卷本的《UNIX网络编程》是已故著名技术作家W.Richard Stevens的传世之作。卷2着重讨论如何让应用程序与在其他机器上的应用程序进行对话。

良好的进程间通信(IPC)机制是提高UNIX程序性能的关键。《UNIX网络编程 卷2:进程间通信(英文版·第2版)》全面深入地讲解了各种进程间通信形式,包括消息传递、同步、共享内存及远程调用(RPC)。书中包含了大量经过优化的源代码,帮助读者加深理解。这些源代码可以从图灵网站《UNIX网络编程 卷2:进程间通信(英文版·第2版)》网页免费注册下载。

《UNIX网络编程 卷2:进程间通信(英文版·第2版)》是网络研究和开发人员公认的权威参考书,深入理解《UNIX网络编程 卷2:进程间通信(英文版·第2版)》内容,方能设计出良好的UNIX软件。

《UNIX网络编程 卷2:进程间通信(英文版·第2版)》中文版预计在2010年6月出版,敬请期待。

UNIX和网络专家W. Richard Stevens的传世之作

UNIX系统网络编程人员的必备经典

内容详尽权威,提供精选习题及答案

详细描述4种不同的IPC形式

在Unix系统上测试通过的真实、可运行的代码让读者轻松深入学习网络编程复杂的新技术。

目录

Part 1 Introduction 1

简介

Chapter 1 Introduction 3

简介

1.1 Introduction 3

概述

1.2 Processes, Threads, and the Sharing of Information 5

进程、线程与信息共享

1.3 Persistence of IPC Objects 6

IPC对象的持续性

1.4 Name Spaces 7

名字空间

1.5 Effect of fork, exec, and exit on IPC Objects 9

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

1.6 Error Handling: Wrapper Functions 11

错误处理:包装函数

1.7 Unix Standards 13

Unix标准

1.8 Road Map to IPC Examples in the Text 15

本书中IPC示例的路线图

1.9 Summary 16

小结

Chapter 2 Posix IPC 19

2.1 Introduction 19

概述

2.2 IPC Names 19

IPC名字

2.3 Creating and Opening IPC Channels 22

创建与打开IPC通道

2.4 IPC Permissions 25

IPC权限

2.5 Summary 26

小结

Chapter 3 System V IPC 27

3.1 Introduction 27

概述

3.2 key_t Keys and ftok Function 28

key_t键和ftok函数

3.3 ipc_perm Structure 30

ipc_perm结构

3.4 Creating and Opening IPC Channels 30

创建与打开IPC通道

3.5 IPC Permissions 32

IPC权限

3.6 Identifier Reuse 34

标识符重用

3.7 ipcs and ipcrm Programs 36

ipcs和ipcrm程序

3.8 Kernel Limits 36

内核限制

3.9 Summary 38

小结

Part 2 Message Passing 41

消息传递

Chapter 4 Pipes and FIFOs 43

管道和FIFO

4.1 Introduction 43

概述

4.2 A Simple Client-Server Example 43

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

4.3 Pipes 44

管道

4.4 Full-Duplex Pipes 50

全双工管道

4.5 popen and pclose Functions 52

popen和pclose函数

4.6 FIFOs 54

4.7 Additional Properties of Pipes and FIFOs 58

管道和FIFO的额外属性

4.8 One Server, Multiple Clients 60

单服务器,多客户

4.9 Iterative versus Concurrent Servers 66

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

4.10 Streams and Messages 67

流与消息

4.11 Pipe and FIFO Limits 72

管道和FIFO限制

4.12 Summary 73

小结

Chapter 5 Posix Message Queues 75

Posix消息队列

5.1 Introduction 75

概述

5.2 mq_open, mq_close, and mq_unlink Functions 76

mq_open、mq_close和mq_unlink函数

5.3 mq_getattr and mq_setattr Functions 79

mq_getattr和mq_setattr函数

5.4 mq_send and mq_receive Functions 82

mq_send和mq_receive函数

5.5 Message Queue Limits 86

消息队列限制

5.6 mq_notify Function 87

mq_notify函数

5.7 Posix Realtime Signals 98

Posix实时信号

5.8 Implementation Using Memory-Mapped I/O 106

使用内存映射I/O实现

5.9 Summary 126

小结

Chapter 6 System V Message Queues 129

System V消息队列

6.1 Introduction 129

概述

6.2 msgget Function 130

msgget函数

6.3 msgsnd Function 131

msgsnd函数

6.4 msgrcv Function 132

msgrcv函数

6.5 msgctl Function 134

msgctl函数

6.6 Simple Programs 135

简单的程序

6.7 Client-Server Example 140

客户-服务器示例

6.8 Multiplexing Messages 142

多路复用消息

6.9 Message Queues with select and poll 151

消息队列上使用select和poll

6.10 Message Queue Limits 152

消息队列限制

6.11 Summary 155

小结

Part 3 Synchronization 157

同步

Chapter 7 Mutexes and Condition Variables 159

互斥锁和条件变量

7.1 Introduction 159

概述

7.2 Mutexes: Locking and Unlocking 159

互斥锁:加锁与解锁

7.3 Producer-Consumer Problem 161

生产者 消费者问题

7.4 Locking versus Waiting 165

加锁与等待

7.5 Condition Variables: Waiting and Signaling 167

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

7.6 Condition Variables: Timed Waits and Broadcasts 171

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

7.7 Mutexes and Condition Variable Attributes 172

互斥锁和条件变量的属性

7.8 Summary 174

小结

Chapter 8 Read-Write Locks 177

读写锁

8.1 Introduction 177

概述

8.2 Obtaining and Releasing Read-Write Locks 178

获取与释放读写锁

8.3 Read-Write Lock Attributes 179

读写锁属性

8.4 Implementation Using Mutexes and Condition Variables 179

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

8.5 Thread Cancellation 187

线程取消

8.6 Summary 192

小结

Chapter 9 Record Locking 193

记录加锁

9.1 Introduction 193

概述

9.2 Record Locking versus File Locking 197

记录加锁与文件加锁

9.3 Posix fcntl Record Locking 199

Posix fcntl记录加锁

9.4 Advisory Locking 203

劝告性加锁

9.5 Mandatory Locking 204

强制性加锁

9.6 Priorities of Readers and Writers 207

读出者和写入者的优先级

9.7 Starting Only One Copy of a Daemon 213

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

9.8 Lock Files 214

锁文件

9.9 NFS Locking 216

NFS加锁

9.10 Summary 216

小结

Chapter 10 Posix Semaphores 219

Posix信号量

10.1 Introduction 219

概述

10.2 sem_open, sem_close, and sem_unlink Functions 225

sem_open、sem_close和sem_unlink函数

10.3 sem_wait and sem_trywait Functions 226

sem_wait和sem_trywait函数

10.4 sem_post and sem_getvalue Functions 227

sem_post和sem_getvalue函数

10.5 Simple Programs 228

简单的程序

10.6 Producer-Consumer Problem 233

生产者-消费者问题

10.7 File Locking 238

文件加锁

10.8 sem_init and sem_destroy Functions 238

sem_init和sem_destroy函数

10.9 Multiple Producers, One Consumer 242

多生产者,单消费者

10.10 Multiple Producers, Multiple Consumers 245

多生产者,多消费者

10.11 Multiple Buffers 249

多缓冲区

10.12 Sharing Semaphores between Processes 256

进程间共享信号量

10.13 Semaphore Limits 257

信号量限制

10.14 Implementation Using FIFOs 257

使用FIFO实现

10.15 Implementation Using Memory-Mapped I/O 262

使用内存映射I/O实现

10.16 Implementation Using System V Semaphores 271

使用System V信号量实现

10.17 Summary 278

小结

Chapter 11 System V Semaphores 281

System V信号量

11.1 Introduction 281

概述

11.2 semget Function 282

semget函数

11.3 semop Function 285

semop函数

11.4 semctlFunction 287

semctl函数

11.5 Simple Programs 289

简单的程序

11.6 File Locking 294

文件加锁

11.7 Semaphore Limits 296

信号量限制

11.8 Summary 300

小结

Part 4 Shared Memory 301

共享内存

Chapter 12 Shared Memory Introduction 303

共享内存简介

12.1 Introduction 303

概述

12.2 mmap, munmap, and msync Functions 307

mmap、munmap和msync函数

12.3 Increment Counter in a Memory-Mapped File 311

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

12.4 4.4BSD Anonymous Memory Mapping 315

4.4BSD匿名内存映射

12.5 SVR4 /dev/zero Memory Mapping 316

SVR4 /dev/zero内存映射

12.6 Referencing Memory-Mapped Objects 317

引用内存映射的对象

12.7 Summary 322

小结

Chapter 13 Posix Shared Memory 325

Posix共享内存

13.1 Introduction 325

概述

13.2 shm_open and shm_unlink Functions 326

shm_open和shm_unlink函数

13.3 ftruncate and fstat Functions 327

ftruncate和fstat函数

13.4 Simple Programs 328

简单的程序

13.5 Incrementing a Shared Counter 333

共享计数器递加

13.6 Sending Messages to a Server 336

向服务器发送消息

13.7 Summary 342

小结

Chapter 14 System V Shared Memory 343

System V共享内存

14.1 Introduction 343

概述

14.2 shmget Function 343

shmget函数

14.3 shmat Function 344

shmat函数

14.4 shmdt Function 345

shmdt函数

14.5 shmctl Function 345

shmctl函数

14.6 Simple Programs 346

简单的程序

14.7 Shared Memory Limits 349

共享内存限制

14.8 Summary 351

小结

Part 5 Remote Procedure Calls 353

远程过程调用

Chapter 15 Doors 355

15.1 Introduction 355

概述

15.2 door_call Function 361

door_call函数

15.3 door_create Function 363

door_create函数

15.4 door_return Function 364

door_return函数

15.5 door_cred Function 365

door_cred函数

15.6 door_info Function 365

door_info函数

15.7 Examples 366

示例

15.8 Descriptor Passing 379

描述符传递

15.9 door_server_create Function 384

door_server_create函数

15.10 door_bind, door_unbind, and door_revoke Functions 390

door_bind、door_unbind和door_revoke函数

15.11 Premature Termination of Client or Server 390

客户或服务器的过早终止

15.12 Summary 397

小结

Chapter 16 Sun RPC 399

16.1 Introduction 399

概述

16.2 Multithreading 407

多线程技术

16.3 Server Binding 411

服务器绑定

16.4 Authentication 414

鉴别

16.5 Timeout and Retransmission 417

超时和重传

16.6 Call Semantics 422

调用语义

16.7 Premature Termination of Client or Server 424

客户或服务器的过早终止

16.8 XDR: External Data Representation 426

XDR:外部数据表示

16.9 RPC Packet Formats 444

RPC分组格式

16.10 Summary 449

小结

Epilogue 453

后记

Appendix A Performance Measurements 457

性能测量

A.1 Introduction 457

概述

A.2 Results 458

结果

A.3 Message Passing Bandwidth Programs 467

消息传递带宽程序

A.4 Message Passing Latency Programs 480

消息传递延迟程序

A.5 Thread Synchronization Programs 486

线程同步程序

A.6 Process Synchronization Programs 497

进程同步程序

Appendix B A Threads Primer 501

线程入门

B.1 Introduction 501

概述

B.2 Basic Thread Functions: Creation and Termination 502

基本线程函数:创建和终止

Appendix C Miscellaneous Source Code 505

其他源代码

C.1 unpipc.h Header 505

unpipc.h头文件

C.2 config.h Header 509

config.h头文件

C.3 Standard Error Functions 510

标准错误处理函数

Appendix D Solutions to Selected Exercises 515

精选习题答案

Bibliography 535

参考文献

Index 539

索引

……[看更多目录]

序言概述

大多数重要的程序都涉及进程间通信(Interprocess Communication,IPC)。这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程序更好。从历史角度看,应用程序有如下几种构建方法。

(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卷[stevens 1998]中有详细讨论。

文摘插图:

UNIX网络编程 卷2:进程间通信(英文版·第2版)(图灵原版计算机科学系列)(UNIX Network Programming Volume2:Interprocess Communications,Second Edition)

1 The two processes on the left are sharing some information that resides in a file in the filesystem. To access this data, each process must go through the kernel (e.g., read, write iseek, and the like). Some form of synchronization is required when a file is being updated, both to protect multiple writers from each other, and to protect one or more readers from a writer.

2 The two processes in the middle are sharing some information that resides within the kernel. A pipe is an example of this type of sharing, as are System V message queues and System V semaphores. Each operation to access the shared information now involves a system call into the kernel.

3 The two processes on the right have a region of shared memory that each process can reference. Once the shared memory is set up by each process, the processes can access the data in the shared memory without involving the kernel at all. Some form of synchronization is required by the processes that are sharing the memory.

Note that nothing restricts any of the IPC techniques that we describe to only two processes. Any of the techniques that we describe work with any number of processes. We show only two processes in Figure 1.1 for simplicity.

Threads

Although the concept of a process within the Unix system has been used for a long time, the concept of multiple threads within a given process is relatively new. The Posix.1 threads standard (called "Pthreads") was approved in 1995. From an IPC perspective.

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有