约翰·莱昂斯对UNIX第六版的评论及源代码

需积分: 15 6 下载量 14 浏览量 更新于2024-07-22 收藏 814KB PDF 举报
"John.Lions-Lions'.Commentary.on.UNIX.6th.Edition.with.Source.Code" 本书《John Lions 的 UNIX 第六版注释与源代码》是对 UNIX 操作系统的第六版进行深度解析的一份重要文献,由 J. Lions 在新南威尔士大学计算机科学系编写。这份文档旨在为学习课程的学生提供一个关于 UNIX 源代码的伴侣读物和评论,涉及到的课程编号可能是 .0B 和 .G。 UNIX 操作系统是由 Ken Thompson 和 Dennis Ritchie 在贝尔实验室开发的,位于新泽西州的默里山。该软件系统最初由西方电气公司授权,并受到一系列的许可、版权和非披露协议的保护。因此,只有持有 UNIX 软件系统许可证的人才能合法地获取和分发这份文档,任何其他形式的传播或复制都是被禁止的。 书中包含的内容涵盖了 UNIX 系统的各个方面,从内核机制、进程管理、文件系统到网络通信等核心组件。Lions 的注释深入浅出,对于理解 UNIX 设计哲学和实现原理极具价值。通过注释,读者可以了解到早期操作系统的设计思路,这些思路对后来的许多操作系统,包括 Linux 和类 Unix 系统,都产生了深远的影响。 在操作系统领域,UNIX 第六版是一个里程碑,它引入了许多现代操作系统特性,如管道(pipes)、子进程(fork)以及高级编程接口(API)。Lions 的注释不仅解析了源代码,还讨论了设计决策和实现技巧,为学习操作系统原理和 UNIX 程序设计提供了宝贵资料。 这本书对于那些希望深入理解操作系统底层工作原理的程序员、系统管理员和计算机科学学生来说,是不可多得的学习资源。它不仅揭示了 UNIX 的内部工作机制,也展示了如何通过简洁高效的代码来实现复杂功能,这在今天的软件工程中仍然具有重要指导意义。尽管原始的 UNIX 版权问题限制了这份文档的广泛传播,但其内容在开源社区中仍然具有极高的参考价值,特别是在研究操作系统历史和设计原则时。
2009-11-23 上传
目 录 献辞 致谢 序(一) 序(二) 历史注记 上篇 UNIX操作系统版本6源代码 UNIX操作系统过程分类索引 3 UNIX操作系统文件及过程 5 UNIX操作系统定义的符号列表 7 UNIX操作系统源代码交叉引用列表 9 第一部分 初始化、进程初始化 25 第二部分 陷入、中断、系统调用和 进程管理 75 第三部分 程序交换、基本输入/输出、 块设备 109 第四部分 文件和目录、文件系统、管道 133 第五部分 面向字符的特殊文件 181 下篇 莱昂氏UNIX源代码分析 前言 207 第1章 绪论 209 1.1 UNIX操作系统 209 1.2 公用程序 209 1.3 其他文档 210 1.4 UNIX程序员手册 210 1.5 UNIX文档 211 1.6 UNIX操作系统源代码 211 1.7 源代码中各部分 212 1.8 源代码文件 212 1.9 分析的使用 212 1.10 对程序设计水平的一条注释 212 第2章 基础知识 214 2.1 处理机 214 2.2 处理机状态字 214 2.3 通用寄存器 214 2.4 指令集 215 2.5 寻址方式 216 2.5.1 寄存器方式 217 2.5.2 寄存器延迟方式 217 2.5.3 自动增1方式 217 2.5.4 自动减1方式 217 2.5.5 变址方式 217 2.5.6 立即方式 218 2.5.7 相对方式 218 2.6 UNIX汇编程序 219 2.7 存储管理 219 2.8 段寄存器 220 2.9 页说明寄存器 220 2.10 存储分配 220 2.11 状态寄存器 221 2.12 “i”和“d”空间 221 2.13 启动条件 221 2.14 专用设备寄存器 221 第3章 阅读“C”程序 222 3.1 某些选出的例子 222 3.2 例1 222 3.3 例2 223 3.4 例3 223 3.5 例4 225 3.6 例5 225 3.7 例6 227 3.8 例7 227 3.9 例8 228 3.10 例9 228 3.11 例10 229 3.12 例11 229 3.13 例12 230 3.14 例13 230 3.15 例14 231 3.16 例15 231 3.17 例16 232 3.18 例17 233 第4章 概述 235 4.1 变量分配 235 4.2 全局变量 235 4.3 “C”预处理程序 235 4.4 第一部分 236 4.4.1 第1组“.h”文件 236 4.4.2 汇编语言文件 237 4.4.3 在第一部分中的其他文件 237 4.5 第二部分 237 4.6 第三部分 238 4.7 第四部分 238 4.8 第五部分 239 第一部分 初始化、进程初始化 第5章 两个文件 241 5.1 文件malloc.c 241 5.1.1 列表维护规则 241 5.1.2 malloc(2528) 242 5.1.3 mfree(2556) 243 5.1.4 结论 244 5.2 文件prf.c 244 5.2.1 printf(2340) 244 5.2.2 printn(2369) 245 5.2.3 putchar(2386) 246 5.2.4 panic(2419) 247 5.2.5 prdev(2433)、deverror(2447) 247 5.3 包含的文件 247 第6章 系统初启 249 6.1 操作员的动作 249 6.2 start(0612) 249 6.3 main(1550) 251 6.4 进程 252 6.5 proc〔0〕的初始化 252 6.6 sched(1940) 253 6.7 sleep(2066) 253 6.8 swtch(2178) 253 6.9 再回到main 254 第7章 进程 256 7.1 进程映像 256 7.2 proc结构(0358) 257 7.3 user结构(0413) 257 7.4 每个进程数据区 258 7.5 段 258 7.6 映像的执行 258 7.7 核心态执行 259 7.8 用户态执行