為什麼微軟,谷歌要另立操作系統山頭,而不是像蘋果一樣,在最正統的 Unix 基礎上開發?


Google 用 Linux 是因為 Linux 已經比較成熟了,直接用沒問題

MS 的話,你質疑有道理,因為他們在 80 年代還真做過 Unix(叫做 Xenix,而且份額還不錯),但是他們不往 PC 上移植 Xenix 是因為——

                     跑不動。

老 Windows 為了在當時的廉價電腦上面運行起來乾的那些事情相當喪病的,比如你們都熟悉的 WinMain:

int CALLBACK WinMain(
_In_ HINSTANCE hInstance,
_In_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nCmdShow
);

的第二個參數 hPrevInstance,在 win32 底下都是 NULL,但是在 win16 里是有用的,如果你程序開第二個實例的話,你可以藉助 hPrevInstance 去從已經開完的程序裡面直接複製數據(哦對了 16 位 windows 是沒有進程地址空間隔離的),節省一次初始化。

ps. 樓上有人說圖形系統,那麼你們知道 GDI 裡面有個 JIT 編譯器嗎?給 BitBlt 用的。

pps. 當年用來開發 UNIX v6 的 PDP-11/40 帶有硬體內存管理和分頁機制,而 8086 沒有,所以移植會非常蛋疼,Xenix 最早的 8086 移植不是針對 IBM PC 硬體的,上面帶有額外的硬體 MMU 晶元。


先說微軟。

UNIX可不是什麼「自由」的東西。UNIX是商標,有版權。直到現在,任何操作系統想要自稱UNIX,除了要兼容UNIX標準,還需要掏大錢去做認證。因此符合要求的只有Mac OS X,Solaris等系統。Linux不完全兼容標準,兼容標準的BSD不想掏錢做認證。當年(自稱)擁有UNIX的SCO還告過IBM,理由是Linux侵權,鬧得雞飛狗跳,最後以SCO把自己耗死收場。

因此,M$不想在UNIX代碼基礎上開發十分正常。NT Kernel開發時,ATT還在告BSD,科技公司人心惶惶,根本沒有可以自由使用的UNIX代碼。用一個商標就夠麻煩了,要是再用代碼,簡直是把命交到別人手裡,因此NT Kernel完全是從零開發的。從頭造輪子也有利於掙脫歷史束縛,當年新鮮出爐的時候,NT Kernel一點不比UNIX Kernel差,至少在GUI效率上遠遠比UNIX上的X window強(到現在x window的效率也不咋樣)。

再說Google。

其實Google的情況很簡單。選Linux Kernel是因為這個項目已經非常成熟了,各方面表現都不錯。所謂「正統UNIX」到了2008年,只是個破落貴族的牌坊,連好看都算不上了,只能嚇唬嚇唬不懂行的人。

最後說蘋果。

蘋果也沒從什麼「正統UNIX」上面開發。蘋果最初的想法也是去選Linux Kernel。無奈喬布斯和林納斯兩個大神談崩了。林納斯看不上喬布斯的OS X計劃,總覺得桌面Linux很快統治世界,而OS X這種內核開源GUI封閉的半調子不靠譜。最終蘋果啟動B計劃,把FreeBSD的領頭人挖來,最後基於Mach和BSD開發出了自己的基本系統darwin。當時BSD的版權撕逼已經結束,darwin不會再有法律風險。OS X和iOS都基於darwin。

最後說一下,最「正統」的UNIX是ATT的UNIX SYSTEM V系列,現在流行的所有*NIX系統,不是旁枝,就是山寨。我自己是不知道還有哪些地方還在用SYSTEM V這種恐龍級的老系統了。

(之前記錯了,darwin不光是內核。內核名叫XNU,darwin除了XNU,還包括其他一些基礎組件。darwin是OS X的開源部分。)

(另外某個答案說,「上來就說 Unix 是一個「商標」的,這觀點也太落伍了」。我們討論的是三個系統研發的時候的事情,至少也是十幾二十年前的事,而不是現在。那個時候,UNIX商標和產權還相當重要。現在固然是沒多少人把正統Unix的招牌當回事了,但是招牌就是招牌,真要用就必須正式拿到許可,否則就是只能叫Unix-Like而不能官方宣稱自己是XX Unix)


正統是個什麼玩意兒?江山代有才人出,各領風騷數百年。

IT的世界最不需要的就是正統,最不缺的恰恰也是正統,讓正統玩兒蛋去吧。


我一直覺得很搞笑的是蘋果系統內核 XNU 的全稱叫 XNU is not Unix。。。

結果到最後就他變成了 unix 認證的系統。。。GNU(GNU is not unix) 的 linux 都沒有認證(多半是懶得掏錢去弄個名頭吧。。。畢竟是開源的沒法賺錢的系統。。。)


當年Windows和Unix是運行在不同種類的硬體上的


啥?

你說 OS X 是最「正統」的 UNIX?


微軟的Windows來自CP/M,歷史比Unix要早。Google啥時候開發過操作系統了?老夫記得Google從來都只是抄+收購。


首先,上來就說 Unix 是一個「商標」的,這觀點也太落伍了。2003 年的《The Art of UNIX Programming》和一眾講 Unix 的書,誰也沒把商標持有這件事情當做硬指標。Linus 的《Just for Fun》里明確的說了他對 Unix 精髓的理解。像 VMS 這種進程超重量的系統,和直接提供 fork/vfork 的各種系統,後者都歸為 Unix 系統是完全沒有問題的,根本不用加一個「類」字。

從 kernel 和 POSIX 這個級別來看,Google 的系統就是建立在 Linux 上的。Microsoft 一直對版權有偏執的看法。當年 BSD 還在和 Unix 的版權人打官司,Microsoft 不想惹事情。

從包含圖形系統的整個系統來看,Microsoft 一直認為 PC 跑不起 Unix。雖然這個看法後來證明是錯誤的,但是「正統」Unix 的 X 服務就連現在的 PC 跑起來也是吃力的(當然和對圖形的需求猛增有關),而 OS X 和 Linux 上的各種 direct framebuffer 的方式在當年的 PC 上也是有些吃力的。

Unix 移植到 PC 上不是什麼難事。因為 Unix 只是一些可以相互替換的習慣的組合。像 X,init 服務之類的東西,即使去掉,還是叫 Unix。但是當年這種文化其實是很特殊的,下邊的 PC 和上邊的 VMS 都是 monolithic 結構。沒有這種小模塊組合的概念。Jobs 因為搞 NeXT 和學術界接觸比較多,Google 是 2000 之後,所以他們都能接受 componetize 的概念。Microsoft 自己只是搞 PC,挖人也是 VMS 的團隊。所以除了法律上的顧慮,他們也不會想到能通過模塊化來利用 Unix 的資源。


在當年的unix戰爭結束後,就不存在最正統的unix一說了。

基於UNIX System V的各個系統,如AIX,HP-UX,Solaris和SCO系列,勉強可以算作正統,因為畢竟是基於Unix創始人貝爾實驗室做出來的System V的各個Release。

另外,80年代中期基於System V的Xenix,也就是後來的SCO Unix,是可以在x86 PC硬體上運行的,而且在1987年之前還是微軟的產品

後來SCO完全控制了它,甚至最後買下了Novell手中UNIX System V的所有權,並以此自稱正統。最後,變成了和整個Linux社區為敵的史上最大專利流氓

另外· @farta fine 看似Win3.1,卻不是Win3.1的系統


當年操作系統是初現江湖,即使是unix的年齡也就幾歲,遠沒現在複雜,開發成本很小,基本也沒有什麼生態,所以自己開發一套操作系統遠比寄人籬下划算的多。

其實當年出現的各類操作系統林林總總也有一些,不過後來都死掉了。

回到現在,基本上沒有哪家公司敢從頭開發一套全新的操作系統了,即便是國家級的層面也是基於類linux修改的(本人學識有限,說錯了,大神別打我)。

事實證明,微軟自己開發操作系統的路線是正確的。


UNIX一開始就不是為當年的PC這種單人單任務的機器設計的,而是為了多人多任務的伺服器設計的。即使是UNIX大佬IBM都覺得UNIX不適合PC,所以用了微軟的DOS。(IBM的PC策略完全是大坑,自己培養了兩個可怕的對手,MS和Intel)

而且,開發個DOS這樣的PC操作系統,對於微軟來說也不算太難(據說花幾萬刀買了個系統改了改就成了)。 當然,隨著PC的性能越來越強大,用途越來越廣泛,MS推出的Windows才是真正重量級的PC操作系統。

Google的Android是在Linux上做修改的,算不上新的操作系統(類似的還有Meego),指望Google另立山頭比較難,因為對於操作系統,編程語言這些基礎性的東西,Google不像微軟和蘋果這樣的老牌公司那麼多積累和執念,基本上都是儘可能利用現成的產品改改就用。畢竟人家是賣廣告的公司,不是賣軟體和硬體的。


蘋果的mac os 是基於NeXT上(喬布斯離開蘋果時創辦的兩個公司,其中之一,另一個是Pixar)的NeXTSTEP操作系統開發的,而NeXTSTEP是基於卡內基 梅隆的拉森德教授帶領開發的操作系統內核Mach上開發的,只是Mach類UNIX,僅此而已。


蘋果沒有足夠的技術能力和財力像ms一樣自己搞一套。

安卓剛剛開始的時候是個更小的小廠,不過那時候linux已經很好了。


Windows師承CP/M和VMS(RSX),哪個都比Unix早,所以題主你搞錯順序了。


OS X的服務層來自FreeBSD,但是內核是另外的。Android內核是Linux,不算Unix,只是Posix兼容的。要說正統,只有AIX,Solaris那些商業Unix才算。微軟是僅存的一家以一己之力從頭開發操作系統的廠家了。而開發NT的時候,x86上的Unix和沒有差不多。386BSD在打官司,Linux還在0.x版本。對於商業公司來說,全部控制在自己手上才爽。Google依賴於Linux是沒辦法,你看Chrome依賴於Webkit沒幾年就不爽了,開分支去了


為什麼這麼明顯的釣魚題下面有很多這麼正經的回答?


我感覺GNU/LINUX 挺UNIX (或system v)的, 當然我沒看過XSI, POSIX不就是大鬍子RMS帶頭的?


problem : 最正統的unix 是哪款unix


不是很懂你們操作系統的分類。


補充一下。微軟中標IBM之後,負責給IBM提供操作系統,但微軟沒有操作系統開發能力。在幾周內把買來的一個叫quick and derty的操作系統改了個名字去交差。

後來IBM開放了pc標準,無數pc機公司把這個行業做大,幾乎都延用dos。


推薦閱讀:

posix和system v 信號量哪個更快?
同為開源的類unix系統,為什麼FreeBSD遠沒有Linux流行?
除了Windows和UNIX內核兩大桌面操作系統外,歷史上是否曾出現其他具有一定實用價值的操作系統?
Linux 算不算是 UNIX 的一個分支?
Atom, Vim, Visual Studio Code, Emacs 哪個好?

TAG:MicrosoftWindows | 編程 | Unix | Android |