windows软件跑到最左边无法操作_Windows对决OS/2 (下)

ca9d4ef6b1092035cb0479e51af0bd06.png

接上篇

王知:​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
David Weise

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
Murray Sargent III

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
时间线 2

转折点

Windows 3.0有三种模式。

  1. Real mode。Real mode是给配置落伍的机器用的,没啥好讲的。
  2. Standard mode。Standard mode需要80286或更高的CPU,至少1 MB内存。Windows本身以及Windows应用能够运行在保护模式,突破了640 K界限,且支持协作式多任务;而DOS应用依然运行在实模式里,依然受640 K限制,无法多任务。
  3. 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
Dave Cutler

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
WorkPlace Shell

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

微软正式登基成为IT产业新霸主。

a9142768b855c78ca8fff6b00fe8f5d1.png

惨淡结局

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 bulldozer​blogs.msdn.microsoft.com Nathan Myhrvold - Murray Sargent: Math in Office​blogs.msdn.microsoft.com
c533a44a44801321929a0f2946e8cfe5.png

关于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 Thing​devblogs.microsoft.com
431dc56000e67602d5c4437af57fd0cb.png
For the Nitpickers: Enhanced-mode Windows 3.0 didn't exactly run a copy of standard-mode Windows inside the virtual machine | The Old New Thing​devblogs.microsoft.com
431dc56000e67602d5c4437af57fd0cb.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值