自己动手写操作系统

台湾版

OSFS @ GitHub
Written by YY   
Saturday, 19 November 2011 14:33
今天把书中的代码按照章节划分放到了 GitHub 上,每章一个项目,入口在这里
想要看代码或者 hack 代码的同学们可以到 GitHub 上 fork 之,应该是比以前方便了。
如果你对此有什么见解,请直接给我发邮件,邮件地址我想你知道。
 
Orange'S:一个操作系统的实现
Written by YY   
Sunday, 24 May 2009 15:52
作为《自己动手写操作系统》(以下简称《自》)的第二版,《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(这个名字来自于我的妻子),以表示它们的不同。另外,书中的代码风格,有些地方也做了调整。

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

如果您有任何问题,请在本书讨论区讨论:

注册方法一:

Google Groups
Subscribe to 自己动手写操作系统
Email:
Visit this group

 

注册方法二:

发邮件至:
osfromscratch+subscribe[AT]g00glegr0ups[D0T]c0m


注意:

从注册到获准可能需要一小段时间,如果三天之内仍没有回音,请即时联系管理员。


什么是邮件列表:
邮件列表在维基百科上的解释是 special usage of email that allows for widespread distribution of information to many Internet users。简单讲就是通过邮件的方式发布及获取信息。它类似 BBS,但它不是 BBS。

为什么是邮件列表:
相对于论坛,邮件列表的优点有以下几点:
  • 论坛是主动的,邮件列表是被动的。只需要订阅一下,不需要想着去访问它,只要收邮件就能看到新消息。
  • 邮件形式的内容更易于管理。使用邮件客户端或者像GMail这样的Web邮箱,可以方便地存档、搜索、回复、或者忽略你订阅的内容。
  • 邮件列表更易于维护,从而可以更长久。
  • 邮件列表由于跟邮箱绑定,所以更具有黏性。
  • 真正有事干的人,通常没时间去泡论坛,但是往往会订阅一些邮件列表。最重要的是,这些真正有事干的人可能恰恰是有能力回答你的问题的人。
  • 黑客都通过邮件列表联系。
  • 邮件列表的垃圾信息相对较少,大概是因为制造垃圾的人只见过论坛。

Google Groups 是论坛还是邮件列表?
按照我的理解,Google Groups 应该是兼具论坛特性和 Google 特质的邮件列表。

要订阅 Google Groups 必须使用 GMail 吗?

不。

要参加讨论,邮件列表是唯一的方式吗?

目前来讲是的。

邮件列表只有一个吗?
事实上不止一个,如果你使用英文,请订阅英文邮件列表

 

最新消息

这里

 
关于邮件列表的重要声明

一、因邮件列表内不断出现各种 SPAM,现对其设置做了如下改动:

  1. Only members can view group content
  2. People can request an invitation to join. 之前的方式是 Anyone can join, 于是给无关人等提供了发 SPAM 的条件,现在如果你想加入邮件列表,需要在邮件列表主页上点击“Apply for membership”,并在“Apply to this group”上方的框内正确回答你所看到的问题。请原谅我设置的这些障碍,都是被 SPAM 逼得。
  3. 换了种颜色
  4. 增加了 Subject prefix
  5. Use a fixed width font to display messages. 这样代码显示出来会更好看些。

 

二、由于众所周知的原因,Google Groups 无法通过 http 方式访问,请大家改用 https 来访问:

 https://groups.google.com/group/osfromscratch/

 

三、 由于我不能每天在邮件组回答问题,在此恳请各位高手有空帮我回答几个问题,我相信大家的力量才是让此邮件列表长期繁荣的根本力量。先谢过了!

 

四、祝所有人过年好。

 

五、祝 GFW 早死早超生。

 

关于本站

本站是《Orange'S:一个操作系统的实现》官方网站,但内容却不仅限于此。在关注操作系统开发的同时,本站对于 Linux、编程语言、算法和数据结构等内容都可能有所涉及。

本站没有站内讨论区,如读者需要讨论,请见这里

本站仍在建设中,最新消息会同时通过 twitter 发布。

检索

Google Groups
自己动手写操作系统
Visit this group
OS From Scratch, Powered by Joomla!; Joomla templates by SG web hosting