找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
.COM/.NET/.ORG 国际域名注册全功能虚拟主机/免备案虚拟主机
查看: 2133|回复: 8

[分享]Windows Server 2003开发历程揭密(上)

[复制链接]

281

主题

3228

回帖

55万

积分

管理员

积分
551869
发表于 2003-8-5 15:59:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Windows Server 2003开发历程揭密

作者/Paul Thurrott译者/蒋世滨

  本文节选自《Windows & .NET Magazine国际中文版》

  Mark Lucovsky、David Thompson,微软Windows Server开发梦之队的资深成员,见证了十五年微软Windows Server艰辛而辉煌的历程:NT团队组建,抛弃IBM的OS/2,与Intel的紧密结合,NT三度更名称雄天下,充满传奇色彩的Windows Server 2003开发。本文将向您全方位展示这些鲜为人知的Windows Server故事。

  最近,我与Janet Robbins和Mike Otey一起游览了微软公司,我们有幸面见了在Windows历史中最著名的两个人物:Mark Lucovsky和David Thompson。在Windows NT的早期,Lucovsky和Thompson在这个重要软件项目的开发中扮演着关键角色。Mark Lucovsky是著名的工程师,也是Windows Server的设计师,他与DEC公司的前雇员、NT设计师Dave Cutler一起加入微软公司。他非凡的能力首先体现在如何使NT中数百成千的组件协同工作在一起。对技术的敏锐嗅觉,以及为将NT从基于OS/2的系统转变成运行32位Windows程序的系统所做的早期努力,使Lucovsky声名远扬。David Thompson是Windows服务器事业部副总裁,他于1990年加入微软,他当时领导一个LAN Manager项目的高级开发组,后来又加入了NT团队,Thompson指导NT网络子系统的开发,确保该产品可以与其他非微软产品协同工作。

  微软组建NT梦之队

  “起初,我们将NT的运行目标定位于Intel i860 (代码号为N-Ten),一个令人生厌的RISC处理器。由于我们没有一台i860机器,我们不得不使用i860模拟器。这就是我们称之为NT的原因,因为它工作在‘N-Ten’上”

  ——Mark Lucovsky

  微软著名工程师、Windows Server设计师

  “我们在1988年11月作为一个小组一起到来。”Lucovsky告诉我们,并强调NT团队的第一个任务是获取一台开发机器,后来是25MHz的386 PC机,具有110 MB硬盘和13 MB内存。“它们价高质次。”他笑着说。在头两周里,除了用Word编写原始设计文档外,没有什么重大的开发活动。

  最后,到了开始写代码的时候了。“大约在1988年12月中旬,我们核查了最初的代码,”Lucovsky说道,“到1989年1月份时,它只具有一个在Intel i860模拟器上引导的非常基本的系统。”实际上,这是NT名称的真正来由,据Lucovsky透露,“New Technology”这个说法是在该产品取得市场成功后加上去的。“起初,我们将NT的运行目标定位于Intel i860 (代码号为N-Ten),一个令人生厌的RISC处理器。由于我们没有一台i860机器,我们不得不使用i860模拟器。这就是我们称之为NT的原因,因为它工作在‘N-Ten’上。”

  1989年4月,新指定的NT团队有了在模拟器上运行的基本系统内核。“我们5个来自DEC的家伙和来自微软的Steve Wood一起开始工作,”Lucovsky说,“我们这个小组保持了很长时间,经过一个夏季,我们开始考虑:创建一个操作系统究竟有多难?我们制定了一个用18个月完成NT的计划。但是我们忘记了一些重要的因素,比如用户模式、网络等等。”

  1989年之后,NT小组开始扩充。他们增加了正式的网络团队,和一个扩充的独立安全性团队,他们先前负责文件系统和本地化开发。“在第一年中我们增加到50个人,”Lucovsky说,“在这一年中,我们最终得到了第一台i860原型机,因此我们可以替换模拟器。我们开始查看上下文切换次数,试图找到一个方法让它工作得更好。我们几乎立即就发现i860将永远无法工作。因此,我们开始着眼于MIPS体系,另一种RISC设计。”

  1989年12月,NT团队决定放弃i860并用MIPS R3000芯片替换。“我们在真实硬件上无休止地引导NT,这样持续了两三个月,”Lucovsky告诉我们,“当我们移植到MIPS上之后,我们得到了回报,我们将NT设计为可方便移植的,它几乎立即就开始工作了。这种改变没有带来太多的痛苦。”

  从这时起,NT团队迅速扩大,来自微软不同阵营的人现在都加入进来。当一种使用图形的新风格被创立后,图形团队迅速增长。他们也开始将NT转向当时的主流PC处理器Intel i386,Lucovsky解释了他们最初没有定位到i386的原因。“我们暂时避开386是为了避免局限于该体系,我们不想采用一个不可移植的构想。”他说如果在一开始就定位于Intel系列芯片,则他们在早期就可以有一个较高性能的系统,但是那样就会长久地伤害NT,并且将很难跟上新体系结构的发展,比如最近基于64位Itanium芯片的Windows Server 2003。

  NT变成Windows NT

  “我们的核心体系非常坚固,所以我们才能使NT从适应1990年的386-25,一直发展到今天适应嵌入式设备、64路64位多处理器的机器和以1000美元为单位的刀片式服务器。”

  ——David Thompson

  微软副总裁、Windows Server产品组

  “在1990年的春天,我们的MIPS版本继续曲折前进,同时我们开始狂热地开发386的版本,”Lucovs说道,“这是另一个巨大突破。”那一年5月,微软发布了Windows 3.0,立即受到了全世界的关注。Windows由于其基于PC的图形功能而取得了非凡的成功。“我们开始研究Windows 3.0并且自问‘如果用32位的Windows版本替换OS/2将会怎样呢?’”Lucovsky又甩出一个更深层次的问题:“Steve Wood、Scott Ludwig、一个图形工程师组的人以及我本人,我们4个家伙研究了16位的Windows API,并研究如何将其延伸到32位。我们花了一个月完成了一半的API集合,然后把它交给100位设计评估者,看看他们的想法。”

  新的API最终命名为Win32,关键的一点是,尽管它是一个新的API,但是它看上去和运行起来都与16位Windows API相似,这使得开发人员可以很容易地将程序移植到新系统上。“我们使得16位程序可以非常容易地移植到NT上,”Lucovsky说,“并且这些程序将得益于NT的独特功能,比如更大的寻址空间。我们也增加了许多16位版本中所没有的API。我们增加了主流的新功能,使它成为一个完整的操作系统API,但我们使用了Windows程序员所熟悉的风格。”

  这在微软内部立即引起了反响。“当他们看到它是如此易用时,立刻就喜欢上了它,”Lucovsky说,“它基于Windows而不是OS/2,它使用了一种完全不同的编程模式。”然而,替换OS/2产品,将NT变成一个32位的Windows版本,带来了新的课题,其中并不完全是技术问题。微软不得不获取ISV和OEM审批,当然也要将这个改变通知IBM。“我们对IBM做了一个ISV预览,足足有20多页,然后我们说:‘看,这就是我们要做的。’开始他们以为Win32不过是OS/2的一个迷人绰号,可是接下来你可以看看他们的脸色:‘等一等,这不是OS/2!’”

  对OS/2的抛弃永远地伤害了两家公司的感情。“但是我们执行了审批,并且开始了进程,”Lucovsky说道,“因此我们选择了Win32运行NT,替代了OS/2子系统。”他说,那一刻,这个产品变成了Windows NT。

  NT的模块式结构为这个改变提供了便利。“应该感谢我们的微内核体系,它减弱了内核与应用程序环境的关联程度,比如POSIX和Win32。我们不必改变内核,也不必从头开始编程,”Lucovsky告诉我们,“日程计划的内容不必更改,我们在两周的时间里运行命令行应用程序。这时是1990年9月。”

  Thompson详细阐述了NT基础的重要性:“我们的核心体系非常坚固,所以我们才能使NT从适应1990年的386-25,一直发展到今天适应嵌入式设备、64路64位多处理器的机器和以1000美元为单位的刀片式服务器。我们可以为其提供全系列的服务。”

  1990年9月是Windows NT真正的转折点,同时也是Dave Thompson加入NT团队的时间,他先前领导微软的Lanman for OS/2 3.1高级开发团队。“我们经受了转变,”Thompson告诉我们,“我们的队伍从28人增加到300人。我们有了第一个真正的产品计划。”

  NT大事记

  1988年10月31日:David Cutler抵达微软

  1988年11月:NT项目开始运作

  1993年7月27日:Windows NT 3.1发售

  1994年9月21日:Windows NT 3.5发售

  1995年5月30日:Windows NT 3.51发售

  1996年7月31日:Windows NT 4.0发售

  2000年2月17日:Windows 2000发售

  2001年10月25日:Windows XP发售

  2003年4月24日:Windows Server 2003发售

  1993年7月,Windows NT的第一个版本Windows NT 3.1发布了,版本号的命名与当时的16位Windows产品一致。那个版本的NT有桌面和服务器两个版本,并使用域形式的分布式安全机制。从那时起,NT团队开始连续地发布产品,所有的开发都基于相同的底层代码。

  第二个发布版本Windows NT 3.5(代码名为Daytona)在1994年9月投放市场。“Daytona是一个非常有价值的项目,”Thompson说,“我们把焦点放在尺寸和性能上,放在对3.1的功能进行完善上。Daytona有了显著的改进和增强。”Daytona最初的主题是尺寸、性能、压缩以及Netware兼容性。其中的两个想法具有当时的时代特征:1990年以前,双倍压缩是一个热门话题,因为当时硬盘很昂贵;Netware也是当时占优势的网络操作系统。“我们最终停止了压缩项目,”Thompson说,“但是Netware兼容性部分是具有战略意义的。Novell对NT桌面系统是矛盾的,他们不知道自己是否希望创建一个客户端。我们提供了帮助,但是他们保持混乱,并且……我们做出了自己的。它是一个更好的Netware客户端,被用户使用了几年,尽管最后他们也做了一个。这个客户端使NT桌面系统可以成为Netware的客户端,因为Netware当时是市场上的主流服务器系统。否则我们的NT桌面将卖不出去。”

  Daytona也得益于新的编译器技术,它使微软可以压缩代码尺寸,也使NT桌面成为真正的低端系统。“结果是可统计的,”Thompson说。

  Windows NT 3.51是配合Power PC发布的,因为它是围绕Power PC设计的,在3.5版本中没有提供对Power PC的支持。由于IBM经常延迟Power PC芯片组的发布,导致了一个孤立的NT发布。“NT 3.51的发布非常不值,”Thompson说,与对Daytona的评价正相反。“Daytona完成后,为了等待IBM完成Power PC,我们大概用了9个月进行错误修正。但是正因为如此,NT 3.51是非常稳固的,我们的客户喜欢它。”NT 3.51最终于1995年5月开始销售。

  接下来的Windows NT 4.0,开始采用Shell Update Release(SUR),这是另一个得益于NT模块化结构的挑战性任务。“我们希望创建一个使用95外壳的桌面,但是它使用NT技术。”Lucovsky告诉我们,“我们最终迁移了Win32 GUI组件,并使其作为进程内驱动。性能是受影响的一个方面,在一个不同的进程中运行这个API会带来问题。因此将代码迁移到作为运行时的相同上下文,将解决大量问题。我们不必为GDI和USER做死锁检测。它是一个重大工作,但它解决了大量令人头疼的问题。”NT 4.0于1996年7月投放市场,它是NT系列产品的一个分水岭。

  Windows挤掉NT

  接下来的发布中,Windows NT放弃了NT这个名字,成为简单的Windows。Thompson说这个决定来自市场队伍。“一个家伙从Windows市场部调到NT市场部,并且说我们将在所有地方使用Windows这个名字。起初,改变名称令我们所有人都感觉不舒服,因为NT有很好的声誉。但是由于伴随Windows 2000一起推出的可靠性,人们开始谈论究竟Windows 2000比旧的NT要好多少,尽管它们基于相同的体系结构。所以这是一个偶然事件,Windows 2000没有一个代码名是因为Jim Allchin不喜欢。”Thompson说。

  自从完成Windows 2000之后,Windows队伍所作的最大决定是在Whistler产品中,分别发布客户端和服务器,即现在的Windows XP和Windows Server 2003。“这使得我们将焦点集中于服务器客户,他们现在更多地要求稳固性,”Thompson告诉我们,“桌面软件将按照PC制造者的销售周期同步发售。这与服务器周期不同。”

  David Thompson,微软公司Windows服务器事业部副总裁。1990年加入微软公司,在转入Windows NT项目组之前,领导和负责公司的LAN Manager for OS/2项目。在开发Windows NT期间,Thompson领导的开发团队在NT联网子系统方面作出优异贡献,不仅保证了该产品可以与微软产品协调工作,而且保持了与其他公司产品的兼容性。

  Mark Lucovsky,微软公司著名软件工程师和服务器构架设计师。1988年与Dave Cutler一起加入微软公司。他们都是前Digital Equipment Corporation(DEC)公司的杰出软件设计师。Lucovsky凭借在早期将NT从基于OS/2的系统迁移到32位Windows应用程序过程中的杰出贡献和技术敏锐,受到众多工程师的敬佩。

  作者/Paul Thurrott译者/蒋世滨

  本文节选自《Windows & .NET Magazine国际中文版》

  “Windows团队的5000个开发者为Windows Server 2003编写了超过5000万行代码,这是一个艰巨的任务,是已尝试的最大的软件工程任务,没有任何软件项目可与之相比。”

  ——Mark Lucovsky

  NT系列操作系统从Windows NT发展到Windows 2000、XP,到现在的Windows Server 2003,尽管细节部分在戏剧性地改变,但有一个关键元素一直没有改变,这就是build操作。在微软内部,事实上每一天至少有一个Windows产品被编译或生成为可执行代码,开发队伍可以立即对它进行测试。对于Windows Server 2003,这个过程在微软公司的26号大楼中达到了极致,在那里,成排的PC和CD复制机始终处于几个工程师连续监视下。

  “回想早年的日子,我们开始只有6个人,”Mark Lucovsky告诉我们,“现在Windows团队有5000个成员,加上额外的5000合作伙伴,生产了超过5000万行的Windows Server 2003代码。让所有人员遵从统一的领导制造代码是一个巨大的任务。生成他们的工作结果,编译并连接为可执行程序或其他组件,最后组成一个Windows的CD,这个过程持续12到13小时,每一天都在进行。这是曾经尝试过的最大的软件工程任务。没有其他软件项目可与之相比。”几乎在每一天,微软编译所有的东西——全部的5000万行代码,“我们始终在改进开发环境。”Lucovsky强调。

  “当我们开动机器时,我们编译全部的内容,”他说,“我们必须能够在任何时间点再生这个系统。开发者Check-In代码,我们按下按钮并产生系统。我们应该能够在未来3年内,使用不同的工具、编译器以及脚本再生系统。”

  David Thompson详细介绍了这个过程。“关键在于我们整年地生成系统,并从三个方面推进它,”他说,“首先是产品本身,其次是我们设计产品的方法,第三是我们与广大客户的交互途径。产品的进化是完美的,我们现在使用了全新的源码控制(Source code control)系统。我们从已有的技术开始,Mark Lucovsky亲自领导了新系统的开发,我们每天都会生成一个阶段性(Staged)Build,这些阶段性Build将形成最后完整的Build。我们在持续发展的同时维持了稳定性——我们了解我们每天的进度。”

  吃掉它:微软端出狗食

  “有一天我收到了85个Check-In,那是我们当时可以有的最大数量,现在我们每天可以接收1000个以上,这是一个完全不同的比例,尽管现在白板实际上是电子的——基于Web的。”

  ——David Thompson

  Lucovsky回忆了一些往事,第一个NT原型是在他的办公室里生成的,然后他发出一封邮件告诉NT团队,NT Build准备就绪。于是NT团队的50多个人将“吃掉他们自己的狗食”,在他们自己的系统上测试这个Build并进行压力测试。“我们过去只是围绕这个Build工作并写下我们发现的问题,”Lucovsky说,“这就是为什么它是pre-NT 3.51,现在我们有7个Build实验室。Dave Thompson有自己的Build实验室,覆盖1200个人。主要的Build实验室进行官方Build,它每天进出上千人。贯穿大学的主干服务器自动地将通知传送到各个地点。”

[本贴已被 网路游侠 于 2003-8-5 16:00:50 修改过][/COLOR][/ALIGN]
回复

使用道具 举报

204

主题

642

回帖

16万

积分

超级版主

积分
165605
发表于 2003-8-6 18:56:11 | 显示全部楼层
网络游侠支持你当这里的斑竹[emb6]
http://wqnz.blog.sohu.com/

281

主题

3228

回帖

55万

积分

管理员

积分
551869
 楼主| 发表于 2003-8-6 22:09:33 | 显示全部楼层
呵呵 [emb20][emb21]
网路游侠 www.youxia.org

33

主题

203

回帖

4503

积分

论坛元老

积分
4503
发表于 2003-8-8 10:33:06 | 显示全部楼层
[emb6]
再长的路也有尽头,千万不要回头,再快乐的心都有烦恼,千万不要在意,请相信,野草遮不住太阳的光芒,困难挡不住勇敢者的脚步。 我这个男孩崇尚自然纯朴的生活。喜欢聆听约翰·斯特劳斯的圆舞曲;喜欢探讨梵高画中的精神世界;喜欢阅读柯南道尔笔下的福尔摩斯;喜欢研究中国上下五千年历史和古希腊文化;喜欢享受柏拉图式的精神恋爱;喜欢捕捉大自然的规律。向往去神农架探险,到罗马度假。

3

主题

54

回帖

3140

积分

论坛元老

积分
3140
发表于 2003-8-10 18:56:23 | 显示全部楼层
呵呵!!微软不倒,我们才有饭吃呀!!
希望我可以终结她一辈子的孤单!

281

主题

3228

回帖

55万

积分

管理员

积分
551869
 楼主| 发表于 2003-8-10 21:37:26 | 显示全部楼层
MCSE菜鸟王的版主 呵呵 多帮版主吧 活跃一下这里
网路游侠 www.youxia.org

77

主题

701

回帖

1万

积分

论坛元老

积分
16048
发表于 2003-8-16 12:28:49 | 显示全部楼层
[emb21][emb6]

4

主题

98

回帖

4861

积分

论坛元老

积分
4861
发表于 2003-8-16 13:27:00 | 显示全部楼层
[emb9][emb7]
鱼说:你看不见我的眼泪,因为我在水中 水说:我能感觉到你的眼泪,因为你在我心中!偏偏喜歡妳!! 愛是一种感受即使痛苦也会觉得幸福! 我欲与君相知,长命无绝衰。山无棱,江水为竭。冬雷阵阵,夏雨雪。天地合,乃敢与君绝。  人一定要靠自己! 因爱而恨,爱之深切,恨之浓烈,人嘛,爱了,恨了,说了,做了,又如何??不过是一夜未眠,不过是一夜泪。恨的远比爱的轻,伤的远比爱的重。

0

主题

8

回帖

0

积分

限制会员

积分
0
发表于 2003-8-18 17:43:37 | 显示全部楼层
[emb25]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|西京校友网 ( 陕ICP备11003551号-5 )

GMT+8, 2025-5-6 17:38 , Processed in 0.022523 second(s), 7 queries , MemCache On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表