UNIX系统编程: 通信、并发与线程

UNIX系统编程: 通信、并发与线程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (斯蒂芬·罗宾斯) , [美] (凯·罗宾斯) ,
2018-05
版次: 1
ISBN: 9787121340352
定价: 198.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 896页
字数: 1434千字
正文语种: 简体中文
13人买过
  • 本书是基于新UNIX标准的完备参考书,对UNIX编程要点进行清晰易懂的介绍,从说明系统调用的短小代码段开始,逐渐过渡到用于技能提升的实际项目。作者深入探讨通信、并发和线程问题,对复杂概念(如信号和并发)进行全面解读,覆盖文件、信号、信号量、POSIX线程和客户机-服务器通信等内容;提供大量实例、练习,以及针对性项目及其参考答案。全书第一部分介绍UNIX基础知识,包括文件、进程和特殊文件等;第二部分介绍信号和定时器;第三部分介绍信号量和进程同步;第四部分介绍通信话题。本书适合作为高等院校计算机专业的教材,也可供软件开发人员参考使用。 Kay Robbins 和 Steve Robbins,是美国麻省理工学院博士,现任德州大学圣安东尼奥分校计算机科学系讲师。《UNIX系统编程: 通信、并发与线程》(UNIX Systems Programming: Communication, Concurrency and Threads)是他们的代表作。
    译者师蓉,译有《完美Java(第6版)》、《信息架构:大型网站Web设计(第4版)》《像富人一样思考》《故事场景摩天楼》《互联网领导思维》《断点:互联网进化启示录》《游戏编程**指南》《Unity 3.x游戏开发实例》《iPhone应用用户体验设计实战与案例》《社交网站界面设计》等书。 第一部分  基础知识
     
    第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.7UNIX标准 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.2makeargv函数的实现 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.3UNIX 进程创建和fork函数 63
    3.4wait函数 70
    状态值 76
    3.5exec函数 77
    3.6后台进程和守护进程 83
    3.7临界区 86
    3.8练习:进程链 87
    3.9练习:进程扇 88
    3.10延伸阅读 89
     
    第4章 UNIX I/O 90
    4.1设备术语 90
    4.2读/写 91
    4.3打开和关闭文件 102
    4.4select函数 107
    4.5poll函数 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.1UNIX文件系统导航 144
    5.1.1当前工作目录 145
    5.1.2搜索路径 150
    5.2目录访问 151
    5.2.1访问文件状态信息 153
    5.2.2确定文件的类型 156
    5.3UNIX文件系统实现 157
    5.3.1UNIX文件实现 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.3FIFO 189
    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
     
    第二部分异步事件
     
    第8章 信号 253
    8.1信号的基本概念 253
    8.2信号的产生 254
    8.3对信号掩码和信号集进行操作 259
    8.4捕获和忽略信号―sigaction 266
    8.5等待信号―pause、sigsuspend和sigwait 272
    8.5.1pause函数 272
    8.5.2sigsuspend函数 274
    8.5.3sigwait函数 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.1POSIX时间 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.3POSIX:XSI间隔定时器 319
    9.4实时信号 323
    9.5POSIX:TMR间隔定时器 328
    9.6定时器漂移、溢出和绝对时间 333
    9.7延伸阅读 344
     
    第10章 项目:虚拟定时器 345
    10.1项目概述 345
    10.2简单的定时器 348
    10.3对5个定时器中的一个进行设置 351
    10.3.1virtualtimers对象 351
    10.3.2hardwaretimer对象 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.6POSIX:TMR定时器的实现 371
    10.7一个小型的cron工具mycron 372
    10.8延伸阅读 372
     
    第11章 项目:破解shell 373
    11.1构建一个简单的shell 373
    11.2重定向 378
    11.3流水线 382
    11.4前台的信号处理 385
    11.5进程组、会话和控制终端 391
    11.5.1进程组 391
    11.5.2会话 393
    11.6ush中的后台进程 396
    11.7作业控制 403
    11.8ush的作业控制 407
    11.8.1一个作业列表对象 407
    11.8.2ush中的作业列表 409
    11.8.3ush中的作业控制 409
    11.8.4等待流水线时的进程行为 410
    11.9延伸阅读 411
     
    第三部分并发
     
    第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.1POSIX同步函数 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.7strerror_r实现 489
    13.8死锁和其他讨厌的问题 491
    13.9练习:多个屏障 492
    13.10延伸阅读 492
     
    第14章临界区和信号量 493
    14.1临界区的处理 493
    14.2信号量 496
    14.3POSIX:SEM匿名信号量 499
    14.4POSIX:SEM信号量操作 501
    14.5POSIX:SEM命名信号量 508
    14.5.1创建并打开命名信号量 509
    14.5.2关闭信号量并删除其链接 512
    14.6练习:许可管理器 514
    14.6.1license对象 515
    14.6.2runsim主程序 515
    14.6.3对许可管理器的扩展 516
    14.7延伸阅读 516
     
    第15章POSIX IPC 517
    15.1POSIX:XSI进程间通信 517
    15.1.1标识并访问IPC对象 518
    15.1.2在shell中访问POSIX:XSI IPC资源 519
    15.2POSIX:XSI信号量集 520
    15.2.1信号量的创建 521
    15.2.2信号量的控制 523
    15.2.3POSIX信号量集操作 525
    15.3POSIX:XSI共享内存 532
    15.3.1访问共享内存段 532
    15.3.2共享内存段的连接和分离 533
    15.3.3控制共享内存 534
    15.3.4共享内存示例 535
    15.4POSIX: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.1PVM的历史、术语和结构 588
    17.2非完全并行虚拟机 591
    17.3NTPVM项目概述 593
    17.3.1NEWTASK分组 596
    17.3.2DATA分组 596
    17.3.3DONE分组 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
     
    第四部分通信
     
    第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.6UICI客户机 631
    18.7UICI的套接字实现 637
    18.7.1socket函数 638
    18.7.2bind函数 639
    18.7.3listen函数 641
    18.7.4u_open函数的实现 642
    18.7.5accept函数 643
    18.7.6u_accept函数的实现 645
    18.7.7connect函数 646
    18.7.8u_connect函数的实现 647
    18.8主机名和IP地址 649
    18.9线程安全的UICI 658
    18.10练习:ping服务器 661
    18.11练习:音频的传输 662
    18.12延伸阅读 664
     
    第19章项目:WWW重定向 665
    19.1万维网 665
    19.2统一资源定位符(URL) 666
    19.3HTTP入门 668
    19.3.1客户端请求 669
    19.3.2服务器响应 669
    19.3.3HTTP消息交换 670
    19.4Web通信模式 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.8HTTP头解析 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.2UICI UDP的返回错误 703
    20.2.3UDP缓冲区大小和UICI UDP 703
    20.3简单-请求协议 704
    20.4请求-应答协议 710
    20.5有超时和重试的请求-应答 716
    20.6请求-应答-确认协议 722
    20.7UICI UDP的实现 723
    20.7.1u_openudp函数的实现 723
    20.7.2sendto函数 725
    20.7.3u_sendto和 u_sendtohost函数的实现 726
    20.7.4recvfrom函数 727
    20.7.5u_recvfrom和u_recvfromtimed函数的实现 728
    20.7.6主机名和u_buf_t 730
    20.8UDP和TCP的比较 732
    20.9多播 733
    20.9.1多播寻址 733
    20.9.2u_join函数的实现 735
    20.9.3u_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.7TCP实现的差异 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
     
    附录AUNIX基础 801
    附录B重启库 819
    附录CUICI实现 829
    附录D日志函数 846
    附录EPOSIX扩展 864
    参考文献 867
  • 内容简介:
    本书是基于新UNIX标准的完备参考书,对UNIX编程要点进行清晰易懂的介绍,从说明系统调用的短小代码段开始,逐渐过渡到用于技能提升的实际项目。作者深入探讨通信、并发和线程问题,对复杂概念(如信号和并发)进行全面解读,覆盖文件、信号、信号量、POSIX线程和客户机-服务器通信等内容;提供大量实例、练习,以及针对性项目及其参考答案。全书第一部分介绍UNIX基础知识,包括文件、进程和特殊文件等;第二部分介绍信号和定时器;第三部分介绍信号量和进程同步;第四部分介绍通信话题。本书适合作为高等院校计算机专业的教材,也可供软件开发人员参考使用。
  • 作者简介:
    Kay Robbins 和 Steve Robbins,是美国麻省理工学院博士,现任德州大学圣安东尼奥分校计算机科学系讲师。《UNIX系统编程: 通信、并发与线程》(UNIX Systems Programming: Communication, Concurrency and Threads)是他们的代表作。
    译者师蓉,译有《完美Java(第6版)》、《信息架构:大型网站Web设计(第4版)》《像富人一样思考》《故事场景摩天楼》《互联网领导思维》《断点:互联网进化启示录》《游戏编程**指南》《Unity 3.x游戏开发实例》《iPhone应用用户体验设计实战与案例》《社交网站界面设计》等书。
  • 目录:
    第一部分  基础知识
     
    第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.7UNIX标准 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.2makeargv函数的实现 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.3UNIX 进程创建和fork函数 63
    3.4wait函数 70
    状态值 76
    3.5exec函数 77
    3.6后台进程和守护进程 83
    3.7临界区 86
    3.8练习:进程链 87
    3.9练习:进程扇 88
    3.10延伸阅读 89
     
    第4章 UNIX I/O 90
    4.1设备术语 90
    4.2读/写 91
    4.3打开和关闭文件 102
    4.4select函数 107
    4.5poll函数 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.1UNIX文件系统导航 144
    5.1.1当前工作目录 145
    5.1.2搜索路径 150
    5.2目录访问 151
    5.2.1访问文件状态信息 153
    5.2.2确定文件的类型 156
    5.3UNIX文件系统实现 157
    5.3.1UNIX文件实现 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.3FIFO 189
    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
     
    第二部分异步事件
     
    第8章 信号 253
    8.1信号的基本概念 253
    8.2信号的产生 254
    8.3对信号掩码和信号集进行操作 259
    8.4捕获和忽略信号―sigaction 266
    8.5等待信号―pause、sigsuspend和sigwait 272
    8.5.1pause函数 272
    8.5.2sigsuspend函数 274
    8.5.3sigwait函数 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.1POSIX时间 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.3POSIX:XSI间隔定时器 319
    9.4实时信号 323
    9.5POSIX:TMR间隔定时器 328
    9.6定时器漂移、溢出和绝对时间 333
    9.7延伸阅读 344
     
    第10章 项目:虚拟定时器 345
    10.1项目概述 345
    10.2简单的定时器 348
    10.3对5个定时器中的一个进行设置 351
    10.3.1virtualtimers对象 351
    10.3.2hardwaretimer对象 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.6POSIX:TMR定时器的实现 371
    10.7一个小型的cron工具mycron 372
    10.8延伸阅读 372
     
    第11章 项目:破解shell 373
    11.1构建一个简单的shell 373
    11.2重定向 378
    11.3流水线 382
    11.4前台的信号处理 385
    11.5进程组、会话和控制终端 391
    11.5.1进程组 391
    11.5.2会话 393
    11.6ush中的后台进程 396
    11.7作业控制 403
    11.8ush的作业控制 407
    11.8.1一个作业列表对象 407
    11.8.2ush中的作业列表 409
    11.8.3ush中的作业控制 409
    11.8.4等待流水线时的进程行为 410
    11.9延伸阅读 411
     
    第三部分并发
     
    第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.1POSIX同步函数 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.7strerror_r实现 489
    13.8死锁和其他讨厌的问题 491
    13.9练习:多个屏障 492
    13.10延伸阅读 492
     
    第14章临界区和信号量 493
    14.1临界区的处理 493
    14.2信号量 496
    14.3POSIX:SEM匿名信号量 499
    14.4POSIX:SEM信号量操作 501
    14.5POSIX:SEM命名信号量 508
    14.5.1创建并打开命名信号量 509
    14.5.2关闭信号量并删除其链接 512
    14.6练习:许可管理器 514
    14.6.1license对象 515
    14.6.2runsim主程序 515
    14.6.3对许可管理器的扩展 516
    14.7延伸阅读 516
     
    第15章POSIX IPC 517
    15.1POSIX:XSI进程间通信 517
    15.1.1标识并访问IPC对象 518
    15.1.2在shell中访问POSIX:XSI IPC资源 519
    15.2POSIX:XSI信号量集 520
    15.2.1信号量的创建 521
    15.2.2信号量的控制 523
    15.2.3POSIX信号量集操作 525
    15.3POSIX:XSI共享内存 532
    15.3.1访问共享内存段 532
    15.3.2共享内存段的连接和分离 533
    15.3.3控制共享内存 534
    15.3.4共享内存示例 535
    15.4POSIX: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.1PVM的历史、术语和结构 588
    17.2非完全并行虚拟机 591
    17.3NTPVM项目概述 593
    17.3.1NEWTASK分组 596
    17.3.2DATA分组 596
    17.3.3DONE分组 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
     
    第四部分通信
     
    第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.6UICI客户机 631
    18.7UICI的套接字实现 637
    18.7.1socket函数 638
    18.7.2bind函数 639
    18.7.3listen函数 641
    18.7.4u_open函数的实现 642
    18.7.5accept函数 643
    18.7.6u_accept函数的实现 645
    18.7.7connect函数 646
    18.7.8u_connect函数的实现 647
    18.8主机名和IP地址 649
    18.9线程安全的UICI 658
    18.10练习:ping服务器 661
    18.11练习:音频的传输 662
    18.12延伸阅读 664
     
    第19章项目:WWW重定向 665
    19.1万维网 665
    19.2统一资源定位符(URL) 666
    19.3HTTP入门 668
    19.3.1客户端请求 669
    19.3.2服务器响应 669
    19.3.3HTTP消息交换 670
    19.4Web通信模式 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.8HTTP头解析 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.2UICI UDP的返回错误 703
    20.2.3UDP缓冲区大小和UICI UDP 703
    20.3简单-请求协议 704
    20.4请求-应答协议 710
    20.5有超时和重试的请求-应答 716
    20.6请求-应答-确认协议 722
    20.7UICI UDP的实现 723
    20.7.1u_openudp函数的实现 723
    20.7.2sendto函数 725
    20.7.3u_sendto和 u_sendtohost函数的实现 726
    20.7.4recvfrom函数 727
    20.7.5u_recvfrom和u_recvfromtimed函数的实现 728
    20.7.6主机名和u_buf_t 730
    20.8UDP和TCP的比较 732
    20.9多播 733
    20.9.1多播寻址 733
    20.9.2u_join函数的实现 735
    20.9.3u_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.7TCP实现的差异 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
     
    附录AUNIX基础 801
    附录B重启库 819
    附录CUICI实现 829
    附录D日志函数 846
    附录EPOSIX扩展 864
    参考文献 867
查看详情
相关图书 / 更多
UNIX系统编程: 通信、并发与线程
UNDERORDERS.
Dick Francis 著
UNIX系统编程: 通信、并发与线程
UNIX网络编程卷2进程间通信第2版
[美]W.理查德·史蒂文斯(W.Richard Stevens) 著
UNIX系统编程: 通信、并发与线程
UNIX xv6内核源码深入剖析
高联雄
UNIX系统编程: 通信、并发与线程
UN维和步兵营
王昆 著
UNIX系统编程: 通信、并发与线程
UNIX/Linux系统管理技术手册(第5版)
[美]埃薇·内梅特(Evi Nemeth)、加思·斯奈德(Garth Snyder)、特伦特·R.海恩本·惠利(Trent,R.Hein) 译
UNIX系统编程: 通信、并发与线程
UNIX环境高级编程第3版英文版上下册
[美]W.理查德·史蒂文斯(W.、Richard、Stevens)史蒂芬·A.、拉戈(StephenA.Rago) 著
UNIX系统编程: 通信、并发与线程
UNESCO与中国教育:中国国际教育发展报告(2021)
四川外国语大学国际教育学院
UNIX系统编程: 通信、并发与线程
UNICEF (United Nations Children's Fund): Global Governance That Works
Richard Jolly
UNIX系统编程: 通信、并发与线程
UNIX环境高级编程第3版
拉戈( 著;[美]W.、理查德·史蒂文斯(W.、Richard、Stevens)史蒂芬·A.、戚正伟、张亚英、尤晋元 译
UNIX系统编程: 通信、并发与线程
UNITY应用开发实战案例
程明智
UNIX系统编程: 通信、并发与线程
UNIX传奇:历史与回忆
[美]布莱恩·W.克尼汉(Brian W. Kernighan)
UNIX系统编程: 通信、并发与线程
UNIX网络编程卷1套接字联网API第3版
[美]W.理查德·史蒂文斯(W.、Richard、Stevens)比尔·芬纳(比尔·芬纳(Bill,Fenner)、安德鲁·M. 著
您可能感兴趣 / 更多
UNIX系统编程: 通信、并发与线程
卡尺校验的运动学对线全膝关节置换术——原理、手术技术与应用前景
Stephen;M.Howell
UNIX系统编程: 通信、并发与线程
量子信息 香农信息科学经典
Stephen Barnett 著
UNIX系统编程: 通信、并发与线程
AO足踝骨折治疗原则
Stefan Rammelt Michael Swords Mandeep S Dhillon Andrew K Sands
UNIX系统编程: 通信、并发与线程
互联网与民主
Stephen Coleman
UNIX系统编程: 通信、并发与线程
花园不是一天建成的
Stewart 著;吴湛 译;[美]艾米·斯图尔特(Amy
UNIX系统编程: 通信、并发与线程
你好!德语(视频版)(A1)(练习手册)
Stefanie Dengler
UNIX系统编程: 通信、并发与线程
你好!德语(视频版)(A1)(学生用书)
Stefanie Dengler
UNIX系统编程: 通信、并发与线程
复变量导引(影印版)
Steven G. Krantz
UNIX系统编程: 通信、并发与线程
泛函分析导引(影印版)
Steven G. Krantz
UNIX系统编程: 通信、并发与线程
调和分析概览(影印版)
Steven G. Krantz
UNIX系统编程: 通信、并发与线程
AO骨感染治疗原则
Stephen L Kates 主编;Olivier Borens
UNIX系统编程: 通信、并发与线程
国际关系(第三版)
Stephanie Lawson