Windows操作系统发展简史
20世纪80年代后期,当时的UNIX操作系统已经发展得相当成熟,例如在人机界面上已经有了X Window,已经开始使用鼠标器,也已经有了“客户机/服务器(Client/Server)”的结构模式。当时的一些“工作站”实际上已经具备了现代桌面应用所需的大多数基本要素。同时,由于PC功能与性能的日渐提高,当时甚至已经有人将UNIX移植到PC上,例如当时的Xenix就是PC上的UNIX。而微软为PC开发的操作系统,则还是采用命令行模式的DOS。相比之下,当时微软的产品无论从哪一个角度说都还只能是下里巴人,与阳春白雪的UNIX不可同日而语。然而,那时的绝大部分公众对于计算机基本上相当于文盲,对于计算机应用的要求也还很低,所以下里巴人的DOS恰好获得了“和者众”的效果,而阳春白雪的UNIX则反倒不免曲高和寡。然后,到了90年代前期,在UNIX这一边有了类似于Xenix但是公开源代码的Linux。而微软这一边,则先后有了Windows 3.1、Windows 95,并已开始开发Windows NT。然而相比之下当时微软所提供的操作系统产品仍只能说是下里巴人,因为Windows 3.1和Windows 95乃至Windows 98实际上都是基于DOS的,而DOS在严格的意义上至少称不上是现代的操作系统。所以,UNIX/Linux阵营的人们长期以来从技术上鄙视Windows也是事出有因,并非全是门户之见。但是,经过这么多年的发展,微软的操作系统产品走过了一条与用户水平同步提高的过程。到了现在,如果继续从技术上鄙薄微软的操作系统产品,那就错了。事实上,现在的Windows与UNIX/Linux一样都是阳春白雪,只是现在用户的水平也已提高,不再会因为曲高而和寡,更何况用户早已熟悉了Windows,进而竟离不开Windows了。回顾从20世纪80年代至今的历程,微软的操作系统产品与用户一起走过了一个从低到高同步提高,从而日益普及的历程,获得了商业上的巨大成功。
现在的Windows操作系统,问题不在于技术上是否先进,而在于不公开源代码,使人们无法根据第一手的资料深入了解其实现,使公众在一定程度上处于不知情的境地。不过,这种不知情主要是在具体实现方面的,而不是机理方面的。事实上,如果只从机理、技术方面考察,则现在的Windows与Linux其实是很相似的。事实上微软的操作系统产品一直在从UNIX/Linux吸取营养,最明显的就是Windows的“视窗”机制显然借鉴了X Window。即便是在DOS时代,例如DOS命令行的输出“重定向”和“管道”机制,就不能不令人联想起UNIX命令行中的相应机制,所不同者倒是UNIX中的这些机制功能更强、更灵活。
另一方面,正因为微软的操作系统产品一直是商品,其技术上的发展就受到一定的限制,这是因为:
作为商品,其更新换代的速度不能过快,技术上的步子不能迈得太大。
作为商品,新老产品兼容的问题更为突出。这样,如果某种机制的设计“先天不足”,后面就比较难以弥补。
尽管如此,经过二十多年的发展,现在的Windows操作系统从技术上说大体与现代的UNIX/Linux相当,在一些细节上则各有千秋。当然,要是从市场占有率上说,那就具有压倒性优势了。
在Windows操作系统的发展历程中,Windows NT特别是Windows NT 4.0的开发有着划时代的意义。在此之前的Windows版本,以及与此同期的Windows 95/98都是基于DOS的,大体上只是在DOS外面包了一层类似于X Window的外壳,使它看起来像个现代的操作系统而已。微软自己也知道,沿着这条路很快就会走到尽头,必须采用较新的操作系统技术才有出路;所以从80年代末90年代初就决心要开发新一代的Windows,并将其称为NT,即采用“新技术(New Technology)”的Windows。事有凑巧,当时的DEC公司正好有一批研发VMS操作系统的骨干人员想要离开,于是就一起到了微软,这里面技术上的领头人就是后来成为Windows NT总设计师的David Cutler,还有后来写了《Microsoft Windows Internals》一书的David Solomon。VMS是DEC公司为其VAX小型机开发的操作系统,虽然没有UNIX和后来的Windows那么流行,却确实可以说是个现代意义上的操作系统。与UNIX大体上属于同一时代。这些人为微软带来了VMS的技术和经验,使Windows NT特别是Windows NT 4.0的开发取得了成功。很自然地,今天的Windows NT带着来自VMS的基因,以至于有人调侃说:把VMS三个字母各加上1,就成了WNT。但是,从另一个角度来看,这也说明所谓“新技术”其实基本上就是VMS和UNIX已经采用了的技术。
当然,Windows NT并不是VMS的简单重构,在Windows NT里面也可以看到MACH的影子。MACH是卡内基•梅隆大学开发的一个微内核操作系统,其实MACH也是从 UNIX变过来的。微内核操作系统的特点是把内核尽量缩小,而改由各种服务进程来提供原本由内核提供的功能,微内核系统的最大优点就是灵活性好。所以,早期的Windows NT带有明显的微内核痕迹,但是后来发现由服务进程提供的服务毕竟效率比较低,所以又逐步移回到内核中,后来甚至变本加厉,把图形功能也移到了内核中。因此,现在的Windows内核实际上包括了两大部分,一部分是本来意义上的操作系统内核,另一部分则是移到了内核中即系统空间中的视窗服务,前者的映像是ntoskrnl.exe,后者的映像是win32k.sys。而在Linux中,则后一部分就是用户空间的视窗服务进程X Server。有时候可以听到人们在说Windows的内核比Linux的大很多,似乎本不应该有这么大,之所以有这么大是因为设计或实现得不好。其实不然,Windows内核之所以大,是因为把图形界面也移到了内核中,如果把X Server也移到Linux内核中,那么Linux内核一样也会有这么大。
在早期的Windows系统中,视窗应用只是三个“子系统”之一,另两个子系统是POSIX和OS/2。前者提供类似于UNIX的应用界面,是出于*采购的要求;后者提供与OS/2操作系统的兼容性,那是因为当时的微软与IBM有着比较密切的合作关系。当然,微软的主要精力都集中在视窗子系统上。在后来的发展中,渐渐地另两个子系统变得不那么重要了,因而就慢慢淡出了。另一方面,早期的Windows操作系统并非专门针对Intel的x86系列CPU,特别是当时还有由DEC公司开发的ALPHA处理器,可是后来几经周折ALPHA处理器也慢慢淡出,现在的Windows特别是作为桌面系统的Windows,就变成专门针对x86系列的了;只有用于(小型)嵌入式系统特别是手持设备的WinCE是个例外。
从老一代Windows包括Windows 95/98向新一代Windows的过渡,到了Windows 2000才基本完成。许多人把Windows 2000称为Windows NT 5.0,就是因为Windows NT 4.0是个转折点,是个新的基础。至于Windows XP,那又是一个新的Windows NT版本。甚至更新的Longhorn,其基础仍旧是Windows NT。所以,Windows NT 4.0之于微软的操作系统,就像80386之于Intel的微处理器一样,都是具有划时代意义的。从那以后,无论是Intel的微处理器还是微软的Windows,都没有发生进一步的根本性的质的变化,虽然也在发展,但是总体上属于小修小补,属于“量变”的范畴。