Open Source
这本书集合了所有Open Source领域大拿的文章。从Linux, Perl, Apache, NetScape的创建者到Open Source的开创者。虽然写与99年,但他们在文章中阐述的设计思想和Free Software business model不但对于我们深刻理解这场变革对现在固有观念冲击有帮助,并且对于我们的软件设计思路也有非常大的帮助。
The Linux Edge – By Linus Torvalds (Linux的创建者)
记得2001年Linus出了一本自传,名字好像叫,Just for Fun。 这本书中讲了Linus自己的生活和开发Linux的过程,一直后来到美国,进入Transmeta。 (夏新的V3用的就是这家公司的芯片, 不过现在夏新不再生产v3了)。Linus讲了他在赫尔辛基大学的生活和利用学校的网络分发 Linux,建立网上社区的过程。比较有意思的还有Linus从开始到结束,都有着芬兰人是世界上用短信最密集的国家的骄傲,和对泡SPA的着迷。
虽然这本自传是在Linus1991年重写Linux Kernel之后写的,但是这本自传没有讲到太多他的设计思路。它是more entertainment。1991年之前,当时他还没有意识到LINUX可以变的这么流行,需要在不同的architecture上工作。最初的LINUX只是能运行在X86上Linus就高兴了。并且很多结构设计并不能满足后来Open Source 的开发思念 (精诚合作,分头工作)。这5页的THE LINUX EDGE给我们了精练的一个概括和解释LINUX怎么实现在不同硬件平台上的portability和适应新的开发环境的不断进步。
设计一个操作系统,你会选择怎么样的设计结构呢?不外乎俩种。
1: 把所有的hardware specifics 放在core kernel里。这样的话,你得到最大的performance,因为你的主要的功能比如scheduling, process management, signaling, paging, and swapping等都变成了internal process;但是portability就比较差。因为kernel code包括一些和低层硬件的互动。如果要把你的系统在一个新的hardware architecture上运行,你需要重写一个完全新的code base。就像是我们用的fork一样。这样还造成了一个很大的缺点,就是要随着支持硬件平台的增长,就要有很多的code base。这对维护是很麻烦的。
2:把所有的hardware specifics放在user space。这样的话core kernel变的小并且非常portable。不需要根据什么特殊的hardware specifics来修改kernel很多。这就是microkernel architecture。每个microkernel只做原来kernel工作的一个subset。microkernel architecture的基本思路就是建立一个abstract layer来表示(abstracting)底层的process control, memory allocation, 和resource allocation。 我想使用abstract layer大概是我们所有人在处理portability时,第一个想到的解决方案。但是使用abstract layer的一个最大缺点就是performance。因为你的code要经过多一步的abstract。在我们普通的application 设计中,performance的丢失可能不是那么清楚和显见。但在kernel中,我们可以比较容易的看到。
Linus选择了怎么样的设计呢?―― “If you want code to be portable, you shouldn’t necessarily create an abstract layer to achieve portability. Instead you should just program intelligently. ”首先Linus没有采用microkernel architecture。他相信应该在kernel里包含一些machine specifics的code。但是包含多少,他需要在portability和performance之间选择一个平衡点。Linus的聪明之处在于他深刻的研究了所有现在不同硬件平台的结构去发现这些平台的共同处,然后把这些共同处包含在kernel里。比如说内存管理(memory management)。X86, Sparc, Alpha 和苹果的PowerPC在表层内存管理功能上很是不同。但底层的paging和caching却有着很多的共同。大量学习和研究后,Linus把这些共同处包含在了他的kernel memory management里。而把非常hardware specific的都放在了user space,并且把它们模块化。这样当把LINUX deployment在一个新的系统上,就变得容易了。实际上Linus是采取了上面两个解决方案的交集。
文章中还讲到了interface设计的问题,还有compile常数的问题。都是非常好的设计和coding建议。文章中也讲到了LINUX的未来发展方向。Kernel的发展会停止下来,当它到了一个稳定和成熟。 Linus更希望看见LINUX在laptop和desktop上的应用,而不是在super computing上。 LINUX的其他方向,比如为embedded system设计的LINUX;LINUX的multi processing;web serving, clusting等。这些问题可能已经和快要解决了,因为这篇文章是在1999年写的。而我也在2003年离开了软件行业,对以后的发展不是太清楚了。但是这些基础的设计理念是不会经常改变的。就象一个kernel和web server一样,不管你怎么设计,它们需要完成的工作都是一样的。
最后一点就是关于GCC的重要性。- “The portability of Linux is very much tied to the fact that GCC is ported to major chip architectures”. 因为在不同architecture上的GCC 才可以使LINUX to port到这个architecture。UNIX 的流行性就是因为有和UNIX相匹配的各种GCC。现在的问题是,为什么Linux社会不设计一个Portable 的GCC呢?
To be continued
我们学习什么呢?
《开源软件文集》热门书评
-
Open Source 的入门读物
6有用 0无用 咬文嚼字 2005-09-07
中文版序历史是一面镜子,以史为鉴,可以避免前人曾经犯过的错误,少走弯路,或者避免走弯路。如果聪明的话,甚至可以充分利用前人的伟大智慧,干出一番惊天动地的事业来。 学习历史当然少不了要阅读史书,在众多的史书中,我尤爱读司马迁所著的《史记》。这部鸿篇巨制,洋洋洒洒共五十二万字,被称为“史家之绝唱、无韵...
-
我们学习什么呢?
4有用 0无用 Hansen 2006-07-12
Open Source这本书集合了所有Open Source领域大拿的文章。从Linux, Perl, Apache, NetScape的创建者到Open Source的开创者。虽然写与99年,但他们在文章中阐述的设计思想和Free Software business model不但对于我们深刻理解...
-
我的开源精神启蒙书
3有用 0无用 ilangge 2006-01-09
2001或者2002年的时候,我还在鼓捣Delphi,看到china-pub上有这本书卖,就买下来了。我的开源软件使用历程,源于大学里面安装学习过的linux,记得当时卖的第一个发行版是TurboLinux,由于一真搞不定显示驱动,无网可以上,就一行在命令行下简单的玩了一下,没有进GUI界面。后来装...
-
我们正在制作一部开放版的《开源文集》
1有用 0无用 洛基开放文化实验室 2006-12-04
开源软件正在改变这个世界。Apache、Linux、Firefox领导互联网。OpenOffice.org成为了许多机构的指定办公套件。开源软件重置IT世界的商业格局,是网络2.0的精神启迪。要真正理解开源软件这一现象,有一些经典文献是必读的——Eric S Raymond的“The Cathedr...
-
yours free
1有用 1无用 Al7 | 暗黑影像 2006-04-14
人还年轻,所以有些崇尚在所难免;Open Source满足了,Free精神也许还是我更在乎的, 谁会愿意被所谓权威束缚.一些成功商业运作的典范也不错....
书名: 开源软件文集
作者:
出版社: 中国电力出版社
原作名: Open Sources: Voices from the Open Source Revolution
副标题: 开源革命之声
译者: 洪峰 | Sam Ockman | Mark Stone
出版年: 1999-12-01
定价: 35.00元
ISBN: 9787508301983