作为一个计算机专业的开发人员,笔者感到操作系统的确是计算机科学中最奇妙的东西之一。
笔者对操作系统的兴趣来源有两处:Andrew S. Tanenbaum 的那本《Modern Operation System》和大学里的操作系统课程。
那本书的确写得非常不错,作者用他特有的方式将操作系统的奇妙与复杂表现在一本不是太厚的书中。笔者差不多花了一个寒假去研究这本书,之后就开始了操作系统的设计之旅。
至于大学的操作系统课程,并不是因为它的引人入胜才激发起笔者的兴趣。恰恰相反,笔者的大学所用的教材还是那本绿皮的、尤晋元写的、八十年代的、讲述PDP-11上的Unix V6的书,让人极度反感。教授选用这本书的理由是,Unix V6是一个很成功的操作系统,而且操作系统很多原理性的东西是不会变的。话这么说是没错,但事实上呢?当年V6操作系统的确有很多精妙之处,但那根本是出于当时的硬件限制而不得已采用的方法,有很多方法根本不符合如今的写程序的规范!换句话说,以今的眼光来评价当年的代码,只有一句话:写得很糟糕。
在此笔者并不是想否认Unix V6的地位,只是对当年教授奉Unix V6代码为宝典、甚至希望大家向它学习C语言编程的做法感到反感。在他的号召下,笔者周围的同学几乎人手一本《莱昂氏源代码》,把里边很多为了突破硬件限制而使用的技巧视为C语言的境界。相信看过V6代码的读者对代码中大量交叉引用的全局变量都会留下深刻的印像,这种“牵一发而动全身”(笔者教授原话)的代码,根本就是现代软件开发中所不能容忍的,但确被教授说成是“Unix V6 的代码精妙所在”。所以当我看到有人在写程序时把+=写成=+时(当年的C语言语法),感到真的很不忍心......
有点扯远了,笔者只是想说,正是对那些古老的操作系统的学习,激起了笔者想做一个现代硬件环境下的操作系统的兴趣。
笔者设计操作系统的目标平台是PC,综观当前业界的两大操作系统:Windows和Linux,发现它们都有一个共同的特点:历史负担太重。由于PC的发展史以及操作系统各自的发展史,两大操作系统为了向前兼容,兼容早期PC和早期版本,做出了太多太多的折衷了。
所以Sinos的设计目标就是Pentium以后X86系列CPU,并且完全没有兼容限制,可以最大程度地简化设计。
关于Sinos的设计,笔者在接下来的文章中会陆续发表,从最初的引导扇区写起。
对读者的要求
希望读者具备基本的操作系统知识,PC硬件接口知识和一定的计算机系统结构知识。