《实用UNIX编程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)(K.A.罗宾斯)Kay A.Robbins,(美)(S.罗宾斯)Steven Robbins著;刘宗田等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:1999
  • ISBN:7111073819
  • 页数:448 页
图书介绍:

译者序 1

前言 1

第一篇基础知识 1

第1章并发 1

1.1多道程序设计和多重任务处理 1

目录 1

1.2应用层次上的并发 4

1.2.1 中断 4

1.2.2信号 4

1.2.3输入和输出 5

1.2.4线程和资源共享 5

1.2.5分布式计算网络 6

1.3 UNIX标准 6

1.4 UNIX中的编程 7

1.5使函数安全 14

1.7附加读物 16

1.6练习:参数数组 16

第2章程序和进程 18

2.1可执行程序的布局 18

2.2静态对象 21

2.3进程ID 25

2.4进程状态 26

2.5进程创建和UNIX fork 28

2.6 wait系统调用 31

2.7 exec系统调用 35

2.8后台进程和守护进程 39

2.9进程环境 41

2.10 UNIX中的进程终止 44

2.11临界区 45

2.12练习:进程链 46

2.14练习:简单的biff 48

2.13.2测试runsim程序 48

2.13.1 runsim的说明 48

2.13练习:进程扇 48

2.15练习:新闻biff 49

2.15.1 Biffing一个单个文件 50

2.15.2列表对象的创建 50

2.16附加读物 51

第3章文件 52

3.1目录和路径 52

3.1.1读取目录 55

3.1.2搜索路径 57

3.1.3 UNIX文件系统 58

3.2 UNIX的文件表示 58

3.2.1目录表示 61

3.2.2链接 61

3.3文件句柄表示 66

3.3.1文件描述符 66

3.3.2文件指针和缓冲 69

3.3.3文件描述符的继承 70

3.4过滤程序和重定向 73

3.5管道 74

3.6读和写文件 77

3.7非阻塞的I/O 80

3.8 select调用 81

3.9 FIFO 82

3.10特殊文件——音频设备 85

3.11练习:遍历目录 89

3.12练习:proc文件系统 91

3.13练习:音频 93

3.14练习:终端控制 94

3.15附加读物 95

第4章工程:令牌环 96

4.1形成一个环 96

4.2简单通信 103

4.3令牌的互斥 104

4.4通过投票的互斥 105

4.5匿名环上的领袖选举 106

4.6用于通信的令牌环 107

4.7流水线预处理器 109

4.8并行令牌算法 110

4.8.1图像滤波 110

4.8.2矩阵乘法 112

4.9 可伸缩环 113

4.10附加读物 114

第二篇异步事件 115

第5章信号 115

5.1发送信号 115

5.2信号屏蔽和信号集合 119

5.3 sigaction函数 122

5.4 pause函数和sigsuspend函数 125

5.5一个例子——biff 127

5.6系统调用和信号 129

5.7 siglongjmp和sigsetjmp函数 132

5.8实时信号 133

5.9异步I/O 136

5.10练习:统计运行时间 139

5.11练习:文件系统二进程 139

5.12练习:假脱机一个“慢”设备 141

5.13附加读物 141

第6章工程:计时器 142

6.1 UNIX中的计时器 142

6.2 间隔计时器 146

6.2.1 Spec 1170的间隔计时器 146

6.2.2 POSIX的间隔计时器 149

6.3 工程概述 151

6.4简单的计时器 152

6.5设置五个独立计时器中的一个 154

6.5.1 mytimers对象 155

6.5.2 hardware_timer对象 157

6.5.3主程序的实现 158

6.5.4 showall对象 158

6.6多计时器 163

6.6.1设置多计时器 164

6.6.2 对多计时器进行测试 166

6.7多处理器的安全执行 168

6.8 cron工具 169

6.9 POSIX计时器实现 169

6.10附加读物 176

第7章工程:解剖shell 177

7.1一个简单的shell 178

7.2重定向 182

7.3管道线 184

7.4信号 186

7.5进程组、会议和控制终端 190

7.6在ush中处理后台进程 193

7.7作业控制 197

7.8 ush的作业控制 199

7.8.1作业列表对象 199

7.8.2 ush的作业列表 200

7.8.3 ush中的作业控制 201

7.9附加读物 201

第三篇并 发 203

第8章临界区和信号量 203

8.1原子操作 204

8.2信号量 207

8.2.1 用TestAndSet实现信号量 209

8.2.2无须“忙等待”信号量 211

8.2.3 AND同步机制 211

8.3 POSIX信号量 213

8.3.2 POSIX信号量操作 214

8.3.1无名信号量的初始化 214

8.3.3有名信号量 216

8.4系统V中的信号量 217

8.4.1信号量集 218

8.4.2信号量创建 218

8.4.3系统V信号量操作 220

8.4.4信号量控制 225

8.4.5信号量状态 227

8.5信号量和信号 227

8.6练习:POSIX无名信号量 228

8.7练习:POSIX有名信号量 228

8.8练习:许可权管理 229

8.9练习:系统V共享存储器 230

8.9.1系统V共享存储器的综述 230

8.9.2软管道实现的规格说明 231

8.10练习:系统V消息队列 233

8.11附加读物 234

第9章POSIX线程 235

9.1问题的引出:监视文件描述符 236

9.1.1简单轮询 236

9.1.2消除忙等的异步I/O 238

9.1.3使用select来消除忙等 240

9.1.4使用poll来消除忙等 241

9.1.5多线程 242

9.2 POSIX线程 245

9.3基本线程管理 246

9.4用户线程与内核线程 252

9.5线程属性 254

9.6练习:并行文件拷贝 256

9.7附加读物 257

第10章线程同步 258

10.1互斥 259

10.2信号量 263

10.3条件变量 267

10.4信号处理和线程 273

10.5练习:线程化打印服务 280

10.6附加读物 283

第11章工程:简化的并行虚拟机 284

11.1简化的并行虚拟机 285

11.2 NTPVM工程概貌 286

11.2.1 START_TASK包 288

11.2.2 DATA包 289

11.2.3 DONE包 289

11.3分派程序的I/O和测试 290

11.4无输入的单任务 296

11.5顺序任务 297

11.5.1版本A:非线程分派程序的实现 297

11.5.2版本B:线程分派程序的实现 298

11.6.1 版本A:用select和poll来实现 300

11.6并发任务 300

11.6.2版本B:用线程来实现 301

11.7 广播和BARRIER 301

11.8Terminate和Signals 302

11.9附加读物 302

第四篇通信 303

第12章客户机/服务器通信 303

12.1客户机/服务器策略 303

12.2通用Internet通信接口 306

12.2.1 UICI服务器 308

12.2.2 UICI客户机 310

12.2.3 UICI实现 312

12.3网络通信 313

12.4 UICI的套接口实现 314

12.5传输层接口 319

12.6流 324

12.7 UICI的流实现 328

12.8 UICI的线程安全 330

12.9练习:音频传输 333

12.10练习:Ping服务器 334

12.11附加读物 335

第13章工程:Internet广播 336

13.1多路传输概述 336

13.2单向通信 337

13.3双向通信 338

13.4传输缓冲区 339

13.5多路传输缓冲区 341

13.6网络接收器 342

13.7 收听与关闭 343

13.8网络广播者 343

13.10附加读物 344

13.9信号处理 344

第14章远程过程调用 345

14.1基本操作 345

14.2将简单局域调用转换为RPC 349

14.3改进的远程伪随机数服务 357

14.4服务状态与有效请求 361

14.5远程有效文件服务 365

14.6联编与命名服务 368

14.7失败 369

14.8 NFS——网络文件系统 370

14.9线程与远程过程调用 374

14.10练习:无状态文件服务 377

14.11附加读物 378

第15章工程:元组空间 379

15.1 Linda语言 380

15.2 Richard:一种简化的Linda语言 382

15.3.1元组数据结构 384

15.3简单的Richard元组空间 384

15.3.2表示元组空间 385

15.3.3元组空间操作 386

15.3.4转换为远程服务器 387

15.4黑板:一个元组空间应用 390

15.4.1 n皇后问题 390

15.4.2贪婪回溯算法 393

15.4.3黑板与agent 395

15.5 Richard中的活动元组 395

15.5.1简化的设计 395

15.5.2与eval的通信 397

15.6以元组空间作为Richard中的元组 399

15.7 Richard多线程服务器 402

15.8附加读物 403

附录A UNIX基础 405

A.1获得帮助 405

第五篇附录 405

A.1.1系统调用与C库函数 407

A.1.2 UNIX命令与实用程序 408

A.1.3与man相关的命令 410

A.2编译 410

A.3 Makefiles 411

A.4头文件 413

A.5链接与库 414

A.6调试帮助 415

A.7用户环境 417

A.8附加读物 419

附录B UICI实现 420

B.1 UICI原型 420

B.2 Socket实现 420

B.3 TLI实现 428

B.4流实现 433

B.5线程安全UICI实现 438