ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-18 13:05:11  阅读:245  来源: 互联网

标签:IBM 观止 微软 -- 盖茨 内存 卡特 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股票,最终以亏损卖出(待查)

标签:IBM,观止,微软,--,盖茨,内存,卡特,NT
来源: https://blog.csdn.net/hb_zxl/article/details/112773956

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有