| 作者 |
| Kay A Robbins |
| 丛书名 |
| UNIX / Linux操作系统 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111073819 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书提供了在UNIX环境下的编程技术,特别为进程管理、并发和通信中许多基本概念提供了编程指导。本书用大量实例和图示阐述了UNIX操作系统中的抽象概念,为UNIX C编程人员提供了很好的参考。本书可作为计算机专业本科生和研究生的教材或参考书,也可作为自学UNIX操作系统的参考书。 |
| 目录 |
| 目 录 译者序 前言 第一篇 基 础 知 识 第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.6 练习:参数数组 16 1.7 附加读物 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.13 练习:进程扇 48 2.13.1 runsim的说明 48 2.13.2 测试runsim程序 48 2.14 练习:简单的biff 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 第二篇 异 步 事 件 第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 第三篇 并 发 第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.1 无名信号量的初始化 214 8.3.2 POSIX信号量操作 214 8.3.3 有名信号量 216 8.4 系统Ⅴ中的信号量 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 练习:系统Ⅴ共享存储器 230 8.9.1 系统Ⅴ共享存储器的综述 230 8.9.2 软管道实现的规格说明 231 8.10 练习:系统Ⅴ消息队列 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 并发任务 300 11.6.1 版本A:用select和poll来实现 300 11.6.2 版本B:用线程来实现 301 11.7 广播和BARRIER 301 11.8 Terminate和Signals 302 11.9 附加读物 302 第四篇 通 信 第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.9 信号处理 344 13.10 附加读物 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 简单的Richard元组空间 384 15.3.1 元组数据结构 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 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 |