具体描述
本书内容包括
UNIX内核体系结构
磁盘高速缓冲机制
文件系统内部数据结构与算法
控制进程上下文的系统调用与进程调度
存储管理,包括对换和请求调页系统
通用驱动程序接口,包括磁盘驱动程序和终端驱动程序
进程间通信与网络,包括系统V消息、共享存储和信号量
紧密耦合的多处理机UNIX系统和松散耦合的分布式UNIX系统
本书可作为大学计算机科学系高年级学生和研究生的教材或参考书,也为从事UNIX系统研究与实用程序开发人员提供了一本极有价值的参考资料。
作者简介
本书作者Maurice J.Bach多年来在AT&T公司贝尔实验室工作,对UNIX系统的设计思想有深刻了解,又有讲授UNIX系统的丰富经验。
在本书中,作者描述了构成UNIX操作系统基础的内部算法与结构,以及它们与程序接口之间的联系。
目录信息
前言
第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 本章小结
8.5 习题
第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 中断处理程序
10.2 磁盘驱动程序
10.3 终端驱动程序
10.3.1 字符表Clist
10.3.2 标准方式下的终端驱动程序
10.3.3 原始方式下的终端驱动程序
10.3.4 终端探询
10.3.5 建立控制终端
10.3.6 间接终端驱动程序
10.3.7 注册到系统
10.4 流
10.4.1 流的详细的示例
10.4.2 对流的分析
10.5 本章小结
10.6 习题
第11章 进程间通信
11.1 进程跟踪
11.2 系统V IPC
11.2.1 消息
11.2.2 共享存储区
11.2.3 信号量
11.2.4 总的评价
11.3 网络通信
11.4 套接字
11.5 本章小结
11.6 习题
第12章 多处理机系统
12.1 多处理机系统的问题
12.2 主从处理机解决方法
12.3 信号量解决方法
12.3.1 信号量定义
12.3.2 信号量实现
12.3.3 几个算法
12.4 Tunis系统
12.5 性能局限性
12.6 习题
第13章 分布式UNIX系统
13.1 卫星处理机系统
13.2 纽卡斯尔连接
13.3 透明型分布式文件系统
13.4 无存根进程的透明分布式模型
13.5 本章小结
13.6 习题
附录A 系统调用
参考文献
索引
· · · · · · (收起)
读后感
这本书很老,但是不可错过——至少现在2013年还没有过时。它向读者展示了UNIX最开始的设计和实现,今天的各种*nix,包括但不限于各种BSD,Solaris以及Linux的结构都源自这里。另外,对于学习OS设计的同学来说,了解UNIX这样一个流行了几十年的OS的最初设计,或许能够得到一些启...
大四上学期的院选修课选的就是这门课,教材也是这本,在网上找的pdf的版本打印的,读着的感觉就是博大精深但是同时又感觉读的不爽,大概是翻译的水平问题吧,有些东西翻译的读着不顺,还是看英文版的吧,读英文应该没啥问题,不像论文,里面好多专业术语,书的英文版本还是比较...
要是没有上过os课的人看这个中译本估计要累死。 翻译科技作品其实要考虑读者阅读习惯,最好是一目十行就算不能看懂,但最起码要能一眼看明白主谓宾,要能快速晓得你是要说一个什么现象,然后哪一段文字在描述其内在机理,这样才能快速获取知识,最起码能搭一个知识体系的架构。...
这本书很老,但是不可错过——至少现在2013年还没有过时。它向读者展示了UNIX最开始的设计和实现,今天的各种*nix,包括但不限于各种BSD,Solaris以及Linux的结构都源自这里。另外,对于学习OS设计的同学来说,了解UNIX这样一个流行了几十年的OS的最初设计,或许能够得到一些启...
要是没有上过os课的人看这个中译本估计要累死。 翻译科技作品其实要考虑读者阅读习惯,最好是一目十行就算不能看懂,但最起码要能一眼看明白主谓宾,要能快速晓得你是要说一个什么现象,然后哪一段文字在描述其内在机理,这样才能快速获取知识,最起码能搭一个知识体系的架构。...
用户评价
我拿到《UNIX操作系统设计》这本书,本以为会是那种枯燥乏味,满篇都是汇编代码和数据结构的理论书籍,毕竟“操作系统设计”这个名字听起来就很有学术范儿。然而,出乎意料的是,这本书的叙述方式相当生动,而且非常注重实际应用。它并没有一上来就丢给我一大堆复杂的算法和模型,而是从用户最常接触到的角度切入,比如文件系统、权限管理、网络配置等等。书中对每一个概念的讲解,都配有非常贴切的例子,而且这些例子都是可以实际操作的。我特别喜欢其中关于文件系统层级结构和权限控制的章节,它把我之前对`chmod`和`chown`这些命令的模糊认识,变得清晰而系统。书中不仅解释了这些命令的作用,还深入分析了它们背后的逻辑,比如用户、组、其他权限的划分,以及SUID、SGID、Sticky Bit这些特殊权限的含义和应用场景。这让我明白了为什么在团队协作中,合理的权限设置如此重要,也让我理解了如何通过精细化的权限管理来保障系统的安全。此外,书中还涉及了一些关于性能调优的基础知识,比如如何识别和解决 I/O 瓶颈,以及如何优化进程的资源分配。虽然不是那种深入到内核层面的调优,但对于日常管理来说,这些提示已经非常有价值了。这本书的优点在于,它能够用相对平实的语言,把复杂的系统概念讲透,并且强调实践的重要性,让读者在阅读的同时,就能动手去验证和体会,从而加深理解。
这本书的名字叫《UNIX操作系统设计》,拿到手的时候,我本来是冲着“设计”这两个字去的,以为会是一本深入剖析UNIX内核架构、系统调用、进程调度、内存管理等核心机制的书。然而,实际翻阅后,我发现它更像是一本“使用手册”的增广版,或者说是UNIX系统管理员的“高级指南”。书中详细介绍了各种命令行的用法,比如grep、sed、awk的强大文本处理能力,以及find命令的多样化搜索技巧。我尤其对书中关于shell脚本编程的章节印象深刻,它不仅仅是罗列了各种命令的组合,而是深入讲解了如何构建复杂的自动化任务,如何处理错误,如何优化脚本的执行效率。举个例子,书中关于使用`xargs`和管道来处理大量文件和数据的例子,就让我豁然开朗,之前总是用笨拙的for循环来处理,效率低不说,代码也臃肿。这本书让我看到了UNIX命令行背后强大的生命力,它不仅仅是敲击键盘的指令,更是实现高效系统管理的“魔法咒语”。当然,如果读者是希望直接 dive into 内核代码,理解 semaphore、spinlock 这些底层实现的话,这本书可能就不是最佳选择了,它的侧重点在于“如何利用”和“如何管理”,而非“如何构建”。但即便如此,对于任何想要深入了解UNIX系统,并将其作为日常工作生产力工具的开发者或系统管理员来说,这本书依然提供了宝贵且实用的知识,让我对UNIX的理解从“知道怎么用”提升到了“知道怎么用得好,用得巧”。
当我拿到《UNIX操作系统设计》这本书时,我并没有对它抱有太高的期望,以为又会是一本晦涩难懂的理论堆砌。然而,阅读过程中,我被它独特的视角深深吸引。它没有选择从操作系统的底层架构入手,而是从如何“组织”和“管理”信息以及系统资源的角度来阐述。书中关于文件系统的组织方式,以及目录结构的逻辑划分,给我留下了深刻的印象。它解释了为什么UNIX系统会采用这种层级化的结构,以及这种结构如何方便用户查找和管理文件。我尤其欣赏书中关于进程管理和任务调度的部分,虽然它没有深入到具体的调度算法,但它清晰地解释了进程的概念,以及如何通过各种工具来监控和控制进程的行为。书中对于信号(signal)的介绍,让我对进程间的通信和协作有了更深的理解。此外,书中还涉及了用户管理和系统安全的一些基本概念,比如如何创建和管理用户账户,以及如何设置文件和目录的权限来保护敏感信息。这本书让我明白,操作系统设计不仅仅是关于代码和算法,更是关于如何提供一个清晰、一致、且易于管理的计算环境。它用一种更加宏观的视角,让我看到了UNIX系统设计的智慧,以及它为何能够成为如此成功和持久的操作系统。
在翻阅《UNIX操作系统设计》这本书的过程中,我发现它与我之前阅读过的许多“理论派”的操作系统书籍截然不同。这本书更像是给那些需要与UNIX系统打交道的人们量身定做的“实用手册”,而且是那种“深度用户”级别的实用手册。它很少涉及晦涩的理论推导,而是将大量的篇幅集中在如何有效地利用UNIX提供的各种命令和工具来完成日常任务。我特别喜欢书中关于文件系统管理和用户权限控制的部分,它详细解释了各种命令的细微差别,以及它们在不同场景下的最佳实践。例如,对于如何安全地共享文件,以及如何通过`sudo`命令来实现最小权限原则,书中都给出了非常清晰的指导。此外,书中还涉及了一些关于网络服务的配置和管理,虽然没有深入到协议栈的细节,但对于理解和配置常见的网络服务,如SSH、FTP等,提供了非常实用的帮助。它让我意识到,即使不深入了解内核的每一个细节,也能通过熟练掌握这些工具,来成为一名高效的UNIX用户。这本书的价值在于,它将那些分散在各个角落的零散知识,整合成了一个系统性的实用指南,让读者能够快速上手,并逐步深入,成为一名真正的UNIX“玩家”。
拿到《UNIX操作系统设计》这本书,我最初的期望是能够全面了解UNIX的架构和底层原理。然而,这本书的侧重点却完全不在于此。它更像是一本关于“UNIX哲学”和“效率工具集”的合集。书中花了大量篇幅来介绍如何利用UNIX提供的各种工具来解决实际问题,尤其是围绕着文本处理和系统监控展开。我印象最深刻的是关于管道(pipe)和重定向(redirection)的讲解,书中通过一系列精心设计的示例,展示了如何将简单的命令行工具串联起来,形成强大的数据处理流水线。例如,如何使用`grep`过滤日志文件,然后通过`awk`进行统计分析,最后将结果输出到另一个文件,整个过程行云流水,效率惊人。这本书让我重新认识了shell脚本的潜力,它不仅仅是简单的命令集合,而是构建复杂自动化流程的基石。书中还详细介绍了各种进程管理工具,比如`ps`、`top`、`kill`等,并解释了它们的各种选项,如何利用它们来监控系统状态、诊断性能问题,甚至安全地终止失控的进程。虽然书中没有太多关于内存管理、调度算法的深入探讨,但对于如何“管理”和“利用”一个UNIX系统,这本书给出了非常详尽且实用的指导。它更像是一个经验丰富的UNIX大师,在手把手地教你如何成为一个更高效的系统使用者和管理者。
如果大学时候看过,多好
求知欲太强总是个错,看完了心里舒服
想完整的再对一遍
想完整的再对一遍
概要讲述,没有纠缠于细节,适合与APUE一起看。