观止--微软创建NT的夺命狂奔

观止--微软创建NT的夺命狂奔
周末读了一本小众的书--观止,讲的是windows NT的开发过程。
这个项目历时5年,从1988-1993,是一个典型的软件项目,延期很久,出来的是一个艺术品,奠定了windows的基础。

showstopper是什么意思?
英文意思观看戏剧演出,演到精彩处,观众拍手叫绝,演出被喝彩打断。
在计算机领域,指造成停机的A类故障。

故事主角戴夫.卡特勒(Dave Culter)
1942年生人,目前快80了还在微软编程,宝刀不老。他非科班出身,也非名校毕业,英雄不问出处。在杜邦公司研究化学数据,需要计算机,上了个培训班,然后就在公司编程处理化学数据,不想爱上了编程,进入DEC小型机公司,顺风顺水,1975年编写了著名VAX系统上的操作系统VMS,一战成名。后来为了远离公司政治,在西海岸的西雅图(正是微软总部所在地)成了了研究所,做新一代计算机,后prism项目被公司取消,一气之下离开DEC。正赶上微软在招揽人才,盖茨亲自出马,有了经典对话:
盖茨:你觉得微软的DOS如何
卡特勒:那就是个玩具,不是真正的操作系统
盖茨:好,请你来为微软设计真正的操作系统。
1)管理风格:缺乏耐性、火爆脾气,经常攻击别人,说“我靠压力生存”。幸好有个助手皮亚佐利,脾气随和,善解人意。两人红脸白脸的管理方式相得益彰。
皮亚佐利在1996年卡特勒厌倦管理转技术后,领导了windows2000的开发。
2)家庭:结婚两次,发誓不再跌倒第三次,只有一个女友,不再结婚。长期专注工作。和父母关系差,父亲去世也没有参加葬礼。当然父亲小时候也没有给过他关心,经常酗酒打老婆。
3)匈牙利表示法
微软早期员工西蒙尼(就是自己花钱上太空的那个人)的变量命名法。卡特勒的评价:是我见过的最愚蠢的东西。
4)每行代码都加注释。
5)对优化的看法:总是要把事情做对,让其可靠,然后才顾及性能。一边向前走一边逐渐加入修饰和润色。NT的问题没有哪个是时间无法治愈的。性能不好是新程序的通病。软件历史证明这一点,从IBM的360到UNIX,再到Windows,都是在不成熟状态就发布了,然后逐步演进并赢得广泛认可。
6)对UNIX的看法:是个由一帮博士设计的垃圾操作系统。整个系统背后的设计思想从来没有统一过,而且显露在外面。
7)人数:只想管理内核团队,对图形、网络、测试团队不想管,后来为提高效率,不得不管。最终人数发展到800人,就卸任去做技术了。
8)娱乐:不吃午饭,去打一小时壁球。其他时间全部围绕NT展开。不过里程碑后会放假滑雪。
9)C++:盖茨为图形组引入C++,卡特勒反对,但图形组的人赞同,最终果然拖慢了性能,程序也变大。看来做操作系统的人都不太喜欢c++, linus在写git时有人问他为何不用C++,他回复C++是shit.

比尔.盖茨
1955年生人,富裕家庭。从小在湖畔中学(条件好的私立学校)学习了计算机。1974年在电子杂志上发现了牛郎星个人电脑,与艾伦看到了机会,给这个电脑做了basic程序,微软起步。 同时起步的还有苹果,沃兹尼亚克和乔布斯也看到了个人电脑的机会,不过这个组合更厉害,看不上牛郎星,沃兹直接自己设计了硬件,然后也是加上basic语言,软硬件一人包了,足见其天才。苹果很快崛起。
1979年IBM看着PC机被苹果做的很好,也找了一个边缘部门做PC,这个部门很懒,把核心CPU包给了intel,操作系统还没有着落,盖茨看到了机会,很快在西雅图花5万买了DOS系统,通过老妈关系作为了IBMPC的操作系统,并且只买授权,这个聪明做法使微软八十年代随着PC流行而发了笔大财。
盖茨在90年代可谓所向披靡,IT界头把交椅,可称工业界的拿破仑,也顺利成为首富。2000后,逐步转去做慈善,公司交给了鲍尔默,这家伙差点把公司高破产,幸亏微软底子厚。换上了那亚拉,刚上云计算这波浪潮,才再次崛起,现在发展平稳。

1988DEC部落来到微软
卡特勒不是一个人来的,而是带来了一个团队,包括硬件工程师。他在团队中威信极高,大家愿意追随。
1)进入微软,要求签署竞业协议,即离开微软后1年不得从事类似工作,DEC的人不干,卡特勒直接让HR删除了这一条。
2)微软不做硬件,但卡特勒坚持必须带上DEC硬件的人,盖茨不得不妥协,招收硬件人员。

技术思路整理
不急于开工,先熟悉PC机,同时整理技术思路。整理需求。然后亲自操刀,写出顶层抽象代码,然后把代码分成几十个组,每组代码附上详细要求。然后再分工。 这个办法挺好。

NT几大模块
1)内核:卡特勒的DEC部落主力完成
2)界面部分:微软图形方面专家完成,这部分管理比较松散
3)网络部分:也是一个重要特色,当时novel的netware在局域网上用的比较多,记得同轴电缆组网非常流行,上面运行foxbase数据库。微软这方面比较差,所以增加网络功能非常迫切
4)安全:多用户鉴权是NT引入的。

内存问题
开始预测需要8M内存,盖茨认为太高(记得他说个一句话,好像是计算机有1M内存就足够了)。说明即使是行业领袖,对未来理解也透彻,现在手机都8G内存。最终1993年,NT最少需要16M内存,盖茨不得不妥协。

优化问题
不过早优化,卡特勒的哲学是先跑起来,结构合理。然后再优化。不过NT最后几个月才优化,感觉还是晚了一些。
优化的关键人物,传奇程序员Michael Abrash,汇编专家,图形界面专家。我读过他的黑皮书,真是一位高手。现在研究VR。被同事誉为:地球表面无可争议自强大的intel程序员。
卡特勒也以身作则,亲自写了一部分汇编代码,给优化工作做出了榜样。Michael Abrash看了卡特勒的代码后说:我遇到的最好的汇编代码编写高手。
NTFS文件系统慢的问题:NTFS比DOS好的是有文件备份,不宜损坏,DOS文件损坏我就遇到过,一个好玩的游戏,因为电脑断电,文件被破坏,不能用了。我记得诺顿公司当时有个修复工具,但有时也休不了。言归正传,NTFS做了一个定时备份的机制,但写程序的家伙为了安全,备份时不能读写,这样正常文件操作会很慢,这个问题定位了很久。靠其他团队的同事发现了问题。

微内核和宏内核
1)nt采用的是微内核,其他应用和内容采用client-server模式,这种模式最大的麻烦是互相调用多,性能是个问题,盖茨多次担心此问题,卡特勒很坚持先完成功能才优化,并反复说明肯定可以优化到满意。最终效果看,保持了client-server结构,性能比dos 稍微差点,达到了要求。
2)微内核的学院派教授Rick Rashid,也是著名的Mach的作者,微软有钱给他弄了个研究院,也来给nt提意见,内存占用方面提出了分页技术。卡特勒对这种意见很反感,但最终在内核中加入了分页技术,减少了内存占用。

重视API
也就是微软最重要的win32 API,NT兼容windows,把API全部移植过来,连鲍尔默都参加API检查会议。

几个很难定位的BUG
1)一个写硬盘问题
intel出的RISC芯片i860, 卡特勒在上面编码,NT存盘功能总是搞不定,代码反复检查也无济于事,后来换了新的硬盘驱动器,也不行。换了电缆仍旧不行。最终给硬件工程师索特聊到这个事情,索特想起手册里面的内容,查阅发现手册里藏着一个不起眼的线索,索特忘记安装电路的一个次要零件。卡特勒代码一致是正确的。 i860最终因为问题太多被淘汰。
2)一个网络问题
某款康柏电脑,网元发送数据,总是每页开头多了一个字符串0x3fffffff fffff7。硬件反馈没有问题,让软件这边查。最后都差不错问题,两边打赌谁输了请吃饭。几周后,adaptec网卡的一个工程师发来勘误表,他们公司的设备在康柏电脑上,用来控制输入输出的部分有缺陷,与问题刚好一样。这样格拉斯很愤怒。以为他多次与adaptecg工程师沟通,有一次甚至十分详细的描述了这个问题,而对方很震惊的告诉他从来没有听说过。
所以说外部产品有时不靠谱。
3)发布前的最后一个观止BUG
打印图文混合的文档,pagemaker程序就崩溃了,耗尽了40M内存。分成单页可以打印。也就是说能规避。
因为临近发布,大家想遗留这个故障。但测试猪肝唐尼想继续跟踪,几天没有进展。为啥没有提前发现?唐尼回忆起这个测试的负责人刚离职,去开洗衣店了,所以没有好好测试。以后离职交接要注意啊。
晚上找到程序员定位,最终发现是两个bug,图形程序分配内存不对,pagemaker计算字体内存也不对。当时有点纠结,改图形程序是否会引起其他应用程序问题?最终还是改了。又半夜找人来测试。pagemaker是第三方软件,就不太好弄了,半夜打电话果然没有找打人。开始想退给第三方不管了,后来觉得还是做一下兼容吧,于是NT针对pagemaker错误做了兼容,问题圆满结束。赶上了压盘发布。有点惊心动魄。

吃自己的狗粮
最初大家用OS2上编码,测试用NT,1991年2月开始卡特勒让用NT,吃狗粮不可避免遇到NT的缺陷,使程序员有紧迫感去提高伙食水平,尽快修复错误的代码,从开始就编写耐用的程序。
三个阶段:首先不包括图形的NT,然后加上图形,最后是网络。
人力储备:需要一个万金油人才,什么都懂。拉科夫斯基就是这种人才,当出来问题,他会毫不犹豫地寻找原因,然后拉人解决。

死亡行军
采用每日构造,91年就开始每日构造,确实很早。微软在软件项目管理方面,经验丰富。
里程碑临近时,每天举行会议,包括周六和周日。

收尾
最后阶段,人心浮动,卡特勒让大家做好收尾,并说以后回忆这段经历,肯定是人生的成就。记住这美好的旧日时光。
这让我想起了高考。

花絮-糟糕的IBM
IBM那时已经很官僚,戴蒙得回忆的一个事情:OS2程序崩溃了,IBM程序员对着屏幕研究了一会儿说:喔,好严重的问题,还好不是出在我的代码上。然后他重启电脑继续工作,甚至从来没有报告这个问题。
怪不得90年代初IBM差点完蛋,最后不得不请卖饼干的郭士特纳来拯救,谁说大象不会跳舞。跳到现在又不太行了。老巴都看错了,买了IBM股票,最终以亏损卖出(待查)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微软创建NT操作系统的历史可谓观止NT操作系统是微软自1980年代中期开始开发的,经过多年的努力和完善,最终在1993年发布了第一个正式版本。NT操作系统以其稳定、高效和安全的特性,成为了微软在企业领域最重要的操作系统之一。 NT操作系统的成功给了微软一个稳定发展的基础,也推动了微软在未来的夺命狂奔夺命狂奔是指在竞争激烈的软件市场上,为了保持领先地位而不断开发和发布新产品,微软通过不断创新和改进赢得了市场份额。 微软未来的夺命狂奔可以从它近年来推出的产品和服务中看出端倪。微软积极推广云计算服务Azure,这是一个强大的云平台,为企业提供了灵活、安全和可靠的解决方案。此外,微软还致力于发展人工智能技术,如语音识别、自然语言处理和机器学习等。这些创新不仅扩大了微软在企业市场的影响力,也增加了其全球用户的多样化需求。 微软夺命狂奔中所面临的挑战也不容忽视。随着移动设备的普及,微软需要实现与iOS和Android等主流操作系统的兼容性,以保持在移动市场的竞争力。此外,随着开源软件的兴起,微软也需要适应这一趋势,积极参与开源社区,推动开源软件的发展。 总之,微软创建NT操作系统和未来的夺命狂奔展现了微软在软件行业的实力和潜力。通过持续的创新和不断进化,微软将继续在企业和消费者市场中扮演重要角色。 ### 回答2: 《观止微软创建NT和未来的夺命狂奔》是一部以微软公司创造Windows NT操作系统和未来发展的故事为背景的电影。这个故事主要讲述了微软在当时面临的技术挑战、市场竞争和公司发展的困境,并展现了他们的不断努力和创新精神。 微软创建Windows NT操作系统的过程是一段充满曲折和艰辛的旅程。在那个时代,微软面对着Unix操作系统的垄断地位和其它竞争对手的激烈竞争。为了突破操作系统的技术限制和摆脱对其他公司的依赖,微软决定自己开发一款全新的操作系统。于是,他们成立了一个专门的团队,经过不断的研发和测试,最终诞生了Windows NT操作系统。 《观止微软创建NT和未来的夺命狂奔》还聚焦于微软的未来发展。随着Windows NT的问世,微软成功地抓住了市场机遇,并成为全球最大的软件公司之一。电影展示了微软团队在公司内部的斗争和外部环境的变化。他们不断推出更新版本的Windows操作系统,提供更多的功能和更好的用户体验,以保持竞争优势。 此外,电影也揭示了微软面临的挑战和反思。他们在垄断调查和法律纷争中面临着巨大压力,并被要求在竞争和创新方面采取更加公平的做法。微软也通过收购和战略合作来扩大业务领域,尝试进军互联网和移动领域。然而,他们也面临着来自谷歌等公司的新兴竞争对手的挑战。 《观止微软创建NT和未来的夺命狂奔》通过展示微软在创造和发展Windows NT操作系统过程中的挑战和努力,向我们展示了一个科技巨头如何在激烈的竞争中不断进步和寻求发展机遇。这部电影激励着观众们,鼓舞他们在面对困难和竞争时坚持创新和努力,并为未来的夺命狂奔奠定基础。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值