英文正式版相对于中文版的改动

本书原文由作者在 https://pages.cs.wisc.edu/~remzi/OSTEP/ 公开。 目前版本为 August, 2018 (Version 1.00)(PDF页脚版本号为1.01,下称「新版」)。而中文版(下称「旧版」)虽然出版于2019年,但是基于更早的版本翻译的,所以部分新的改动没有体现在中文版。 根据我自己的阅读,将这些改动(包括少量翻译问题)列在此处。 章节序号以新版为基准。
5 Interlude: Process API
旧版「5.5 其他 API」,在新版中扩充为两节,主要关于UNIX信号和用户权限,内容区别不大。
9 Scheduling: Proportional Share
旧版包括两种比例调度的实现,新版增加了「9.7 The Linux Completely Fair Scheduler (CFS)」,着重介绍当前Linux的以红黑树为基础的比例调度实现。
10 Multiprocessor Scheduling (Advanced)
对于标题中的「Advanced」,本章译为「高级」,而第33章译为「进阶」,无语。 ... 新版增加了习题。
13 The Abstraction: Address Spaces
新版增加了习题。
21 Beyond Physical Memory: Mechanisms
新版增加了习题。
23 Complete Virtual Memory Systems
旧版标题为「VAX/VMS 虚拟内存系统」,新版增加了大篇幅关于Linux虚拟内存系统的内容,包括Linux地址空间、页表的结构、大页支持、页缓存策略、安全问题(缓冲区溢出)等。
26 Concurrency: An Introduction
增加了一节:26.1 Why Use Threads? 给了两个理由:并行和避免阻塞 26.5 最後一句,「本章」应为「那一章」。
27 Interlude: Thread API
新版增加了习题。
28 Locks
28.14 最後一句,「能防止饿死」应为「不能防止饿死」。 新增一段灰底补充文字,标题为「ASIDE: MORE REASON TO AVOID SPINNING: PRIORITY INVERSION」。
29 Lock-based Concurrent Data Structures
新版增加了(相当困难的)习题。
30 Condition Variables
引言第一段中,「锁并不是并发程序设计所需的唯一原语」,翻译欠妥,建议改为「锁不是构建并发程序唯一需要的原语」。 新版增加了(难以理解的)习题。
31 Semaphores
31.1 第一段脚注省略过多。 31.2 最後一句「使用了更为通用的信号量作为锁」,应为「使用了更为通用的实现」。 有时候不得不怀疑译者是否真的理解… 31.4 新增一段灰底补充文字:「ASIDE: SETTING THE VALUE OF A SEMAPHORE」 增加了一节:31.7 Thread Throttling;最後一段少一个脚注,关于将mutex放在get()/put()内部。 31.5 最後一段「加入了更多开锁」,应为「开销」。 新版增加了习题。
32 Common Concurrency Problems
图32.1右下圆圈内「想要的」应为「线程2」 新版增加了习题。
33 Event-based Concurrency (Advanced)
... 新版增加了习题。
39 Interlude: Files and Directories
增加两节:
- 39.6 Shared File Table Entries: fork() And dup()
- 39.16 Permission Bits And Access Control Lists
增加以下灰底补充文字:
- ASIDE: MMAP() AND PERSISTENT MEMORY
- ASIDE: SUPERUSER FOR FILE SYSTEMS
- TIP: BE WARY OF TOCTTOU
- ASIDE: KEY FILE SYSTEM TERMS(这个相当于总结)
39.3 最後一段,文件描述符补充了说明。 39.5 增加了几个xv6的读文件例子。
40 File System Implementation
40.1 「这样的位图可以记录32KB对象是否分配」中,32KB应为32K,是对象的数目 40.4 表格微调,另reclen即「记录长度」
41 Locality and The Fast File System
41.3 补充柱面图示意 41.4 补充了一个例子(约四段文字) 41.6 例图改进 新版增加了习题。
42 Crash Consistency: FSCK and Journaling
新版增加了习题。
43 Log-structured File Systems
43.13 Summary 新版增加了一段 43.6 第二段「指向内部映射的最新部分」,应为指向inode map 新版增加了习题。
44 Flash-based SSDs
整章新增。
45 Data Integrity and Protection
(旧版为第44章) 45.3 Fletcher 校验和的公式少了括号,新版为s1 = (s1 + di) mod 255、s2 = (s2 + s1) mod 255;CRC算法:该除法的「其余部分」,应为「余数」。 45.4 磁盘Cs、Cc,这里的s,c应为下标(下一节Dx、Dy同样有此问题)。 新版总结提到了gRPC和Apache Thrift。 新版增加了习题。
49 Sun’s Network File System (NFS)
(旧版为第48章) 增加以下灰底补充文字:
- ASIDE: INNOVATION BREEDS INNOVATION
- ASIDE: KEY NFS TERMS
新版增加了习题。
50 The Andrew File System (AFS)
Figure 50.1 没有表头(旧版第一行作为表头,错误)
52-57 Security
包含以下几章:
- 52 A Dialogue on Security
- 53 Introduction to Operating System Security
- 54 Authentication
- 55 Access Control
- 56 Protecting Information With Cryptography
- 57 Distributed System Security
均为新增。 这部分作者是另一个人(Peter Reiher),并且写得十分啰嗦,简单的概念翻来覆去地说。 价值不高,可以不看。
附录 D Monitors (Deprecated)
monitor即所谓「管程」,中文版译者可能没搞明白,将其译为「监视器」,且内容直接忽略不译。 管程功能类似于信号量/互斥锁,用于并发编程,是当时面向对象风行的产物。 虽然内容标记为deprecated,也许仍有其历史价值。
附:几位网友的解答,可参考(joshuap233的较详细,xxyzz次之) https://github.com/jzplp/OSTEP-Answers https://github.com/xxyzz/ostep-hw https://github.com/MarekZhang/OSTEP-Homework https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES