UNIX系统编程:通信、并发与线程:communication, concurrency, and threads

本书特色

[

本书是基于新UNIX标准的完备参考书,对UNIX编程要点进行清晰易懂的介绍,从说明系统调用的短小代码段开始,逐渐过渡到用于技能提升的实际项目。作者深入探讨通信、并发和线程问题,对复杂概念(如信号和并发)进行全面解读,覆盖文件、信号、信号量、POSIX线程和客户机-服务器通信等内容;提供大量实例、练习,以及针对性项目及其参考答案。全书*部分介绍UNIX基础知识,包括文件、进程和特殊文件等;第二部分介绍信号和定时器;第三部分介绍信号量和进程同步;第四部分介绍通信话题。本书适合作为高等院校计算机专业的教材,也可供软件开发人员参考使用。

]

内容简介

[

读者将通过本书学习如何设计并实现在LinuxTM、SolarisTM、Mac OS X或其他基于POSIX的系统中都可靠的UNIX软件。本书演示如何设计能让UNIX操作系统发挥极致功效的复杂软件。本书对UNIX编程的要点进行了清晰易懂的介绍,内容从如何使用系统调用的小代码段开始,很快过渡到能帮助读者扩展自己技能水平的实际项目。本书对通信、并发和多线程进行了深入探讨,对复杂概念进行了全面且清晰的解释,例如信号和并发,并以此为特色。此外,本书还提供了实例、练习、可重用的代码和用于网络通信应用程序的简化库。本书还是基于新UNIX标准的独立参考书,它完全覆盖了与文件、信号、信号量、POSIX线程和客户机-服务器通信相关的内容。本书的特色还在于增加了关于Web、UDP和服务器性能的新章节。书中相关资料已经经过了大量的课堂测试。主要内容包括:
◎UNIX进程、文件和特殊文件
◎信号和定时器
◎POSIX线程、信号量和IPC
◎TCP、UDP、组播和Web
◎关于因特网电台、服务器性能、定时器、Web缓存和命令解释程序的特色项目

]

作者简介

[

Kay Robbins 和 Steve Robbins,是美国麻省理工学院博士,现任德州大学圣安东尼奥分校计算机科学系讲师。《UNIX系统编程: 通信、并发与线程》(UNIX Systems Programming: Communication, Concurrency and Threads)是他们的代表作。
译者师蓉,译有《完美Java(第6版)》、《信息架构:大型网站Web设计(第4版)》《像富人一样思考》《故事场景摩天楼》《互联网领导思维》《断点:互联网进化启示录》《游戏编程**指南》《Unity 3.x游戏开发实例》《iPhone应用用户体验设计实战与案例》《社交网站界面设计》等书。

]

目录

**部分 基础知识第1章 技术对程序的影响 31.1?术语的变化 31.2?时间和速度 51.3?多道程序设计和分时 61.4?应用层的并发 81.4.1?中断 81.4.2?信号 91.4.3?输入和输出 101.4.4?进程、线程和资源共享 101.4.5?具有共享内存的多个处理器 111.4.6?网络作为计算机 111.5?安全和容错 121.6?非法入侵造成的缓冲区溢出 131.6.1?缓冲区溢出的后果 141.6.2?缓冲区溢出和安全 161.7?UNIX标准 171.8?延伸阅读 19第2章 程序、线程和进程 212.1?程序是如何成为进程的 212.2?线程和执行线程 222.3?程序映象的布局 232.4?库函数调用 262.5?函数返回值和错误 292.6?参数数组 312.6.1?用makeargv函数创建一个数组 322.6.2?makeargv函数的实现 342.7?线程安全函数 382.8?静态变量的使用 402.9?静态对象的结构 422.10?进程环境 482.11?进程终止 512.12?练习:一个env实用程序 542.13?练习:消息日志 552.14?延伸阅读 57第3章 UNIX中的进程 583.1?进程标识符 583.2?进程状态 603.3?UNIX 进程创建和fork函数 633.4?wait函数 70状态值 763.5?exec函数 773.6?后台进程和守护进程 833.7?临界区 863.8?练习:进程链 873.9?练习:进程扇 883.10?延伸阅读 89第4章 UNIX I/O 904.1?设备术语 904.2?读/写 914.3?打开和关闭文件 1024.4?select函数 1074.5?poll函数 1164.6?文件表示 1194.6.1?文件描述符 1194.6.2?文件指针和缓冲 1224.6.3?文件描述符的继承 1244.7?过滤器和重定向 1284.8?文件控制 1324.9?练习:原子日志 135原子日志库 1394.10?练习:cat实用程序 1414.11?延伸阅读 143第5章 文件和目录 1445.1?UNIX文件系统导航 1445.1.1?当前工作目录 1455.1.2?搜索路径 1505.2?目录访问 1515.2.1?访问文件状态信息 1535.2.2?确定文件的类型 1565.3?UNIX文件系统实现 1575.3.1?UNIX文件实现 1585.3.2?目录实现 1615.4?硬链接和符号链接 1615.4.1?创建或删除一个链接 1625.4.2?创建和删除符号链接 1675.5?练习:which命令 1725.6?练习:邮件通知程序 1735.7?练习:新闻通知程序 1765.8?练习:遍历目录 1775.9?延伸阅读 179第6章 UNIX特殊文件 1806.1?管道 1806.2?流水线 1846.3?FIFO 1896.4?管道与客户机-服务器模型 1936.5?终端控制 200规范和非规范的输入处理 2086.6?音频设备 2126.7?练习:音频 2186.8?练习:屏障 2206.9?练习:stty命令 2216.10?练习:重提客户机-服务器 2226.11?延伸阅读 222第7章 项目:令牌环 2247.1?环形拓扑 2247.2?环的形成 2267.3?环的探讨 2327.4?简单通信 2347.5?用令牌环实现互斥 2357.6?用投票实现互斥 2377.7?匿名环中的领导者选举 2387.8?用于通信的令牌环 2407.9?流水线预处理机 2427.10?并行环算法 2447.10.1?图像过滤 2447.10.2?矩阵乘法 2477.11?弹性环 2487.12?延伸阅读 249第二部分?异步事件第8章 信号 2538.1?信号的基本概念 2538.2?信号的产生 2548.3?对信号掩码和信号集进行操作 2598.4?捕获和忽略信号—sigaction 2668.5?等待信号—pause、sigsuspend和sigwait 2728.5.1?pause函数 2728.5.2?sigsuspend函数 2748.5.3?sigwait函数 2828.6?处理信号:错误和异步信号安全 2838.7?用siglongjmp和sigsetjmp进行程序控制 2868.8?使用异步I/O编程 2888.9?练习:转储统计 3008.10?练习:同时处理慢速设备 3018.11?延伸阅读 301第9章 时间和定时器 3039.1?POSIX时间 3039.1.1?用从Epoch开始的秒数表示时间 3049.1.2?显示日期和时间 3059.1.3?使用struct timeval表示时间 3089.1.4?使用实时时钟 3119.1.5?耗时和处理器时间的对比 3139.2?睡眠函数 3169.3?POSIX:XSI间隔定时器 3199.4?实时信号 3239.5?POSIX:TMR间隔定时器 3289.6?定时器漂移、溢出和绝对时间 3339.7?延伸阅读 344第10章 项目:虚拟定时器 34510.1?项目概述 34510.2?简单的定时器 34810.3?对5个定时器中的一个进行设置 35110.3.1?virtualtimers对象 35110.3.2?hardwaretimer对象 35310.3.3?主程序实现 35410.3.4?用show谱写定时器代码 35510.4?使用多个定时器 36110.4.1?设置多个定时器 36410.4.2?用多个定时器进行测试 36510.5?多定时器的健壮实现 36910.6?POSIX:TMR定时器的实现 37110.7?一个小型的cron工具mycron 37210.8?延伸阅读 372第11章 项目:破解shell 37311.1?构建一个简单的shell 37311.2?重定向 37811.3?流水线 38211.4?前台的信号处理 38511.5?进程组、会话和控制终端 39111.5.1?进程组 39111.5.2?会话 39311.6?ush中的后台进程 39611.7?作业控制 40311.8?ush的作业控制 40711.8.1?一个作业列表对象 40711.8.2?ush中的作业列表 40911.8.3?ush中的作业控制 40911.8.4?等待流水线时的进程行为 41011.9?延伸阅读 411第三部分?并?发第12章 POSIX线程 41512.1?监视文件描述符的方法 41512.2?使用线程监视多个文件描述符 41712.3?线程管理 42012.3.1?用ID引用线程 42112.3.2?创建一个线程 42212.3.3?分离和连接 42312.3.4?退出和取消 42612.3.5?向线程传递参数并返回值 42912.4?线程安全 43812.5?用户级线程 VS 内核级线程 43912.6?线程属性 44212.6.1?线程状态 44312.6.2?线程栈 44412.6.3?线程调度 44612.7?练习:并行文件复制 45012.8?延伸阅读 451第13章?线程同步 45213.1?POSIX同步函数 45213.2?互斥锁 45313.2.1?创建并初始化一个互斥量 45413.2.2?销毁一个互斥量 45513.2.3?锁定和解锁互斥量 45613.2.4?保护不安全的库函数 45813.2.5?同步标志和全局值 45913.2.6?让数据结构成为线程安全的 46513.3?*多一次和至少一次的执行 46713.4?条件变量 47113.4.1?条件变量的创建和销毁 47313.4.2?等待并通知条件变量 47513.5?信号处理和线程 47813.5.1?将信号定向到一个特定的线程中 47913.5.2?为线程屏蔽信号 48013.5.3?信号处理的专用线程 48013.6?读者和写者 48413.7?strerror_r实现 48913.8?死锁和其他讨厌的问题 49113.9?练习:多个屏障 49213.10?延伸阅读 492第14章?临界区和信号量 49314.1?临界区的处理 49314.2?信号量 49614.3?POSIX:SEM匿名信号量 49914.4?POSIX:SEM信号量操作 50114.5?POSIX:SEM命名信号量 50814.5.1?创建并打开命名信号量 50914.5.2?关闭信号量并删除其链接 51214.6?练习:许可管理器 51414.6.1?license对象 51514.6.2?runsim主程序 51514.6.3?对许可管理器的扩展 51614.7?延伸阅读 516第15章?POSIX IPC 51715.1?POSIX:XSI进程间通信 51715.1.1?标识并访问IPC对象 51815.1.2?在shell中访问POSIX:XSI IPC资源 51915.2?POSIX:XSI信号量集 52015.2.1?信号量的创建 52115.2.2?信号量的控制 52315.2.3?POSIX信号量集操作 52515.3?POSIX:XSI共享内存 53215.3.1?访问共享内存段 53215.3.2?共享内存段的连接和分离 53315.3.3?控制共享内存 53415.3.4?共享内存示例 53515.4?POSIX:XSI消息队列 541访问消息队列 54215.5?练习:POSIX匿名信号量 54915.6?练习:POSIX命名信号量 55015.7?练习:用共享内存实现管道 55115.8?练习:用消息队列实现管道 55415.9?延伸阅读 554第16章?项目:生产者-消费者同步 55516.1?生产者-消费者问题 55516.2?受互斥锁保护的有界缓冲区 55716.3?使用信号量的缓冲区实现 56016.4?一个简单的生产者-消费者问题简介 56616.5?使用条件变量的有界缓冲区 57016.6?带有完成条件的缓冲区 57116.7?并行文件复制 58016.7.1?并行文件复制的生产者 58016.7.2?并行文件复制的消费者 58116.7.3?并行文件复制的main程序 58216.7.4?并行文件复制的增强 58216.8?线程化打印服务器 58316.8.1?请求缓冲区 58416.8.2?生产者线程 58516.8.3?消费者线程 58616.8.4?打印服务器 58616.8.5?其他增强功能 58616.9?延伸阅读 587第17章?项目:非完全并行虚拟机 58817.1?PVM的历史、术语和结构 58817.2?非完全并行虚拟机 59117.3?NTPVM项目概述 59317.3.1?NEWTASK分组 59617.3.2?DATA分组 59617.3.3?DONE分组 59717.4?调度程序的I/O和测试 59817.4.1?用多个窗口测试 60417.4.2?用远程日志测试 60517.5?没有输入的单任务 60717.6?顺序任务 60817.6.1?输入线程 60917.6.2?输出线程 61017.7?并发任务 61117.8?分组通信、广播和屏障 61117.9?终止和信号 61217.10?有序的消息传递 61317.11?延伸阅读 613第四部分?通?信第18章?面向连接的通信 61718.1?客户机-服务器模型 61718.2?通信信道 61818.3?面向连接的服务器策略 62218.4?通用因特网通信接口(UICI) 62518.4.1?处理错误 62718.4.2?读和写 62718.5?不同服务器策略的UICI实现 62818.6?UICI客户机 63118.7?UICI的套接字实现 63718.7.1?socket函数 63818.7.2?bind函数 63918.7.3?listen1

封面

UNIX系统编程:通信、并发与线程:communication, concurrency, and threads

书名:UNIX系统编程:通信、并发与线程:communication, concurrency, and threads

作者:(美)Kay A. Robbins,(美

页数:20,875页

定价:¥198.0

出版社:电子工业出版社

出版日期:2018-05-01

ISBN:9787121340352

PDF电子书大小:51MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注