36

世界上最牛气的操作系统教材是什么?

 3 years ago
source link: https://zhuanlan.zhihu.com/p/266871840
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天在 “软件工程技术研究” 专栏发一篇有关宇宙第一操作系统实验室:上海交大 IPADS 组最新力作《现代操作系统:原理与实现》的简评。虞斌要求我写 1500 字的书评,我感到受宠若惊,就义正辞严地答应了。

我想要一本怎样的教科书?

作为《操作系统》的一线教师,我想要一本什么样的操作系统书呢?emmm…让我回想一下我学操作系统的时候。那个时候国内的教科书有个通病:如果你不懂操作系统是什么,你理解不了书上的那些大道理是什么意思;但如果你懂了操作系统,你又不需要看这个书了。救了我一命的是老师推荐的 Tanenbaum 的《操作系统:设计与实现》,著名的 Minix Book,当时看的还是第二版,写作风格严肃中带着风趣,更重要的是有很多底层系统的代码。看代码直接在模拟器(甚至硬件)上运行起来,那别提有多爽了。那时候我就有一种隐约的感觉,以后我也要教操作系统课,一个人爽不如大家一起爽嘛!

到 2018 年我开始教操作系统的时候,我选的是《Operating Systems: Three Easy Pieces》(OSTEP),作者是自操作系统界的 “神雕侠侣” Remzi 和 Andrea。这本书的写作也堪称典范;不过对我们的人来说,这本书显得有点不够劲——因此看过我视频的同学都知道,我的课程虽然以 OSTEP 为主体,但课程里添加了大量补充的内容。如果我要再给同学们推荐一点读物?那就只有研究论文了……当然我也知道同学们绝对不会读的(逃

然后就有了今天要介绍的新书:《现代操作系统:原理与实现》(陈海波、夏虞斌等著,即封面图片,“银杏书”)。

ne6jqiy.jpg!mobile

《现代操作系统:原理与实现》是一本怎样的教科书?

区别于所有本人已知的教材(包括我现在用的 OSTEP、很出名的 MOS 等),这本书最大的特点就是挑战了传统操作系统教材的权威(陈老师本人也是权威,所以其实不算是挑战),果断地删掉了和“现代”操作系统关系比较小的部分,真正把 “现代” 两个字体现得淋漓尽致。跟 Tanenbaum 的 “伪现代” 比,这个是 “真现代”——以如日中天的 AArch64 作为底层机制,直通操作系统研究前沿,现代到有些部分标上了辣眼睛的 ,都是货真价实的干货。能对这个世界的架构作出宏观把控的,我想国内可能没有第二家了。

IvE3I3M.jpg!mobile

这本书对操作系统领域的理解不仅是全新的,也是超乎寻常全面的。作为一个还勉强 follow 每年系统顶会的人,我上课会讲但不曾出现在任何教科书里的案例;我想讲但因为课时有限无法讲的;甚至许多我错过的,统统都在这本教科书里!京东(预售)只要 69.5,只要 69.5。你买不了吃亏,买不了上当,经过了那么多年积累的操作系统领域的高级话题,人家给你精挑细选好了摆在你面前,不香吗?

这还是一本带代码讲解和实验的教科书。本书从第一章开始就抛出了操作系统中最 fundamental 的问题:应用程序到底是怎样执行在计算机软-硬件系统上的,然后用数百页的篇幅对这个看似简单却极具挑战的问题展开了详尽的阐述,最后还送实验大礼包。支持现代多处理器系统的实验绝无仅有(南大也有,哈哈哈),请大家珍惜。随书可见各种宝藏式的小例子,例如讲到 fork 前后进程的行为时,附带了一个大家复制粘贴即可运行的小例子:

char str[11];
int main() {
  str[10] = 0;
  int fd = open("test.txt", O_RDWR);
  if (fork() == 0) {
    ssize_t cnt = read(fd, str, 10);
    printf("Child process: %s\n", (char *)str);
  } else {
    ssize_t cnt = read(fd, str, 10);
    printf("Parent process: %s\n", (char *)str);
  }
  return 0;
}

再例如讲线程时候介绍了 ucontext.h 可以保存当前执行流的寄存器现场;讲多处理器调度时讲解了 sched_setaffinity 实现进程-处理器的“绑定”……这些传统操作系统教材上不曾出现的走心小细节数不胜数。

最后,IPADS 组其实公开了他们所有的课程资料,只是比较低调(从他们的主页上很难找)。这里偷偷附一个传送门:SE315。以及这本书的主页 https:// ipads.se.sjtu.edu.cn/mo spi 也会在 10.24 随着纸质书籍发行同期上线,每一章节发布后都会有对应的论坛。

我会怎么用这本教科书?

要我说这本书有什么缺点?我觉得它不适合作为唯一的操作系统教材,因为它实在太太太太牛逼了!我个人的感觉是只有配合宇宙第一的操作系统实验室老师的悉心讲解才能让同学将知识比较好地融会贯通;而且如果不是对系统编程、计算机硬件机制、AArch64 等有比较好功底的同学,阅读本书会具有一定的挑战。

对我来说,这是给愿意挑战自己、在操作系统领域深入学习的同学没有第二选择的最佳参考书。与此同时,我会毫不犹豫地把这本作为本组研究生的必读教材。其实我自己的教学体系也逐渐趋于收敛,在合适的时候,我要写一本 “菜鸡也能读得懂” 的操作系统入门书,只讲机制,不讲策略,给这本《现代操作系统:原理与实现》垫个背。 此处夹带私货推广我的操作系统课:

蒋炎岩:豪华文件系统测试套餐 现已加入南京大学操作系统实验 zhuanlan.zhihu.com yYvaEjn.jpg!mobile [完结] 2020 南京大学 “操作系统:设计与实现” (蒋炎岩)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com VRrqUvU.jpg!mobile

最后,想必我已经提前得到书稿的电子版了。但想要电子版的同学们对不起了,我得到的电子版全书每一页都有我大名的水印(我看的时候觉得太辣眼睛已经用脚本去掉了),但不知道是不是还藏了什么牛逼的不可见的水印,要是散播出去我就出名了。作者还表示,其中第二和第三部分会完全公开在网站上供大家使用,尤其是高级话题部分,简直就是天上掉馅饼。大家还不快去看看?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK