新书推荐:Orange'S:一个操作系统的实现

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

trackback: http://osfromscratch.org/

作为《自己动手写操作系统》(以下简称《自》)的第二版,《Orange'S:一个操作系统的实现》(以下简称“新版”)主要有以下变化:

  1. 书中示例操作系统的名字改为 Orange'S
  2. 书名改为《Orange'S:一个操作系统的实现》
  3. 增加了有关 IPC、FS、MM 等内容
  4. 将默认开发平台改为 GNU/Linux,同时兼顾 Windows
  5. 更改了排版工具,并使用技术手段增加书的可读性,比如代码行号的运用
  6. 建立专门网站以服务读者
  7. 建立专门讨论区供读者交流

读过《自》的读者一定知道,其中默认使用 Windows 作为开发平台,同时使用虚拟机来编译及运行自己的 OS,在新版中这一点发生了变化(如上述第 4 条所述),具体的变化原因在书中第二章有详细的叙述。虽然开发平台是第二位的事情,但书中的默认平台却不免影响到叙述细节,所以,如果读者基于自己的原因 坚持在 Windows 上开发(可能的原因或许有对 Linux 不熟悉、需要边开发操作系统边登录某些网上银行等等),则可能对读到的内容进行一点点额外加工。当然,所需的额外加工是少量的,而且在第二章中也有专门的 文字介绍如何在两种平台下搭建工作环境。此外,如果读者不介意花钱,还可以同时购买《自》和新版,相互参照阅读。

新版的内容是有增加的,新增文字约占整本书的三分之一,新增代码则是《自》中代码的数倍。这些新增的内容,读者只能从新版中获得。目前并未有将新增内容单独成书的打算,所以读者即便仅想阅读第八章以后的内容,也需要购买整本《Orange'S:一 个操作系统的实现》。已经购买了《自》的读者可能觉得有点浪费,但事实并不如此,因为《自》的内容经过了重新排版、修订和编辑(比如代码格式进行了重排, 更方便与光盘中的文件对照阅读,以及其中所有的矢量图都用 pgf/TikZ 重新绘制等)笔者倾注的心血使得新版的感官已经大为不同,读者一看便知。

坦白讲,我在写作《自》的时候,并没有想过今天会有一个第二版。原因在于,我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情。所谓填 补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统,而 这个任务第一版已经完成了。

那么为什么我又写作了第二版呢?原因有几个方面。第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉 不详的通病,作者本人可能很清楚原委,但写得太简略,以至于读者看来未必清晰。第二,我自己想把这个圈画圆。第一版的书虽然完成了它的使命,但毕竟到书的 结尾,读者看到的不是一个真正的操作系统,它没有文件系统,没有内存管理,什么也干不了。在第二版中,你将会看到,你已经可以通过交叉编译的方式为我们的 实验性OS编写应用程序了,也就是说,它已经具备操作系统的基本功能,虽然仍然极其简陋,但第一个圈,毕竟是已经圆起来了。第三,实践类的操作系统书籍还 是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。 我自己也气馁过,所以我在第二版中,仍然试图把话说细一点,把自己的经验拿出来分享。而且我选择我能想到的最精简的设计,以便让读者不至于陷入太多细节而 无法看到全貌。我想这是本书可能具有的价值所在──简化的易懂的设计,还有尽量详细的文字。

新版的排版是我用LaTeX自己完成的。在排版中我花了一些工夫,因为我希望读者购买的首先是一本易于阅读且赏心悦目的书,其次才是编写操作系统的方法。 另外,书中列出的代码均由我自己编写的程序自动嵌入LaTeX源文件,从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中代码的准 确位置。

此外,在新版中还有一些小的变化。首先是操作系统的名字改变了,原因在于虽然我们的试验性OS从前辈们那里借鉴了很多东西,但其各个部分的设计(比如文件 系统和内存管理)往往有其独特之处,所以我将原先的Tinix(本意为Try Minix)改成了新名字Orange'S(这个名字来自于我的妻子),以表示它们的不同。另外,书中的代码风格,有些地方也做了调整。

新版中,原先的叙述风格都尽量地得以贯彻,而在表现形式上,新版用了更多心思,我相信读者能在其中发现这些特点:关注动手细节,探寻代码背后的故事,结果与过程兼顾,内容与形式并重。加上专门为本书建立的网站和讨论区,我相信读者能更容易地阅读,更轻松地学习。

接下来,我开始编写属于自己的操作系统,并将自己学习过程中遇到的问题全部记录下来,与大家分享,欢迎大家指正。


John Shao's Blog 2014-07-03 12:41:27

[新一篇] 獻給奮戰在一線的程序員:關于性格內向者的10個誤解

[舊一篇] 程序員的幽默笑話
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表