图书介绍
UNIX系统编程PDF|Epub|txt|kindle电子书版本网盘下载
![UNIX系统编程](https://www.shukui.net/cover/58/33184062.jpg)
- (美)Kay A.Robbins,(美)Steven Robbins著;陈涓,赵振平译 著
- 出版社: 北京:机械工业出版社
- ISBN:7111161904
- 出版时间:2005
- 标注页数:656页
- 文件大小:37MB
- 文件页数:673页
- 主题词:UNIX操作系统
PDF下载
下载说明
UNIX系统编程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
目录出版者的话专家指导委员会译者序前言第一部分 基础知识第1章 技术对程序的冲击1
1.1 变化中的术语1
1.2 时间和速度2
1.3 多道程序设计和分时3
1.4 应用层的并发5
1.4.1 中断5
1.4.2 信号5
1.4.3 输入和输出6
1.4.4 进程、线程和资源共享6
1.4.5 共享内存的多个处理器6
1.5 安全和容错7
1.4.6 网络作为计算机7
1.6 侵入带来的缓冲区溢出8
1.6.1 缓冲区溢出的后果9
1.6.2 缓冲区溢出与安全10
1.7 UNIX标准11
1.8 扩展阅读12
第2章 程序、进程和线程14
2.1 程序怎样转换成进程14
2.2 线程和执行线程15
2.3 程序映像的布局15
2.4 库函数调用17
2.5 函数返回值和错误20
2.6 参数数组21
2.6.1 用makeargv创建参数数组22
2.6.2 makeargv的实现23
2.7 线程安全的函数26
2.8 静态变量的使用28
2.9 静态对象的结构29
2.10 进程环境34
2.11 进程终止36
2 12 练习:一个env工具38
2.13 练习:消息日志39
2.14 扩展阅读40
第3章 UNIX系统中的进程41
3.1 进程标识41
3.2 进程状态42
3.3 UNIX进程的创建与fork调用44
3.4 wait函数49
3.5 exec函数55
3.6 后台进程与守护进程59
3.7 临界区61
3.8 练习:进程链61
3.9 练习:进程扇62
3.10 扩展阅读63
第4章 UNIX I/O64
4.1 设备术语64
4.2 读和写64
4.3 打开和关闭文件72
4.4 select函数76
4.5 poll函数82
4.6 文件表示84
4.6.1 文件描述符85
4.6.2 文件指针和缓冲87
4.6.3 文件描述符的继承88
4.7 过滤器和重定向92
4.8 文件控制94
4.9 练习:原子日志97
4.10 练习:cat工具102
4.11 扩展阅读103
第5章 文件和目录104
5.1 UNIX文件系统导航104
5.1.1 当前工作目录105
5.2 目录访问108
5.1.2 搜索路径108
5.2.1 访问文件状态信息110
5.2.2 确定文件的类型113
5.3 UNIX文件系统的实现113
5.3.1 UNIX文件的实现114
5.3.2 目录的实现116
5.4 硬链接和符号链接116
5.4.1 创建或删除一个链接117
5.4.2 创建和删除符号链接120
5.5 练习:which命令125
5.6 练习:通知程序125
5.7 练习:news biff程序127
5.8 练习:遍历目录128
5.9 扩展阅读130
第6章 UNIX特殊文件131
6.1 管道131
6.2 流水线134
6.3 FIFO137
6.4 管道与客户机-服务器模型140
6.5 终端控制146
6.6 音频设备154
6.7 练习:音频158
6.8 练习:路障160
6.9 练习:stty命令161
6.11 扩展阅读162
6.10 练习:重温客户机-服务器162
第7章 项目:令牌环163
7.1 环形拓扑163
7.2 环的形成164
7.3 环的研究169
7.4 简单的通信170
7.5 用令牌实现互斥171
7.6 用投票实现互斥172
7.7 匿名环中的领导者选举173
7.8 通信中使用的令牌环174
7.9 应用流水线技术的预处理器176
7.10 并行环算法177
7.10.1 图像过滤178
7.10.2 矩阵乘法179
7.11 弹性环180
7.12 扩展阅读181
第二部分 异步事件第8章 信号183
8.1 信号的基本概念183
8.2 产生信号184
8.3 对信号掩码和信号集进行操作187
8.4 捕捉与忽略信号——sigaction192
8.5 等待信号——pause、sigsuspend和sigwait197
8.5.1 pause函数197
8.5.2 sigsuspend函数198
8.5.3 sigwait函数204
8.6 信号处理:错误和异步信号安全205
8.7 用siglongjmp和sigsetjmp进行程序控制207
8.8 用异步I/O编程209
8.9 练习:转储统计218
8.10 练习:同时操作慢速设备218
8.11 扩展阅读219
第9章 时间和定时器220
9.1 POSIX时间220
9.1.1 用从Epoch开始的秒数来表示时间220
9.1.2 显示日期和时间221
9.1.3 用struct timeval来表示时间223
9.1.4 使用实时时钟225
9.1.5 实耗时间和处理器时间的对比227
9.2 睡眠函数230
9.3 POSIX:XSI间隔定时器231
9.4 实时信号235
9.5 POSIX:TMR间隔定时器238
9.6 定时器漂移、超限和绝对时间242
9.7 扩展阅读250
第10章 项目:虚拟定时器251
10.1 项目概述251
10.2 简单的定时器253
10.3 对五个定时器中的一个进行设置254
10.3.1 virtualtimers对象254
10.3.2 hardwaretimer对象256
10.3.3 主程序的实现257
10.3.4 用show来置入定时器代码257
10.4 使用多个定时器262
10.4.1 设置多个定时器263
10.4.2 用多个定时器进行测试264
10.5 多定时器的健壮实现266
10.6 POSIX:TMR定时器的实现268
10.7 mycron,一个小型的任务调度工具269
10.8 扩展阅读269
第11章 项目:破解命令解释程序270
11.1 建造一个简单的命令解释程序270
11.2 重定向274
11.3 流水线275
11.4 前台的信号处理278
11.5.1 进程组283
11.5 进程组、会话和控制终端283
11.5.2 会话284
11.6 ush中的后台进程287
11.7 作业控制293
11.8 ush的作业控制295
11.8.1 一个作业列表对象295
11.8.2 ush中的作业列表296
11.8.3 ush中的作业控制297
11.8.4 等待流水线时的进程行为297
11.9 扩展阅读298
第三部分 并发第12章 POSIX线程299
12.1 监视多个文件描述符的方法299
12.2 使用线程来监视多个文件描述符300
12.3 线程管理302
12.3.1 用ID引用线程303
12.3.2 创建一个线程304
12.3.3 分离和连接305
12.3.4 退出和取消306
12.3.5 向线程中传递参数并将值返回309
12.4 线程安全315
12.5 用户线程和内核线程316
12.6 线程的属性318
12.6.1 线程状态319
12.6.2 线程栈320
12.6.3 线程调度321
12.7 练习:并行文件拷贝324
12.8 扩展阅读325
第13章 线程同步326
13.1 POSIX同步函数326
13.2 互斥锁326
13.2.1 创建并初始化一个互斥量327
13.2.2 销毁一个互斥量328
13.2.3 对互斥量的锁定和解锁329
13.2.4 保护不安全的库函数330
13.2.5 对标志符和全局值的同步331
13.2.6 使数据结构成为线程安全的335
13.3 最多一次和至少一次的执行336
13.4 条件变量340
13.4.1 创建和销毁条件变量341
13.4.2 等待并通知条件变量342
13.5 信号处理与线程345
13.5.1 将信号定向到一个特定的线程中去346
13.5.2 为线程屏蔽信号346
13.5.3 为信号处理指定专用线程347
13.6 读者和写者349
13.7 strerror_r的实现353
13.8 死锁和其他比较麻烦的问题354
13.9 练习:多个路障355
13.10 扩展阅读356
第14章 临界区和信号量357
14.1 处理临界区357
14.2 信号量359
14.3 POSIX:SEM无名信号量361
14.4 POSIX:SEM信号量操作363
14.5 POSIX:SEM命名信号量368
14.5.1 创建并打开命名信号量368
14.5.2 关闭并删除命名信号量370
14.6 练习:许可证管理器372
14.6.1 许可证对象372
14.6.2 runsim主程序373
14.6.3 对许可证管理器的扩展373
14.7 扩展阅读373
15.1 POSIX:XSI进程间通信374
15.1.1 标识并访问IPC对象374
第15章 POSIX IPC374
15.1.2 从命令解释程序中访问POSIX:XSI IPC资源375
15.2 POSIX:XSI信号量集376
15.2.1 信号量集的创建376
15.2.2 信号量集控制378
15.2.3 POSIX信号量集操作380
15.3 POSIX:XSI共享内存384
15.3.1 访问一个共享的内存段385
15.3.2 共享内存段的连接和分离385
15.3.3 控制共享内存386
15.3.4 共享内存实例387
15.4 POSIX:XSI消息队列392
15.6 练习:POSIX命名信号量398
15.5 练习:POSIX无名信号量398
15.7 练习:用共享内存实现管道399
15.8 练习:用消息队列实现管道401
15.9 扩展阅读402
第16章 项目:生产者消费者同步403
16.1 生产者-消费者问题403
16.2 受互斥锁保护的有限缓冲区404
16.3 使用信号量的缓冲区实现406
16.4 一个简单的生产者-消费者问题411
16.5 使用条件变量的有限缓冲区实现414
16.6 带有完成条件的缓冲区414
16.7.1 执行并行文件拷贝的生产者421
16.7 并行文件拷贝421
16.7.2 执行并行文件拷贝的消费者422
16.7.3 执行并行文件拷贝的main程序422
16.7.4 对并行文件拷贝的增强422
16.8 线程化打印服务器423
16.8.1 请求缓冲区424
16.8.2 生产者线程425
16.8.3 消费者线程425
16.8.4 打印服务器425
16.8.5 其他的增强功能425
16.9 扩展阅读426
第17章 项目:非完全并行虚拟机427
17.1 PVM的历史、术语和结构427
17.2 非完全并行虚拟机429
17.3 NTPVM项目概述430
17.3.1 NEWTASK分组432
17.3.2 DATA分组432
17.3.3 DONE分组433
17.4 调度程序的I/O和测试433
17.4.1 用多个窗口进行测试437
17.4.2 用远程日志进行测试439
17.5 没有输入的单任务440
17.6 串行的任务440
17.6.1 输入线程441
17.6.2 输出线程442
17.7 并发的任务442
17.8 分组通信、广播和路障443
17.9 终止和信号444
17.10 有序的消息传递444
17.11 扩展阅读444
第四部分 通信第18章 面向连接的通信445
18.1 客户机-服务器模型445
18.2 通信信道446
18.3 面向连接的服务器策略448
18.4 通用因特网通信接口450
18.4.1 错误处理452
18.4.2 读和写452
18.5 不同服务器策略的UICI实现452
18.6 UICI客户机455
18.7 UICI的套接字实现459
18.7.1 socket函数460
18.7.2 bind函数460
18.7.3 listen函数461
18.7.4 u_open的实现462
18.7.5 accept函数463
18.7.6 u_accept的实现464
18.7.7 connect函数465
18.7.8 u_connect的实现466
18.8 主机名和IP地址468
18.9 线程安全的UICI475
18.10 练习:ping服务器476
18.11 练习:音频的传输478
18.12 扩展阅读479
第19章 项目:WWW重定向480
19.1 万维网480
19.2 统一资源定位符481
19.3 HTTP入门482
19.3.1 客户请求483
19.3.2 服务器响应483
19.3.3 HTTP消息交换484
19.4 Web通信模式485
19.4.1 隧道486
19.4.2 代理487
19.4.3 高速缓存和透明性488
19.4.4 网关489
19.5 单连接的通过型监视器490
19.6 隧道服务器的实现492
19.7 用于测试的服务器驱动程序493
19.8 HTTP首部的解析494
19.9 简单的代理服务器495
19.10 代理监视器496
19.11 代理高速缓存499
19.12 门户网关499
19.13 用于负载平衡的网关500
19.14 事后的调查分析500
19.14.1 线程和时序错误501
19.14.2 未捕捉到的错误和错误的退出501
19.14.4 拙劣的测试及结果的表示502
19.14.3 书写风格和表示方法502
19.14.5 编程错误和不好的风格503
19.15 扩展阅读504
第20章 无连接通信和多播505
20.1 无连接通信入门505
20.2 无连接通信的简化接口506
20.2.1 主机名和u_buf_t结构507
20.2.2 UICI UDP的各种返回错误值508
20.2.3 UDP缓冲区大小与UICI UDP508
20.3 简单-请求协议508
20.4 请求-应答协议513
20.5 有超时和重试机制的请求-应答协议517
20.6 请求-应答-确认协议521
20.7 UICI UDP的实现522
20.7.1 u_openudp的实现522
20.7.2 sendto函数523
20.7.3 u_sendto和u_sendtohost的实现524
20.7.4 recvfrom函数525
20.7.5 u_recvfrom和u_recvfromtimed的实现526
20.7.6 主机名和u_buf_t527
20.8 UDP和TCP的比较528
20.9 多播529
20.9.1 多播编址530
20.9.2 u_join的实现531
20.10 练习:UDP端口服务器532
20.9.3 u_leave的实现532
20.11 练习:无状态文件服务器533
20.12 扩展阅读535
第21章 项目:因特网音频广播536
21.1 项目概述536
21.2 音频设备模拟538
21.3 单节目和单接收者的UDP实现538
21.3.1 简单实现538
21.3.2 接收者如何终止540
21.3.3 接收者进行缓冲以解决网络延迟问题541
21.3.4 接收者进行缓冲以解决乱序传送的问题542
21.4 多节目和多接收者的UDP实现545
21.4.1 多节目单接收者545
21.5 音频广播的UDP实现546
21.4.2 多节目多接收者546
21.6 音频广播的多播实现547
21.7 TCP实现的差异548
21.7.1 单节目单接收者的TCP实现548
21.7.2 多节目单接收者的TCP实现549
21.7.3 音频广播的TCP实现549
21.8 通过浏览器接收流式音频551
21.8.1 使用浏览器助手程序551
21.8.4 创建Web页面553
21.8.5 使用预定义的MIME类型553
21.8.3 设置浏览器以支持新的MIME类型553
21.8.2 为Web服务器设置一个新的MIME类型553
21.9 扩展阅读554
第22章 项目:服务器性能555
22.1 服务器性能的代价555
22.2 服务器体系结构555
22.3 项目概述559
22.4 单客户端驱动程序559
22.4.1 处理一个连接559
22.4.2 响应编程560
22.4.3 收集统计信息560
22.4.4 对客户端做测试561
22.5 多客户端驱动程序561
22.6 实现每个请求一个线程和每个请求一个进程563
22.8 使用有界缓冲的多线程工作者池564
22.7 多线程工作者池策略564
22.9 多进程工作者池565
22.10 磁盘I/O的影响565
22.11 性能研究568
22.11.1 基线测量568
22.11.2 波动性的根源569
22.11.3 测量的各种错误569
22.11.4 同步571
22.11.5 很简单的错误572
22.11.6 该测量哪些项目573
22.11.7 数据分析和表达575
22.12 书写报告575
22.12.1 引言575
22.12.4 结果及分析576
22.12.2 设计、实现和测试576
22.12.3 实验576
22.12.5 结论577
22.12.6 参考文献577
22.13 扩展阅读577
附录A UN?X基础578
附录B 重启库591
附录C UICI的实现599
附录D 志函数612
附录E POSIX扩展626
参考文献628
程序索引636
索引639