2 关于操作系统的大小

在0.1节中笔者曾经介绍了OSASK的大小只有不到80KB,不过目前完成的“纸娃娃系统”居然只有39.1KB这么小,连笔者都感到很震惊,而且这还是没有经过压缩的大小。在OSASK和Linux中,为了缩短系统的启动时间,操作系统的核心部分都是经过压缩的。我们来简单计算一下,如果“纸娃娃系统”也用同样的方法进行压缩的话,包括解压缩的程序在内,也只要大约20KB左右,差不多是现在的一半。

笔者并没有刻意去将操作系统做得很小,因此这个结果是出乎意料的(当然,应用程序倒是有几次刻意缩减大小的行为,比如创建apilib.lib,将应用程序进行压缩,以及对invader.hrb所进行的修改)。

笔者一直坚持这样一个观点:现在的操作系统都过于臃肿了,如果真要推翻重写的话,肯定能一下子变小很多。也许有人会说,“纸娃娃系统”之所以这么小,是因为它的功能少呀。当然,笔者也不认为像Windows和Linux这样的系统可以用20KB编写出来,不过如果20KB可以实现这样的功能,那100KB应该能实现5倍的功能,1MB的话应该能实现50倍的功能才对。

而且,我们的“纸娃娃系统”是将便于初学者理解这个目的放在首位的,因此并没有使用一些一般开发者会用到的手法。从让编写的程序变得更小这个观点来看,这是一个非常不利的条件。此外们我们还进行了一些优化系统速度方面的改造,这也会增加系统的大小(如定时器、窗口移动速度的提高等)。但即便如此,我们的系统还是只有20KB那么小。

■■■■■

笔者的OSASK大约有80KB,它的小巧曾引起了不少的关注。笔者曾经说过,OSASK就是对现在OS都过于臃肿的最好证明。大部分普通人都可以理解笔者的这一观点,但有一些对编程比较精通的人反驳道:“你是用了很多超出常识的高级技巧,为了让尺寸变小而牺牲了很多东西,并且用汇编语言大量代替C语言1,才让OSASK变得这么小的。”

1 相比C语言,笔者更喜欢汇编语言,因此OSASK的一半都是用汇编语言编写的。

这次我们的“纸娃娃系统”可基本上都是用C语言编写的(只有C语言无法实现的部分才用汇编语言来编写)。当然,也没有使用什么高级技巧(其实笔者根本就不会什么高级的技巧,如果真有那种像魔法一样的技巧,笔者还真想学学呢)。相信读过本书的各位读者都是有目共睹的。通过本书,笔者认为自己的观点更加有说服力了。

■■■■■

操作系统变得更小到底有什么好处呢?启动可以变快些,安装所需容量能变小些,而且可以在硬盘、光盘以外的记录媒体上进行安装(比如软盘和存储卡等)。其实,也没什么特别的好处,不过至少应该也没有什么坏处,比起臃肿的系统来说,应该还是精简的系统用起来要爽一些吧?如果花钱购买的操作系统,或者是花很长时间下载的操作系统,其中一半以上都是没用的,笔者觉得这实在是太可悲了。

同样的观点对于应用程序也适用。笔者认为“纸娃娃系统”的应用程序比Windows和Linux的应用程序都要小2。这是操作系统的功劳呢,还是我们为将应用程序变小所做的努力的功劳呢,好像也说不清楚了。不过,应用程序如果内容相同,那自然是小一些的比较好,既能节约磁盘空间,还能缩短应用程序启动时的读取时间。

2 其实OSASK的应用程序更小,这是因为为了让应用程序变得更小,在API上面下了工夫,这个结果也是理所当然的。比如OSASK的invader.bin为1108字节(invader.hrb为1590字节)。

■■■■■

话说,如果编写一个轻巧的操作系统也算是一种比较优秀的特殊技能的话,那么大家通过这30天应该已经可以体验到了。也就是说,大家已经比普通的初学者(甚至是比普通的程序员?)更加优秀了也说不定哦(笑)。如果这是真的,那这本书说不定能成为名著而大卖特卖呢……(笑)

如果你曾经不知不觉地编写了一些比较臃肿的程序,(从喜欢短小精悍程序的笔者的角度来看的话)若能基于本书的体验加以改善那就太好了。不过这一点和本书的目的(编写自己的操作系统)是没关系的,即便是很大的操作系统或者很大的应用程序,也欢迎推荐到我们的支持网页上来。