无论是Windows、Linux还是Mac OS X,使用计算机的人就会接触到操作系统。尽管原始的计算机是不需要操作系统的,然而现在的大大小小的计算机已经离不开操作系统,实际上,一般人最经常接触到的软件就是操作系统。只要你在运行程序,那么背后就会有一个操作系统在支持。
OS,Operating System(操作系统)是什么?按照一般的定义:操作系统控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。操作系统就是通过更好、更方便的方式组织、使用硬件资源,并提供更多的功能和更好的性能。操作系统和硬件紧密结合,由于硬件不停的发展,操作系统也需要不停地发展。
对于大多数电脑而言,没有操作系统是无法使用的,而个人电脑上最常见的系统就是Windows,为什么Windows如此常见?因为按照定义,操作系统的一个重要作用就是就是给用户提供一个方便使用各种硬件资源的工作环境,以易用性作为主要诉求的Windows系统就符合了这个要求。当然,充分地发挥硬件的作用也是操作系统的任务,从下面Windows的历史当中,我们可以看到Windows的易用性和功能、性能是如何地发展的
我们都知道Windows操作系统是Microsoft微软公司的一个产品,一些较老的用户可能还接触过微软的MS-DOS,一个操作系统。在谈到Windows诞生的时候,就不能不谈到DOS,因为一开始的Windows需要DOS才能运行。

字符界面:MS-DOS,版本3.30是笔者刚接触电脑时流行的操作系统;1987年发布
MS-DOS的第一个版本——1.0是在1981年配合IBM PC推出的,当时,市面上的PC都是封闭式的结构,并且市面上具有各种各样的处理器。1978年,IBM打算进入微型计算机市场,到了1980年,它们决定进行一个前无古人的创举:建立一个开放性标准的PC架构,公开了除BIOS之外的全部技术资料,使不同厂商的标准部件可以互换。这个计划被非官方地称为“Manhattan Project(曼哈顿计划)”。我们知道这个架构将会开创IBM PC的历史。然而在当年,在硬件准备好了之后,还需要软件搭配。IBM公司同样也希望这个软件规范也是开放型的,8月21日他们决定向微软购买BASIC、FORTRAN、COBOL、Pascal编程软件。IBM当时决定使用Intel 8088作为处理器,而微软的编程语言已经在8086上进行了许多工作,只需要略为改动就可以运行(8088是8086的一个简化版本)。
8088主板,1979年。Intel 8088是以8086为基础的处理器,拥有16位寄存器和8位数据总线。因为采用16位数据总线的8086需要的大资料总线宽度的电路板还是相当地昂贵。8088的prefetch queue(预取序列)是4个字节,8086是6个字节。8088 的后代包括到现在还在使用的Intel 80188、80288(不再制造或使用)、和80388
获得16位编程语言之后,IBM还需要一个16位的操作系统,当时8086上流行的操作系统是CP/M-86,而微软当时的操作系统是盖茨发展的一个16位的叫做XENIX的UNIX操作系统。由于种种原因IBM并没有采用CP/M-86,在9月25日,微软和一家叫做Seattle Computer的公司签约获得无限发布及颁发86-DOS操作系统许可证的能力(Seattle Computer也可以同样继续发布),随后的1980年11月6日微软和IBM协议,微软将DOS提供给IBM,同时微软和IBM都可以继续开发DOS(但是IBM不可以授权给第三方而微软可以),接着,随着IBM的个人电脑发布(1981年11月12日),MS-DOS(1981年8月)和PC-DOS两条路线就出现了。86-DOS就是这两个操作系统的前身,而86-DOS(Disk Operating System)之前叫做QDOS(Quick and Dirty Operating System),由Tim Patterson在1980年基于部分CP/M部分DEC操作系统开发,并具有一个FAT文件系统来处理外部存储。
随着IBM PC的成功,拥有DOS就像是拥有一座金矿一样——微软在81年7月买下了86-DOS,不过Seattle Computer可以继继续随着它们的机器销售86-DOS。
1981年8月发行的Microsoft DOS 1.0由4000行汇编代码组成,可以运行在8KB的内存中。DOS是基于命令行的——直到最后都是如此(但是在后期出现了DOSSHELL这样的类似于图形界面的DOS外壳程序),当时,图形界面(GUI,Graphics User Interface)已经出现,甚至已经出现了很多年:

最早的GUI:Xerox Alto,1973年
最早的GUI源自Xerox施乐内部的研究,不过很奇怪地在很长一段时间内没有得到应用,1979年Steve Jobs(史蒂夫·乔布斯)在访问Xerox PARC之后回来立即就建立了Apple Lisa,一个不太成熟也不太成功的GUI系统:

软硬捆绑的计算机:Apple Lisa Office System,1983年
很快Apple Lisa被Macintosh计划代替:

Apple Mac OS System 1.0,1984年
然而早在1981年底的时候,盖茨就已经见过Macintosh的原型机了,在1982年的时候盖茨还与Apple协议为Macintosh写一个图形化的表格程序(叫做Multiplan)。盖茨很清楚,图形用户界面(GUI)这种更直观的操作方式显然要比DOS的命令行来得更加友好,并毫无疑问是未来的方向(记得一开始我们说操作系统就是为了更方便地使用电脑么?)。在81年末82年初,盖茨和艾伦(Paul Allen)决定为IBM PC做一个GUI界面,这个动机就是Windows诞生的由来。
Windows的诞生并不是一帆风顺,在82年初微软打算做一个IBM PC的GUI之后,在同年秋季的时候,一个图形化的工作环境Lotus 1-2-3出现了,为了节约内存,它并不需要DOS系统而直接操作硬件。微软很明白被人抢先了,于是在1983年宣布11月10日正式宣布他们的GUI程序:Interface Manager(界面管理器),也就是Windows的前身,实际上,Windows在当时还没有准备好,不过这种预先放风的方式可以吸引到人的注意。
盖茨在DOS上面错过了开发的机会,他不想再错过GUI上面的机会。实际上,在83年6月,微软还为图形界面开发了一个专用的鼠标。为了支持鼠标的应用,在11月,微软还发布了WORD办公软件,可以充分利用鼠标的优势。毫无疑问,关于Windows,或者说界面管理器的种种行为导致了Apple的忧虑,并导致了最终微软和苹果关于开发软件的协议的中止。
Microsoft Windows 1.01,1985年11月20日

实际上,发布的准确版本是Windows 1.01
显然,第一代产品不太成功是很常见的,虽然Microsoft Windows 1.0的设计工作花费了55个开发人员整整一年的时间,不过由于延期,以及IBM本身的抗拒,因此并没有流行起来。其时IBM已经转向了采用Intel 286处理器PC/AT架构,而DOS 2.0并不能完全发挥286的性能。不过无论如何,Windows 1.0总归是一个历史性的产品。
Intel System 310,1985年,当时intel最先进的产品,通过多总线架构集成了一个80286和一个80287协处理器,但是软件发展还没有跟上
由于IBM的抵制,Windows 1.0并没有很快流行起来。或许为了掩盖Windows的兴趣,微软加入了IBM OS/2操作系统的开发,并将其演变成OS/2的Presentation Manager显示管理器,然而1987年12月时OS/2 1.0推出的时候并没有附带这个显示管理器,直到OS/2 1.1版本才具有。同样在87年12月9日,微软推出了Windows 2.0,这个系统的后期版本开始基于新的80286/386处理器开发,老的Windows 1.0则基于老的8086/8088处理器。

Microsoft Windows 2.0,1987年

Windows 2.0:最小化与最小化按钮开始出现
在硬件支持上,Windows开始追赶硬件的发展,很快Windows 2.0出了286和386的特别版本,分别叫做Windows/286和Windows/386,版本2.1。286、386和8086/8088相比有什么改进呢?
在1982年的80286处理器上,Intel引入了保护模式(Protected Mode),老的8086模式被称为实模式(Real Mode)。实模式下只能访问1MB的空间,进入保护模式后访问空间扩大到16MB,80286上每个段的大小被限制为64KB。Windows 2.0x版本使用的是实模式,虽然Windows/286同样基于实模式,不过它开始支持HMA(High Memory Area),从而将内存支持从普通实模式的640KB扩展到整个1MB。80286的保护模式没有被Windows/286使用。

Microsoft Windows/286,又名Windows 2.1,1988年
到了1985年的80386,Intel在段寄存器的基础上构筑新的保护模式:虚拟8086模式(Virtual 8086 Mode)并完善了80286的保护模式,后者被称为386增强模式。在虚拟8086模式下可以虚拟出多个8086处理器,从而可以真正地同时执行多个实模式程序并对其进行简单的保护。Windows/386利用了这个特性,将每一个应用程序都运行在这个模式下。同时Windows/386还引入了LIM EMS(Lotus,Intel,Microsoft Expanded Memory Specification)以利用超过1MB的内存。早期的EMS扩展驱动集成在WIndows/386内,到了次年的MS-DOS 4.01才具有独立的EMM386.SYS版本(1991年MS-DOS 5.0带的EMM386.EXE是进一步改进的版本),EMM386通常和HIMEM.SYS一起使用。
从80286到80386,看起来只是处理器位数的变化,但实质上是处理器体系结构的变化,从寻址方式上说,就是从“实模式”到“保护模式”/“虚拟8086模式”的变化。从80386开始之后的处理器,虽然速度和功能不断提升,然而基本上属于同一种系统结构的改进与加强,而无本质的变化,所以人们把80386以后的处理器统称为IA32(32 Bit Intel Architecture)。我们后面还会继续讲到80386带来的另一个基础但是深刻的变化。
Intel 386处理器进入了PC、工作站和服务器,1985年
前两个版本的Windows可以说是一些实验之作,而1990年5月发布的Windows 3.0可以说是一个经过跳跃式的发展的成熟作品。Windows 3.0继续发掘80386处理器的潜力,它支持386增强模式下运行,这个模式支持32位寻址,并开始支持分页功能,分页功能是一个很重要的功能,从386之后,操作系统开始实现了虚拟内存功能。为了兼容之前的应用程序,Windows 3.0仍然是一个16位的操作系统,没有利用到386的32位能力。
在架构上,为了更好地支持从Windows 1.0开始就带来的协同多任务功能,Windows 3.0建立了一个基于虚拟设备驱动(VxD驱动)的驱动模型,这种驱动模型对硬件设备做了抽象,从而允许在不同的程序之间共享硬件资源。在之前的系统中,由于使用的是实模式驱动,配置麻烦并很容易造成冲突。除此之外,多个MS-DOS应用程序现在运行在虚拟8086模式下,从而也实现了真正的多任务运行,在之前的版本中,MS-DOS程序只能全屏运行,并且只有当前的程序是在运行。

Microsoft Windows 3.0 1990年5月

Windows 3.0界面
随后,1991年秋微软发布了Multimedia Extensions多媒体扩展,包括了对声卡和CD-ROM两个设备的主要支持。在1982年3月18日发布的Windows 3.1的改进不仅仅是一个0.1的改进,这个版本加入了两个重大的改进,一个是集成了对多媒体扩展的支持,造就了声卡产业;一个是引入可缩放的TrueType字体技术,最终使得Windows成为了重要的桌面出版平台。可以说,到了3.1版本,Windows系统已经非常成熟了,Windows 3.1很快开始流行,得到了广泛的应用。

Microsoft Windows 3.1,1992年
接下来,微软又分别在1992年底和1993年底发布了Windows for Workgroups 3.1和Windows for Workgroups 3.11,加入了对网络的支持。接着1992年微软正式进入中国,Windows 3.x逐渐开始在国内流行起来。94年微软还发布了一个Windows 3.2系统,它实际上是一个只有中文版的版本。

Microsoft Windows for Workgroups 3.11,1993年
在1988年开始,微软在研发Windows 2.0的时候,同时也在寻找新的道路,盖茨一直渴望研发一个可以运行在大多数处理器上,并具有Unix系统上的多种强大功能的、运行在PC机上的全新的操作系统。这或许是对比Unix和Windows下得到的结果的影响。盖茨对Unix和Windows都很了解,盖茨曾开发过一个叫做Xenix的Unix操作系统。

IBM OS/2 2.0,1992年
在1988年10月31日,比尔·盖茨做了一个现在来看非常重要的决定:雇用一群以David Cutler为首的来自DEC的员工,Cutler领导开发了DEC VMS系统。很快他们加入了和IBM合作的OS/2 2.0开发,OS/2 2.0是一个纯32位的操作系统,它大概就是盖茨梦想中的强大的高端桌面操作系统,而Windows 2.0/3.0则算是低端的桌面操作系统。然而后来在开发方向上的分歧,最后两家终于分道扬镳。
合作决裂之前,微软本来负责OS/2 3.0的开发,在决裂之后,这些来自原DEC的人马开始专心制作盖茨梦想中的操作系统,新的操作系统部分基于OS/2 3.0,同时还带有DEC VMS的因素,这个操作系统被命名为Windows NT,NT就是New Technology新技术的意思。从现在来看,在名字中出现New这个单词不算是一个好主意,因为新旧总是相对的,昔日的新到了现代就很难称之为新。因此现在沿袭Windows NT架构的系统都已经不再使用Windows NT这个名字,而是千奇百怪,无所不有。

Microsoft Windows NT 3.1,1993年,一直到现在,发展了16年
为此什么称之为NT呢?Windows NT采用了全新的设计思想,这牵涉到操作系统内核上的理念。在80年代前,主流的操作系统,要么是属于原始的没有内核的产品,要么属于单内核产品,到了80年代,学术界开始流行一种微内核的风潮,出现了如Mach(1985年)这样的经典微内核操作系统。典型的单内核系统则有各种Unix和类Unix。
在一个分层设计的操作系统中,为其他组件提供最基本的系统功能的部件就叫做内核。单内核就是单个大的进程映像中集成了操作系统中所有基础功能,而微内核就是在内核中仅集成了经过挑选的、基本的功能,其它的操作系统功能构建在其上——用户应用程序再构建其上。微内核的设计可以让系统变得更模块化,带来可移植性和新功能开发上的好处,此外操作系统层次更明晰,维护也会更加方便。

微内核架构:Windows NT架构图,适合3.1~3.51版本
谈到了内核之后,必须介绍一下特权等级(Privilege Level)和双模式(Dual Mode)的概念,操作系统必须安全地在多个程序间共享资源。资源不能让应用程序随意访问而必须由操作系统进行管理,它需要具有特殊的权限,因此在一些处理器上,设计了多种指令等级,不同的等级可以运行的指令并不相同。在80386处理器上,除了以前提到的各种改变之外,还有一个重要的改进就是在保护模式下引进了特权等级的概念:一共四个,从Ring 0到Ring 3,特权依次下降。Ring 0是被用于运行操作系统最核心的部分:内核,Ring 1和Ring 2用于不那么关键的部分:操作系统服务,Ring 3则用于应用程序。然而实际上很多当时的RISC处理器都只有两个特权等级,所以大多数操作系统包括Windows NT都只使用了两个等级,即Ring 0和Ring 3,如下图所示。
Windows NT之前的Windows由于并不支持这个设计,任意程序都可以直接操作硬件并破坏其它软件,系统十分脆弱。运行在两种特权等级下的系统模型就叫做双模式(Dual Mode),分别是用户模式(User Mode)和监察者模式(Monitor Mode)或者系统模式(System Mode ),后者通常叫做核心模式(Kernel Mode)。基于种种强大的特性,很多比较高级的操作系统都构建在386之上。
![]() Ring 0~Ring 3:80386处理器引入的四层特权等级架构 |
特权模式也让真正的多任务功能成为了可能:处理器的定时器每隔一段时间就会产生一个中断,操作系统内核通过管理这个中断来获得不断的对系统的控制权,并根据特定的策略来调度多个程序的执行。Windows NT实现了基于优先级的抢先式多任务,操作系统可以随时中断其它程序的运行;而Windows 1.x/2.x/3.x只能实现协同多任务,也就是说一个程序愿意放出控制权的时候,其他程序才能继续执行,操作系统也一样。微内核设计给Windows NT带来了更好的灵活性和健壮性。

Windows NT 3.1的界面和Windows 3.x的界面很相像

Microsoft Windows NT Advanced Server 3.1,1993年

Windows NT Server 3.5,1994年

Windows NT Workstation 3.5,1994年

Microsoft Windows NT Server 3.51,1995年
微内核设计一切都很好,但是有一个主要的问题:性能,第一代微内核设计如Mach等都有这个问题,因此Windows NT一统江山的时候还没能到来,微软在Windows 3.x的基础上继续开发,实际上,在开发Windows NT的时候,微软就在酝酿着两条操作系统线的融合,首先是API,微软希望它能成为未来操作系统的基础:
Win32 API,1991年1月
显然Win32 API是一个32位的API,作为16位操作系统Windows x.x的替代。Windows NT就使用了这个API并替代了之前计划中的OS/2 API。最初的Windows NT面向服务器和工作站市场,在桌面系统上,微软希望能有一款不再依赖于MS-DOS、同样基于Win32 API的32位操作系统,于是代号为"Chicago" (芝加哥) 的操作系统被提上了开发日程,这就是后来的Windows 95:
Microsoft Windows 95,1995年
1995年8月24日,Windows 95正式发行,这是一个里程碑式的作品,也是第一个以年份来命名的Windows,正式的版本号是4.0。为了实现对以往的兼容,Windows 95是一个16位/32位代码混合的单内核操作系统,大量的组件和新概念在Windows 95中被引入,如开始菜单和任务栏这样等。Windows 95还同样实现了抢占式多任务和多线程技术,虽然在16位程序仍然基于协同多任务调度。Windows 95还支持即插即用(Plug and Play)技术和更丰富的多媒体程序,系统最低必须提供640×480分辨率和256色的支持。Windows 95迅速成为了一个流行的游戏/多媒体平台。
95年年底,微软发布了Windows 95 Service Release 1,第二年又推出了Windows 95 OEM Service Release 2(Windows 95 OSR2) ,开始正式支持FAT32文件系统,并开始捆绑Internet Explorer,这个举动引起了互联网浏览器格局的变迁。Windows 95 OSR2还开始集成了Direct X 2.0,这个API在图形界面上将会变得越来越重要。由于Windows 95 OSR2的重要性,人们叫它为Windows 97。
在Windows 95获得了巨大的成功的同时,微软还在不停地改进Windows NT,作为一个以GUI为根本的操作系统,图形性能是基础。在通常情况下,微内核的性能比单内核性能要低,因为单内核通过系统调用而微内核通过消息传递。虽然Windows NT发布的时候采用了特别的方式改进了图形性能,如优化的消息传递协议LPC(Local Procedure Call,本地过程调用,用来和RPC对应),并且还从中特别创造了Quick LPC,通过事件对(Event Pair)这个特别的结构来加速CSR subsystem(Win32子系统)的图形操作。然而微软感到还未足够,到了1996年发布的Windows NT 4.0,微软将图形相关的部分从用户层放入了内核层:
Windows NT 4.0架构图,带颜色的部分在之前的版本中原本属于CSR subsystem的一部分;Windows NT 4.0之前,驱动程序也有一部分在用户层
在Windows NT系统中,所有的图形界面操作都和Win32子系统(上图是CSR subsystem)相关,系统通过调用Win32子系统的GDI(Graphics Device Interface,图形设备接口)API,然后GDI部件调用显卡驱动来实现图形操作,后一种调用比前一个调用频繁的多,因为一个简单的GDI命令需要和显卡驱动进行频繁的交流来完成。在Windows NT 4.0之前,GDI和搭配的USER、WIndows管理器都在CSR subsytem进程中,也就是在用户层,因此图形操作会需要频繁地在用户态和核心态之间切换,引起很多的系统开销。而在Windows NT 4.0中,只有数量相对较少的GDI API调用会导致用户态和核心态之间切换,因此图形性能得到了很明显的改进。如PowerPoint的性能就提升了15%-20%。在“便宜”的高端工作站上,Windows NT 4.0开始和Unix竞争。

Microsoft Windows NT Server 4.0,1996年
1996年6月29日,Windows NT 4.0正式发布,它看起来和Windows 95很像,同样集成了DirectX 2.0,并增加了许多服务应用程序,如以后越来越重要的微软Web服务器:IIS (Internet Information Services,因特网信息服务) 工具。

Microsoft Windows NT Workstation 4.0,1996年


Windows NT 4.0 & IE 2.0
在Windows 95和Windows NT 4.0各自取得成功之后,微软开始考虑两条产品线融合的问题,这个要首先解决驱动的问题:Windows 9x系列使用的是VxD驱动模型,而Windows NT使用的是独特的Windows Driver Model,或WDM,在更早的技术文档中也曾用过Win32 Driver Model这个名字。
1998年6月25日,微软推出了Windows 95的接班人Windows 98,它开始支持WDM驱动模型。Windows 98原开发代号为 "Memphis" (孟菲斯),版本号是4.10.1998。Windows 98开始集成了Internet Explorer(IE4.0)并因此惹上了官司……Windows 98还开始集成快速启动栏(Quick Launch Bar)作为重要的界面元素,总的来说,Windows 98较Windows 95方便易用,并且增加了大量驱动程序并对系统代码进行了大量的完善,随后1999年6月10日发行的Windows 98 SE (Second Edition,第二版)更是号称最稳定的Windows 9x系统。笔者也使用了好长一段时间。
Microsoft Windows 98,1998年
Windows 98 SE包括了一系列的更新,如Internet Explorer 5、Windows NetMeeting 3、Internet连接共享、对DVD-ROM和对USB的支持,以及DirectX 6.1 API,使得Windows系统成为了绝佳的游戏平台。
其时流行多媒体,1997年,Intel推出MMX技术提升了PC的多媒体体验

Windows 98界面
在Windows 98 SE发布、推出的时候,长寿的Windows NT 4.0仍然在不停进行Service Pack升级之中,同时Windows NT 5.0也已经在进行开发(笔者使用过其测试版),不过由于一些非技术性的因素,向Windows NT统一的大业仍未能完成,因此在2000年,微软分别放出了两个操作系统系列的继任版,Windows 98 SE的升级版本就是Windows Millennium Edition(Windows千禧版),简称Windows Me,发行日期是2000年9月14日,从4.9的系统版本号可以看出Windows 9x内核的命运。
和Windows 9x系列一样,Windows Me的定位是家庭娱乐,主要升级了一些常用软件如Internet Explorer 5.5和Windows Media Player 7.0,同时还加入了System Restore系统还原技术。Windows Me还有一个比较重要的变化是去掉了实模式的DOS。从Windows 95开始实际上Windows 9x系列就已经不再需要DOS——只不过在启动的时候用到,并且通过提供实模式DOS来提供更好的兼容性。Windows Me彻底摆脱了这个包袱,不过实际上……实模式DOS在维护时仍然很重要,因此这时出现了将实模式DOS加回去的方法。
Microsoft Windows Millennium Edition,2000年
在Windows Me发布的稍后,Windows NT 5.0版本发布了,不过其名字被改为了Windows 2000,从原定的Windows NT 5.0统一操作系统产品线可以看出它的重要性。Windows 2000于2000年2月17日正式推出,针对不同的用户群体共发布了4个版本: Professional(专业版)、Server(服务器版)、Advanced Server(高级服务器版)以及Datacenter Server(数据中心服务器版)。其中,专业版其实定位和以前的工作站(Workstation)版本很接近,同时更靠近桌面应用,Windows 2000在Alpha测试时曾经还有一个代号Neptune的家庭版本,不过最终没有推出。Windows 2000带来了很多的新特性,如新的NTFS 5.0文件系统、EFS文件加密系统、分布式文件系统、Active Directory活动目录等。重要的系统管理工具MMC管理控制台也被引入。Direct X也被重写以适应Windows NT内核,从而使Windows 2000也成为了一个不错的游戏平台。

Microsoft Windows 2000,2000年
在Windows Me算是还过得去的终结之后,Windows 9x单内核设计寿终,Windows NT微内核架构终于统一了微软的操作系统设计,并带来了家用版NT架构Windows:Windows XP,这是迄今为止最畅销的Windows操作系统。
Microsoft Windows XP Professional,2001年
Windows XP于2001年8月24日正式发布,XP的意思是eXPerience(体验)的意思。Windows XP的版本号是5.1(Windows NT 5.1),内核没什么大变动,不过界面比起Windows 2000来有了很大的变化,更适合家庭用户,Windows XP继承并升级了Windows Me中的很多组件,如Media Player、Movie Maker、Windows Messenger、帮助中心、系统还原等等,以及IE的升级版本IE 6.0和一个简单的Windows防火墙。在集中精力到同一个架构之后,微软以及IHV们有足够的精力为系统编写硬件驱动,因此Windows XP发布时集成了大量的硬件驱动程序,使得其兼容性有了明显的进步。

Windows XP SP2,启动界面上Windows XP下方的字样被去掉了
Windows XP是一个长命的版本,直到2009年的现在Windows 7出现之后仍然有不少用户坚持使用XP。XP最初只发行了两个版本:Professional专业版和Home Edition家庭版,后来又相继推出了Media Center Edition媒体中心版、Tablet PC Edition平板电脑版、Embedded嵌入版、Starter Edition入门版以及为低端PC定制的Fundamentals for Legacy PCs精简版等。此外,为了配合Intel Itanium 64位处理器,Windows XP还有一个特别的64-Bit Edition,专门为Itanium安腾平台设计。
Microsoft Windows XP 64-Bit Edition,2003年
虽然统一使用了同样的Windows NT架构,并把工作站版本的定位拿了过去,不过服务器版本仍然是一个单独的代码树,并最终形成了一个新的版本:Windows Server 2003。尽管是对应Windows XP的服务端版本(Windows XP被定位成一个Client客户端版本),它们的区别还是挺大的。 Windows Server 2003早期开发代号为Whistler Server,后来曾一度被改名为Windows .NET Server(为了符合.NET Framework、Visual Studio .Net等一系列计划)。

Microsoft Windows Server 2003,2003年
在2005年,AMD推出了AMD64技术,走在了Intel的前面。为了配合硬件的发展,Windows XP Professional x64 Edition版本出现了,x64专门指非IA64架构的AMD64和EM64T技术,实际上,这个系统就是Windows Server 2003 x64 SP1,它们基于相同的代码树,因为推出的时候Windows Server 2003出了SP1,因此Windows XP Professional x64 Edition推出的时候就自带了SP1。没有不带SP的版本。顺便说一下,基于和Windows Server 2003 x64相同的稳定性,而能支持更多的桌面应用程序特别是游戏,因此笔者使用了一段时间用来当游戏/工作两用机。

Microsoft Windows XP Professional x64 Edition,2005年;图上的测试版本日期是2004年
Windows Vista的开发代号为Longhorn,原定于2003年发布,然而由于微软雄心勃勃的改进计划,把越来越多的功能加入到了这个系统中,导致发布一拖再拖。为了能和Windows XP/Windows Server 2003相隔太久,最终微软砍掉了不少功能,并于2005年11月30日发布给商业用户,于2006年1月30日发布给零售用户。Windows Vista最大的改进是在其界面,Windows Aero GUI集成了一个DWM桌面窗口管理器并改变了显示驱动的模型:从XPDM变成了WDDM。关于这个模型架构的变化可以察看这里:
全新的设计让Windows Vista的界面看起来更加漂亮,不过代价是这个全新而不成熟的设计让系统性能比较明显地降低,因此Vista并没有受到广泛的好评,而没有流行起来。
Vista相比XP,内核进行了更新以支持IO优先级和内存优先级,以及ReadyBoost等功能。在配置比较好的机器上,Vista表现不错,因此笔者从Vista SP1开始就转向了Vista x64 SP1。由于此时一些用户的内存配置已经达到或者超过了4GB,64位Vista比起32位版本来反而要更流行。

Microsoft Windows Vista,2005年
Windows Vista包括了很多新的功能, 包括先进的搜索和信息组织方式(不过笔者很讨厌Vista的搜索功能)、.Net Framework 3.0 、侧边栏Windows Sidebar、Windows Defender反间谍软件、KPG内核保护、令人诟病的UAC用户帐户控制功能和可以充分利用内存的ReadyBoost技术,以及各种软件的升级版本:Internet Explorer 7.0和Windows Media Player 11.0等,由于推出比Vista略迟,因此Windows Server 2008一出现就集成了SP1包。Windows Server 2008还首次提供了Hyper-V的虚拟化技术。
从Windows Vista开始,Windows的桌面版和服务器版使用的代码树开始融合——这样可以减少同时为两个不同的代码树进行维护的消耗。Windows Vista对应的服务器版本被命名为Windows Server 2008。一开始的代号为Longhorn Server。Windows Server 2008是一个首次提供了无GUI界面的Windows产品,这种界面叫做Server Core。尽管这个形式和Windows的名字有些不对头,不过为了尽量提供更好的服务器性能,这是可以理解的。默认的Windows Server 2008 GUI安装还仅用了Vista上具有的Aero效果。

Microsoft Windows Server 2008,2008年
Vista与其上一代XP相比,提供了非常大的改进,然而一方面这些改进过于巨大,用户乃至相应软件厂商(如,DirectX 10应用开发商)一时无法完全接受,另一方面,由于特性的不完全具备,Vista的表现没有想象之中的那么好。到了Windows 7,包括操作系统本身、软件厂商和用户都已经做好了准备,因此反响比Vista更好也就不难理解了。
Windows 7它其实是Windows Vista的改进版,从内部版本号6.1可以看出。Windows 7在Windows Vista的基础上进行了大量的完善工作,也加入了不少新特性。
因为新的图形架构,Windows 7的系统性性能有了明显的提升,根据我们的测试,提升达到了10%。我们已经有相当多的文章来说明这个问题:
比Vista更完善 Windows 7图形架构解析
性能提升10% Vista/7系统性能对比测试
和Windows 7同时推出的服务器版本则名字没有太大的变化:因为大部分主要的变化都集中在图形界面上了,因此新的服务器版本就简单地称为Windows Server 2008 R2,和之前版本不同的是,Windows Server 2008 R2只有64位的版本。
![]() |
Austin Liu 刘恒辉
Project Manager and Software Designer E-Mail:lzhdim@163.com Blog:https://lzhdim.cnblogs.com 欢迎收藏和转载此博客中的博文,但是请注明出处,给笔者一个与大家交流的空间。谢谢大家。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了