![ca9d4ef6b1092035cb0479e51af0bd06.png](https://i-blog.csdnimg.cn/blog_migrate/27da239e0c8a45d2454cffd9ecbc9408.jpeg)
接上篇
王知:zhuanlan.zhihu.com拯救Windows
故事要从微软最成功的一次收购说起。在OS/2设计早期,IBM要求加入TopView支持,但却不肯直接提供文档,要微软拿技术换。Ballmer发现微软内部没人懂TopView,于是飞到加州收购了一家叫Dynamical Systems Research(DSR)的小公司。
DSR是由一群普林斯顿大学物理学家创建的软件公司。80年代初,Nathan Myhrvold、Chuck Whitmer二人对混沌理论发生兴趣,开始研究起动力系统(Dynamical Systems)。研究需要进行大量的数值计算,于是他们便鼓捣起计算机来,自己动手写个操作系统,取名叫Mondrian。Mondrian是TopView的克隆,运行在DOS上面,支持Preemptive Multitasking。不同之处在于Mondrian小巧玲珑,TopView跑起来需要400K的内存,而Mondrian只需64K,跑起来比那个谁还快。IBM数以百计的软件工程师都办不成的事情,被区区不足十人的DSR做到了。
Ballmer花一百五十万美元买下DSR不过数周,便接到通知,IBM决定放弃TopView,心中有如一万匹草泥马奔过。可是这笔交易不亏,微软收购得来最值钱的不是软件,而是人才。
David Weise与Myhrvold、Whitmer都是普林斯顿同学,Weise做分子生物物理,Myhrvold做量子引力,Whitmer做量子场论。他们三人再加上Myhrvold弟弟Cameron,一起创办了DSR。
![82a7b87be9f16f4d5331147da15fd35d.png](https://i-blog.csdnimg.cn/blog_migrate/84b8a7259fd51a68f8791e84bc413d63.jpeg)
Weise一开始跟大部队在OS/2组,但是他厌倦IBM繁文琐节,便申请调回Windows组。Windows多好啊,没有最后期限,没有压力,绝对没有前景,想做啥做啥。
Weise想让Windows运行在保护模式,他的工作本质上与当时流行的DOS Extender一致。DOS Extender从某种程度上算是一个迷你操作系统,目标是让DOS应用跑在保护模式。当应用需要调用DOS或BIOS时,Extender截住指令并加以分析,然后转到实模式来执行,执行完毕后再切入保护模式,把结果翻译返还给应用。软件公司Phar Lap可能最早发明了DOS Extender,并发展成VCPI规范。VCPI必须运行在ring 0,无法与其他操作系统共存,Weise得自己做一个更好的。他需要一个人的帮助。
Murray Sargent III是个激光物理学家,1967年从耶鲁大学获得博士学位,两年后当上University of Arizona教授。
![95a24bcd6e4b8e57a1f230cf7fb6c861.png](https://i-blog.csdnimg.cn/blog_migrate/c420a54ce9bc2fc2a7a8b9b0bfa69908.jpeg)
Sargent在教书之余写了个调试器Scroll Screen Tracer(SST) debugger。正巧Myhrvold在制作Mondrian操作系统,需要一个debugger,两人就此相识。Myhrvold觉得SST很好用,缠着Sargent要求添加新功能,其中最难的一件是让SST运行在保护模式,Sargent做到了。DSR被收购后,Myhrvold把他也推荐给微软。Sargent将SST卖给了微软,但不愿放弃教职,他谢绝了Ballmer招揽,只答应暑假里过来做顾问,帮助改进微软的CodeView debugger。
Weise与Sargent两人的合作并非精心谋划,而是源于一个玩笑。那是88年6月下旬某个周五晚上,两人同时参加了一个微软办的派对。可能喝得有点多,Sargent开始戏弄Weise,吐槽Windows 2.x内存管理有多么差劲。出乎意料的是Weise没有反驳,反而邀请Sargent帮忙一起改进,借着酒劲拉他离开派对,码代码去了。在Sargent的帮助下,Weise用SST将Windows 2.x内核启动到保护模式,逐条分析哪些代码会造成问题。就这样两人一干就是数周,也没跟其他同事通气,终于让Windows打破了640K界限。三日后,Weise在会议上做了演示,Bill Gates当即拍板,决定上马Windows 3.0。
![760a342405813d7a405afe8aa6222684.png](https://i-blog.csdnimg.cn/blog_migrate/b09d413ef9ebf9eeb229b38543874d91.jpeg)
转折点
Windows 3.0有三种模式。
- Real mode。Real mode是给配置落伍的机器用的,没啥好讲的。
- Standard mode。Standard mode需要80286或更高的CPU,至少1 MB内存。Windows本身以及Windows应用能够运行在保护模式,突破了640 K界限,且支持协作式多任务;而DOS应用依然运行在实模式里,依然受640 K限制,无法多任务。
- Enhanced mode。如果电脑有80386或更好的CPU,2 MB以上的内存,那用户还能启动Enhanced mode。在Enhanced mode下,连DOS应用也突破了640 K限制,并且能够抢占式多任务,能够窗口化。
Windows 3.0的架构也很有意思。Enhanced mode下同时有三个操作系统在运行。最底层的操作系统是一个32位虚拟机管理器,运行在386的32位保护模式上面。然后这个虚拟机管理器创建一个虚拟机,运行Windows和Windows应用,又创建一个虚拟机跑DOS。各种DOS应用则运行在一个个virtual 86 mode里,必要时可以通过DPMI接口切换到16位甚至32位保护模式。见文末注记。
毫无疑问Windows 3.0是一个重大突破。当得知Windows能够在保护模式里运行,IBM立马感受到威胁,不断施压要求微软砍掉Windows。双方在幕后一番唇枪舌剑后,统一了宣传口径:Windows 3.0是过渡产品,针对低端市场,OS/2才是未来,微软1991年起将停止Windows开发。据员工日后的采访回忆,种种迹象表明Gates看好的依然是OS/2。Windows是多个操作系统杂合体,OS/2在安全性、稳定性等方面占优。
当用户发现Enhanced mode下,Windows运行DOS程序比DOS还好,Windows 3.0火了。Windows 3.0在短短两月就售出一百万份后,事情发生些变化,Gates忽然发现,IBM好像也不是必不可缺嘛。与此同时,IBM对微软疑虑和忌惮越来越重。这导致OS/2开发第一次分裂。双方决定OS/2 1.x 的维护以及尚未完成的2.0由IBM接手,而微软专心OS/2 3.0的开发工作。
OS/2 3.x 代号NT。1988年Dave Cutler跟Digital公司高层发生严重分歧,一怒之下带着几个得力的助手,跳槽来到微软。
![5857bc618167ceb1c5b1292da494ad28.png](https://i-blog.csdnimg.cn/blog_migrate/074b4f3a08d607767081403ed4633a6d.jpeg)
Cutler对个人电脑不屑一顾,一接手就把OS/2早期代码统统扔掉,从零开始打造个没有历史包袱的操作系统。NT设计极具前瞻性,它是用C语言写的,可移植到其他芯片架构,不像早前的OS/2和Windows只能跑在x86上面。80年代精简指令集与复杂指令集的学术论战,使得业界普遍相信x86终将被效率更高的RISC所取代。NT支持x86、DEC Alpha、MIPS等多个架构平台,等于给未来加道保险。
NT队伍不光对OS/2旧代码不屑,连IBM设计的OS/2 API也看不上。随着IBM与微软关系恶化,NT程序员们乘机游说Gates,抛弃OS/2 API,用32位的Windows API取而代之。NT虽然先进但需要的配置高,所以主打工作站和服务器市场,主流PC市场则交给Windows。两者之间由Win32 API连接,这样Win32应用两个系统都可以运行。等将来时机成熟,Windows能够自然过渡到NT上(Windows XP取代Windows 98)。如此一来打消了人们对Windows前景的顾虑,微软在路线图上胜过了IBM。
Bill Gates同意了。1991年初IBM发现自家API被砍,OS/2 NT变成了Windows NT,战争正式开打。
Windows v OS/2
Windows 3.1对3.0进行了大量改善,其中对这场战争影响最大的一条要数多媒体支持。Windows跑进保护模式,最开心得是显示驱动开发者,终于有足够内存来支持更强大的多媒体功能。Windows 3.1加入了多媒体播放支持,PC从无趣的生产力工具变成家庭娱乐设备。巧的是此时IBM的影响力一跌再跌,失去了价格锚的作用,OEM开打价格战,PC成了红海市场。两个因素加一起,PC大举杀进家庭电脑市场,携着大势摧枯拉朽。到1993年微软宣布Windows用户达两千三百万。
OS/2 2.0 是专门针对80386设计的,运行在32位保护模式里,是PC平台第一个纯粹的32位操作系统。IBM抛弃了微软设计的Presentation Manager,自己设计了一个WorkPlace Shell(WPS)。WPS是一个完全object oriented shell,所有元素都是一个对象,用户对它评价非常两极化,爱者极爱,恨者极恨。
![94c13ee77cde7b0f7c47c5a92419b553.png](https://i-blog.csdnimg.cn/blog_migrate/727c2297b8c7848889f068fc7c377507.jpeg)
IBM把稳定性作为OS/2的主打卖点,向高级用户、企业用户推销。OS/2的稳定性怎么说呢,如果电脑只有4 MB内存,IBM标明的最低配置,那么系统会不停地进行磁盘操作来创造虚拟内存,电脑非常卡顿无法使用;8 MB能及格,16 MB能流畅使用;而Windows 3.1只要2 MB就能跑得欢。另一方面,PC生产商视IBM为最大的威胁,OS/2的成功意味着行业标准仍由IBM掌控,所以他们自然更愿意与微软结盟,搭载Windows。这进一步扩大了两个操作系统用户基数差距,最明显的结果是很少有OS/2的硬件驱动程序,很多时候只有IBM自家硬件有OS/2驱动。
OS/2 2.0 内置了一个IBM魔改过的Windows 3.0。IBM的宣传口号是“A better DOS than DOS, a better Windows than Windows”。前半部没错,OS/2能像Windows 3.0一样运行DOS应用,自然比DOS好。后半部意思是,OS/2能运行多个Windows虚拟机,能让每个Windows应用跑在单独的虚拟机里,这样即使程序崩溃也不会牵连到别的部分。前提是内存足够大,这使得只有极少数用户才能享受到这项功能。
兼容Windows应用是IBM的又一个重大败招。从软件开发者角度看,开发OS/2原生应用只能卖给OS/2用户,开发Windows应用则卖给Windows和OS/2两个系统的用户,所以开发者都跑去写Windows应用了。让OS/2兼容Windows应用,IBM本意是以此来吸引更多用户,可结果却是拿自家市场份额补贴对手,愚蠢至极。Windows 3.x时代,Windows应用还处于起步阶段,用户八成以上的时间是在运行DOS应用。能运行好DOS应用就足够了,OS/2应该乘双方差距不大之时,全力发展自家生态。IBM还是拉拢了一批开发商。Lotus、WordPerfect等视微软为最大竞争对手的公司,更希望IBM获胜,汇集到OS/2旗下。可是这几个DOS时代的王者,在图形界面上投资晚,做出来的GUI软件臃肿、卡顿、bug多,毫无竞争力。IBM还掏钱请Borland等公司为OS/2开发软件,然而这些公司急着完工拿钱走人,没动力捉bug或优化软件。
除了拼技术,两家公司的盘外招也接连不断,试图通过散布Fear Uncertainty Doubt来削弱用户对竞争对手的信心。FUD策略是IBM发明的,七十年代IBM用这招坑了不少大型机竞争者。在与IBM长达十年的合作中,微软不断偷师学艺,FUD这招使得青出于蓝而胜于蓝。IBM九十年代初糟糕的经营状况让情况雪上加霜。1991年IBM亏损28亿美元,是公司八十多年历史上第一次;1992年亏损50亿美元,创美国公司亏损新记录;1993年亏损更是超过了80亿美元。用户担忧的不再是OS/2的前景,而是IBM能否存活。
2.x后,IBM在1994年推出OS/2 Warp,96年推出OS/2 Warp 4,与Windows 95对垒。Warp技术上可圈可点,却已无法挽回败局。操作系统通过API来指挥软件应用,通过驱动程序来号令硬件,起到承上启下的作用,天然处于领导地位。API接受程度,以及驱动程序多寡,正是操作系统的价值所在。现在OS/2 API拼不过Win32,硬件驱动远少于Windows,大势已去无力回天。Windows 95横扫战场势不可挡,
![dcddbe83d976cb88605834443732744e.png](https://i-blog.csdnimg.cn/blog_migrate/e8898f25611ae4cd3409b99a25b61516.jpeg)
微软正式登基成为IT产业新霸主。
![a9142768b855c78ca8fff6b00fe8f5d1.png](https://i-blog.csdnimg.cn/blog_migrate/68ce13dd6b83e15e6504c44f6b61bb25.jpeg)
惨淡结局
1991年IBM决定采用新策略来阻击日渐壮大的Wintel。IBM一边拉拢苹果和摩托罗拉组成AIM联盟,力推PowerPC架构以期对抗x86;一边开发新一代操作系统WorkPlace OS作为OS/2的后续,来应对Windows NT。
IBM称WorkPlace OS是一个基于微内核架构(Mach 3.0),模块化、面向对象、可移植、可扩展、全场景、适配多终端的分布式操作系统,
- 支持PowerPC、x86、ARM等多种架构;
- 支持从PDAs、到PC、到工作站、到服务器各种设备;
- 将具有多种personalities,可以运行Windows、OS/2、OS/400、UNIX、AIX和MacOS应用。
IBM称之为the Grand Unifying Theory of Systems,操作系统的大统一理论。
1993年Louis V. Gerstner Jr.接掌IBM大权。在IBM之前,Gerstner在一家做食品和烟草生意的公司RJR Nabisco工作,奥利奥大概是其最知名的产品。刚收到担任IBM的CEO邀请时,Gerstner是拒绝的,让IBM请高另明。
I'm not being humble, honestly. 我一个卖薯片的怎么就卖起芯片了呢?
但是IBM不肯放弃,拿国家大义来压他,甚至想请克林顿总统出面征召。Gerstner无奈只好上任了。
Gerstner做销售出身,不懂技术,(其实IBM成立至今所有CEO都是销售出身,仅有现任Ginni Rometty勉强算有工程背景),一开始技术上的事情他都听IBM工程师的。但是他很快发现IBM工程师对PC操作系统抱有执念。他们认为PC是IBM创造的,所以PC的统治权理所应当归于IBM,憋着劲跟Windows斗。当Gerstner从其他渠道了解情况,意识到操作系统市场大势已去,决心止损。在花费四年开发时间和投入20亿美元后,IBM于1996年砍掉了Workplace OS项目。而OS/2虽然失去了主流市场,但凭其相对Windows更好的稳定性,在银行ATM、交通枢纽、超市收银等特殊场合苟延残喘了下来,直到2006年年底,IBM正式终止OS/2的支持。
注记
Weise,Sargent的故事,详细版的见Jennifer Edstrom, Marlin Eller的《Barbarians Led by Bill Gates……》,或见Sargent自诉,
Saving Windows from the OS/2 bulldozerblogs.msdn.microsoft.com Nathan Myhrvold - Murray Sargent: Math in Officeblogs.msdn.microsoft.com![c533a44a44801321929a0f2946e8cfe5.png](https://i-blog.csdnimg.cn/blog_migrate/57b794df27ae71d9c0fd95358f0a10b1.jpeg)
关于Windows 3.0 Enhanced mode,见Raymond Chen的blog
If Windows 3.11 required a 32-bit processor, why was it called a 16-bit operating system? | The Old New Thingdevblogs.microsoft.com![431dc56000e67602d5c4437af57fd0cb.png](https://i-blog.csdnimg.cn/blog_migrate/b7b4d60cf39782d623d562b3c7f4887b.jpeg)
![431dc56000e67602d5c4437af57fd0cb.png](https://i-blog.csdnimg.cn/blog_migrate/b7b4d60cf39782d623d562b3c7f4887b.jpeg)