图书介绍
UNIX系统编程 通信、并发与线程2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- (美)凯·罗宾斯(Kay Robbins),斯蒂芬·罗宾斯(Steve Robbins) 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121340352
- 出版时间:2018
- 标注页数:876页
- 文件大小:75MB
- 文件页数:898页
- 主题词:UNIX操作系统-程序设计
PDF下载
下载说明
UNIX系统编程 通信、并发与线程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 基础知识3
第1章 技术对程序的影响3
1.1 术语的变化3
1.2 时间和速度5
1.3 多道程序设计和分时6
1.4 应用层的并发8
1.4.1 中断8
1.4.2 信号9
1.4.3 输入和输出10
1.4.4 进程、线程和资源共享10
1.4.5 具有共享内存的多个处理器11
1.4.6 网络作为计算机11
1.5 安全和容错12
1.6 非法入侵造成的缓冲区溢出13
1.6.1 缓冲区溢出的后果14
1.6.2 缓冲区溢出和安全16
1.7 UNIX标准17
1.8 延伸阅读19
第2章 程序、线程和进程21
2.1 程序是如何成为进程的21
2.2 线程和执行线程22
2.3 程序映象的布局23
2.4 库函数调用26
2.5 函数返回值和错误29
2.6 参数数组31
2.6.1 用makeargv函数创建一个数组32
2.6.2 makeargv函数的实现34
2.7 线程安全函数38
2.8 静态变量的使用40
2.9 静态对象的结构42
2.10 进程环境48
2.11 进程终止51
2.12 练习:一个env实用程序54
2.13 练习:消息日志55
2.14 延伸阅读57
第3章 UNIX中的进程58
3.1 进程标识符58
3.2 进程状态60
3.3 UNIX进程创建和fork函数63
3.4 wait函数70
状态值76
3.5 exec函数77
3.6 后台进程和守护进程83
3.7 临界区86
3.8 练习:进程链87
3.9 练习:进程扇88
3.10 延伸阅读89
第4章 UNIX I/O90
4.1 设备术语90
4.2 读/写91
4.3 打开和关闭文件102
4.4 select函数107
4.5 poll函数116
4.6 文件表示119
4.6.1 文件描述符119
4.6.2 文件指针和缓冲122
4.6.3 文件描述符的继承124
4.7 过滤器和重定向128
4.8 文件控制132
4.9 练习:原子日志135
原子日志库139
4.10 练习:cat实用程序141
4.11 延伸阅读143
第5章 文件和目录144
5.1 UNIX文件系统导航144
5.1.1 当前工作目录145
5.1.2 搜索路径150
5.2 目录访问151
5.2.1 访问文件状态信息153
5.2.2 确定文件的类型156
5.3 UNIX文件系统实现157
5.3.1 UNIX文件实现158
5.3.2 目录实现161
5.4 硬链接和符号链接161
5.4.1 创建或删除一个链接162
5.4.2 创建和删除符号链接167
5.5 练习:which命令172
5.6 练习:邮件通知程序173
5.7 练习:新闻通知程序176
5.8 练习:遍历目录177
5.9 延伸阅读179
第6章 UNIX特殊文件180
6.1 管道180
6.2 流水线184
6.3 FIFO189
6.4 管道与客户机-服务器模型193
6.5 终端控制200
规范和非规范的输入处理208
6.6 音频设备212
6.7 练习:音频218
6.8 练习:屏障220
6.9 练习:stty命令221
6.10 练习:重提客户机-服务器222
6.11 延伸阅读222
第7章 项目:令牌环224
7.1 环形拓扑224
7.2 环的形成226
7.3 环的探讨232
7.4 简单通信234
7.5 用令牌环实现互斥235
7.6 用投票实现互斥237
7.7 匿名环中的领导者选举238
7.8 用于通信的令牌环240
7.9 流水线预处理机242
7.10 并行环算法244
7.10.1 图像过滤244
7.10.2 矩阵乘法247
7.11 弹性环248
7.12 延伸阅读249
第二部分 异步事件253
第8章 信号253
8.1 信号的基本概念253
8.2 信号的产生254
8.3 对信号掩码和信号集进行操作259
8.4 捕获和忽略信号—sigaction266
8.5 等待信号—pause、sigsuspend和sigwait272
8.5.1 pause函数272
8.5.2 sigsuspend函数274
8.5.3 sigwait函数282
8.6 处理信号:错误和异步信号安全283
8.7 用siglongjmp和sigsetjmp进行程序控制286
8.8 使用异步I/O编程288
8.9 练习:转储统计300
8.10 练习:同时处理慢速设备301
8.11 延伸阅读301
第9章 时间和定时器303
9.1 POSIX时间303
9.1.1 用从Epoch开始的秒数表示时间304
9.1.2 显示日期和时间305
9.1.3 使用struct timeval表示时间308
9.1.4 使用实时时钟311
9.1.5 耗时和处理器时间的对比313
9.2 睡眠函数316
9.3 POSIX:XSI间隔定时器319
9.4 实时信号323
9.5 POSIX:TMR间隔定时器328
9.6 定时器漂移、溢出和绝对时间333
9.7 延伸阅读344
第10章 项目:虚拟定时器345
10.1 项目概述345
10.2 简单的定时器348
10.3 对5个定时器中的一个进行设置351
10.3.1 virtualtimers对象351
10.3.2 hardwaretimer对象353
10.3.3 主程序实现354
10.3.4 用show谱写定时器代码355
10.4 使用多个定时器361
10.4.1 设置多个定时器364
10.4.2 用多个定时器进行测试365
10.5 多定时器的健壮实现369
10.6 POSIX:TMR定时器的实现371
10.7 一个小型的cron工具mycron372
10.8 延伸阅读372
第11章 项目:破解shell373
11.1 构建一个简单的shell373
11.2 重定向378
11.3 流水线382
11.4 前台的信号处理385
11.5 进程组、会话和控制终端391
11.5.1 进程组391
11.5.2 会话393
11.6 ush中的后台进程396
11.7 作业控制403
11.8 ush的作业控制407
11.8.1 一个作业列表对象407
11.8.2 ush中的作业列表409
11.8.3 ush中的作业控制409
11.8.4 等待流水线时的进程行为410
11.9 延伸阅读411
第三部分 并发415
第12章 POSIX线程415
12.1 监视文件描述符的方法415
12.2 使用线程监视多个文件描述符417
12.3 线程管理420
12.3.1 用ID引用线程421
12.3.2 创建一个线程422
12.3.3 分离和连接423
12.3.4 退出和取消426
12.3.5 向线程传递参数并返回值429
12.4 线程安全438
12.5 用户级线程VS内核级线程439
12.6 线程属性442
12.6.1 线程状态443
12.6.2 线程栈444
12.6.3 线程调度446
12.7 练习:并行文件复制450
12.8 延伸阅读451
第13章 线程同步452
13.1 POSIX同步函数452
13.2 互斥锁453
13.2.1 创建并初始化一个互斥量454
13.2.2 销毁一个互斥量455
13.2.3 锁定和解锁互斥量456
13.2.4 保护不安全的库函数458
13.2.5 同步标志和全局值459
13.2.6 让数据结构成为线程安全的465
13.3 最多一次和至少一次的执行467
13.4 条件变量471
13.4.1 条件变量的创建和销毁473
13.4.2 等待并通知条件变量475
13.5 信号处理和线程478
13.5.1 将信号定向到一个特定的线程中479
13.5.2 为线程屏蔽信号480
13.5.3 信号处理的专用线程480
13.6 读者和写者484
13.7 strerror_r实现489
13.8 死锁和其他讨厌的问题491
13.9 练习:多个屏障492
13.10 延伸阅读492
第14章 临界区和信号量493
14.1 临界区的处理493
14.2 信号量496
14.3 POSIX:SEM匿名信号量499
14.4 POSIX:SEM信号量操作501
14.5 POSIX:SEM命名信号量508
14.5.1 创建并打开命名信号量509
14.5.2 关闭信号量并删除其链接512
14.6 练习:许可管理器514
14.6.1 license对象515
14.6.2 runsim主程序515
14.6.3 对许可管理器的扩展516
14.7 延伸阅读516
第15章 POSIX IPC517
15.1 POSIX:XSI进程间通信517
15.1.1 标识并访问IPC对象518
15.1.2 在shell中访问POSIX:XSI IPC资源519
15.2 POSIX:XSI信号量集520
15.2.1 信号量的创建521
15.2.2 信号量的控制523
15.2.3 POSIX信号量集操作525
15.3 POSIX:XSI共享内存532
15.3.1 访问共享内存段532
15.3.2 共享内存段的连接和分离533
15.3.3 控制共享内存534
15.3.4 共享内存示例535
15.4 POSIX:XSI消息队列541
访问消息队列542
15.5 练习:POSIX匿名信号量549
15.6 练习:POSIX命名信号量550
15.7 练习:用共享内存实现管道551
15.8 练习:用消息队列实现管道554
15.9 延伸阅读554
第16章 项目:生产者-消费者同步555
16.1 生产者-消费者问题555
16.2 受互斥锁保护的有界缓冲区557
16.3 使用信号量的缓冲区实现560
16.4 一个简单的生产者-消费者问题简介566
16.5 使用条件变量的有界缓冲区570
16.6 带有完成条件的缓冲区571
16.7 并行文件复制580
16.7.1 并行文件复制的生产者580
16.7.2 并行文件复制的消费者581
16.7.3 并行文件复制的main程序582
16.7.4 并行文件复制的增强582
16.8 线程化打印服务器583
16.8.1 请求缓冲区584
16.8.2 生产者线程585
16.8.3 消费者线程586
16.8.4 打印服务器586
16.8.5 其他增强功能586
16.9 延伸阅读587
第17章 项目:非完全并行虚拟机588
17.1 PVM的历史、术语和结构588
17.2 非完全并行虚拟机591
17.3 NTPVM项目概述593
17.3.1 NEWTASK分组596
17.3.2 DATA分组596
17.3.3 DONE分组597
17.4 调度程序的I/O和测试598
17.4.1 用多个窗口测试604
17.4.2 用远程日志测试605
17.5 没有输入的单任务607
17.6 顺序任务608
17.6.1 输入线程609
17.6.2 输出线程610
17.7 并发任务611
17.8 分组通信、广播和屏障611
17.9 终止和信号612
17.10 有序的消息传递613
17.11 延伸阅读613
第四部分 通信617
第18章 面向连接的通信617
18.1 客户机-服务器模型617
18.2 通信信道618
18.3 面向连接的服务器策略622
18.4 通用因特网通信接口(UICI)625
18.4.1 处理错误627
18.4.2 读和写627
18.5 不同服务器策略的UICI实现628
18.6 UICI客户机631
18.7 UICI的套接字实现637
18.7.1 socket函数638
18.7.2 bind函数639
18.7.3 listen函数641
18.7.4 u_open函数的实现642
18.7.5 accept函数643
18.7.6 u_accept函数的实现645
18.7.7 connect函数646
18.7.8 u_connect函数的实现647
18.8 主机名和IP地址649
18.9 线程安全的UICI658
18.10 练习:ping服务器661
18.11 练习:音频的传输662
18.12 延伸阅读664
第19章 项目:WWW重定向665
19.1 万维网665
19.2 统一资源定位符(URL)666
19.3 HTTP入门668
19.3.1 客户端请求669
19.3.2 服务器响应669
19.3.3 HTTP消息交换670
19.4 Web通信模式673
19.4.1 隧道673
19.4.2 代理674
19.4.3 高速缓存和透明性676
19.4.4 网关678
19.5 单连接的通过型监控679
19.6 隧道服务器的实现682
19.7 用于测试的服务器驱动程序682
19.8 HTTP头解析684
19.9 简单的代理服务器686
19.10 代理监视器688
19.11 代理高速缓存691
19.12 门户网站的网关692
19.13 用于负载平衡的网关692
19.14 事后的调查分析693
19.14.1 线程和计时错误693
19.14.2 未捕获的错误和错误的退出694
19.14.3 书写风格和表示695
19.14.4 糟糕的测试和结果表示696
19.14.5 编程错误和不好的风格697
19.15 延伸阅读698
第20章 无连接通信和多播699
20.1 无连接通信简介699
20.2 无连接通信的简化接口701
20.2.1 主机名和u_buf_t结构703
20.2.2 UICI UDP的返回错误703
20.2.3 UDP缓冲区大小和UICI UDP703
20.3 简单-请求协议704
20.4 请求-应答协议710
20.5 有超时和重试的请求-应答716
20.6 请求-应答-确认协议722
20.7 UICI UDP的实现723
20.7.1 u_openudp函数的实现723
20.7.2 sendto函数725
20.7.3 u_sendto和u_sendtohost函数的实现726
20.7.4 recvfrom函数727
20.7.5 u_recvfrom和u_recvfromtimed函数的实现728
20.7.6 主机名和u_buf_t730
20.8 UDP和TCP的比较732
20.9 多播733
20.9.1 多播寻址733
20.9.2 u_join函数的实现735
20.9.3 u_leave函数的实现736
20.10 练习:UDP端口服务器737
20.11 练习:无状态文件服务器738
远程文件服务739
20.12 延伸阅读740
第21章 项目:互联网广播741
21.1 项目概述741
21.2 音频设备模拟744
21.3 具有一个节目和一个接收者的UDP实现744
21.3.1 简单实现744
21.3.2 接收者的终止747
21.3.3 接收者缓冲来处理网络延迟748
21.3.4 接收者缓冲来处理乱序传递751
21.4 具有多个节目和接收者的UDP实现754
21.4.1 多个节目和单个接收者754
21.4.2 多个节目和多个接收者755
21.5 音频广播的UDP实现756
21.6 无线电广播的多播实现758
21.7 TCP实现的差异758
21.7.1 单个节目和单个接收者的TCP实现759
21.7.2 多个节目和单个接收者的TCP实现760
21.7.3 无线电广播的TCP实现761
21.8 通过浏览器接收流式音频764
21.8.1 使用浏览器助手应用程序764
21.8.2 在你的Web服务器中设置一种新的mime类型765
21.8.3 设置你的浏览器来处理新的mime类型766
21.8.4 创建Web页面766
21.8.5 使用预定义的mime类型767
21.9 延伸阅读767
第22章 项目:服务器性能769
22.1 服务器性能成本769
22.2 服务器架构770
22.3 项目概述774
22.4 单客户端驱动程序775
22.4.1 处理一个连接775
22.4.2 对响应进行编程776
22.4.3 收集统计信息777
22.4.4 测试客户端777
22.5 多客户端驱动程序778
另一种多客户端设计781
22.6 实现每个请求一个线程和每个请求一个进程781
22.7 线程工作者池策略782
22.8 使用有界缓冲区的多线程工作者池782
22.9 进程工作者池783
22.10 磁盘I/O的影响783
22.11 性能研究787
22.11.1 基线测量787
22.11.2 波动性的根源788
22.11.3 测量错误789
22.11.4 同步792
22.11.5 普通的错误793
22.11.6 要测量什么794
22.11.7 数据分析和表示796
22.12 报告撰写797
22.12.1 引言797
22.12.2 设计、实现和测试798
22.12.3 实验798
22.12.4 结果和分析799
22.12.5 结论799
22.12.6 参考文献799
22.13 延伸阅读800
附录A UNIX基础801
附录B 重启库819
附录C UICI实现829
附录D 日志函数846
附录E POSIX扩展864
参考文献867
热门推荐
- 2409575.html
- 694430.html
- 898498.html
- 1427265.html
- 2781691.html
- 2406696.html
- 472877.html
- 1072646.html
- 1833355.html
- 1426780.html
- http://www.ickdjs.cc/book_2523585.html
- http://www.ickdjs.cc/book_3354518.html
- http://www.ickdjs.cc/book_586355.html
- http://www.ickdjs.cc/book_1876958.html
- http://www.ickdjs.cc/book_3350362.html
- http://www.ickdjs.cc/book_2262236.html
- http://www.ickdjs.cc/book_805340.html
- http://www.ickdjs.cc/book_645098.html
- http://www.ickdjs.cc/book_3875829.html
- http://www.ickdjs.cc/book_1904706.html