UNIX操作系统设计权威PDF版

5星 · 超过95%的资源 需积分: 10 139 下载量 103 浏览量 更新于2024-07-21 2 收藏 10.61MB PDF 举报
"The Design of The UNIX Operating System 清晰pdf" 本书《The Design of The UNIX Operating System》由Maurice J. Bach撰写,是UNIX操作系统设计领域的权威著作。书中详细阐述了UNIX操作系统的架构和设计原理,对于理解操作系统的基础知识以及深入研究UNIX系统具有极高的价值。 在内容上,该书涵盖了以下几个重要的知识点: 1. **操作系统概述**:书中首先会介绍操作系统的概念、功能和分类,解释为什么需要操作系统,以及UNIX在操作系统家族中的地位和历史背景。 2. **进程管理**:讨论了进程的概念、创建、撤销、同步与通信等机制,包括信号量、管道、消息队列等并发控制方法,以及进程调度策略。 3. **内存管理**:讲述内存的组织结构、分配与回收、页面替换算法,以及虚拟内存技术,如分页和分段系统,如何实现地址转换。 4. **文件系统**:详细解析了UNIX文件系统的层次结构、文件的存储方式、I/O操作、目录管理、权限和访问控制,以及磁盘管理和文件缓存策略。 5. **设备管理**:涵盖设备驱动程序的设计、块设备和字符设备的区别,以及输入/输出控制机制,如中断处理和DMA(直接内存访问)。 6. **网络与通信**:讨论了网络编程接口,如套接字(socket)API,以及网络协议栈的设计,如TCP/IP协议族的工作原理。 7. **命令行界面与shell**:讲解了shell作为用户界面的角色,以及脚本编程,包括命令解释、环境变量、管道和重定向。 8. **工具和实用程序**:介绍了一些经典的UNIX工具,如文本处理工具(grep、sed、awk),以及版本控制系统(如早期的 SCCS 或后来的 RCS)。 9. **系统调用接口**:详述了程序员如何通过系统调用来与操作系统交互,以及标准C库如何封装这些调用。 10. **安全性与权限**:讨论了UNIX的安全模型,包括用户和组的概念,权限位的设置,以及访问控制列表(ACL)。 此外,书中还可能包含对UNIX操作系统发展历史的回顾,以及对后来影响深远的系统改进和扩展的讨论,如BSD和Linux等。 这本书适合计算机科学专业的学生、操作系统开发者,以及对UNIX系统感兴趣的读者。通过阅读,读者不仅可以深入了解UNIX操作系统的内部工作原理,还能学习到操作系统设计的一般原则和最佳实践。
2010-02-04 上传
第1章 系统概貌 1.1 历史 1.2 系统结构 1.3 用户看法 1.3.1 文件系统 1.3.2 处理环境 1.3.3 构件原语 1.4 操作系统服务 1.5 关于硬件的假设 1.5.1 中断与例外 1.5.2 处理机执行级 1.5.3 存储管理 1.6 本章小结 第2章 内核导言 2.1 UNIX操作系统的体系结构 2.2 系统概念介绍 2.2.1 文件子系统概貌 .2.2.2 进程 2.3 内核数据结构 2.4 系统管理 2.5 本章小结 2.6 习题 第3章 数据缓冲区高速缓冲 3.1 缓冲头部 3.2 缓冲池的结构 3.3 缓冲区的检索 3.4 读磁盘块与写磁盘块 3.5 高速缓冲的优点与缺点 3.6 本章小结 3.7 习题 第4章 文件的内部表示 4.1 索引节点 4.1.1 定义 4.1.2 对索引节点的存取 4.1.3 释放索引节点 4.2 正规文件的结构 4.3 目录 4.4 路径名到索引节点的转换 4.5 超级块 4.6 为新文件分配索引节点 4.7 磁盘块的分配 4.8 其他文件类型 4.9 本章小结 4.10 习题 第5章 文件系统的系统调用 5.1 系统调用open 5.2 系统调用read 5.3 系统调用write 5.4 文件和记录的上锁 5.5 文件的输入/输出位置的调整—lseek 5.6 系统调用close 5.7 文件的建立 5.8 特殊文件的建立 5.9 改变目录及根 5.10 改变所有者及许可权方式 5.11 系统调用stat和fstat 5.12 管道 5.12.1 系统调用pipe 5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的关闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 系统调用unlink 5.16.1 文件系统的一致性 5.16.2 竞争条件 5.17 文件系统的抽象 5.18 文件系统维护 5.19 本章小结 5.20 习题 第6章 进程结构 6.1 进程的状态和状态的转换 6.2 系统存储方案 6.2.1 区 6.2.2 页和页表 6.2.3 内核的安排 6.2.4 u区 6.3 进程的上下文 6.4 进程上下文的保存 6.4.1 中断和例外 6.4.2 系统调用的接口 6.4.3 上下文切换 6.4.4 为废弃返回(abortive return)而保存上下文 6.4.5 在系统和用户地址空间之间拷贝数据 6.5 进程地址空间的管理 6.5.1 区的上锁和解锁 6.5.2 区的分配 6.5.3 区附接到进程 6.5.4 区大小的改变 6.5.5 区的装入 6.5.6 区的释放 6.5.7 区与进程的断接 6.5.8 区的复制 6.6 睡眠 6.6.1 睡眠事件及地址 6.6.2 算法sleep和wakeup 6.7 本章小结 6.8 习题 第7章 进程控制 7.1 进程的创建 7.2 软中断信号 7.2.1 软中断信号的处理 7.2.2 进程组 7.2.3 从进程发送软中断信号 7.3 进程的终止 7.4 等待进程的终止 7.5 对其他程序的引用 7.6 进程的用户标识号 7.7 改变进程的大小 7.8 shell程序 7.9 系统自举和进程init 7.10 本章小结 7.11 习题 第8章 进程调度和时间 8.1 进程调度 8.1.1 算法 8.1.2 调度参数 8.1.3 进程调度的例子 8.1.4 进程优先权的控制 8.1.5 公平共享调度 8.1.6 实时处理 8.2 有关时间的系统调用 8.3 时钟 8.3.1 重新启动时钟 8.3.2 系统的内部定时 8.3.3 直方图分析 8.3.4 记帐和统计 8.3.5 计时 8.4 本章小结 第9章 存储管理策略 9.1 对换 9.1.1 对换空间的分配 9.1.2 进程的换出 9.1.3 进程的换入 9.2 请求调页 9.2.1 请求调页的数据结构 9.2.2 偷页进程 9.2.3 页面错 9.2.4 在简单硬件支持下的请示调页系统 9.3 对换和请示调页的混合系统 9.4 本章小结 9.5 习题 第10章 输入/输出子系统 10.1 驱动程序接口 10.1.1 系统配置 10.1.2 系统调用与驱动程序接口 10.1.3 中断处理程序