編寫Windows作業系統的工作量有多大?

-安小彡-


形象點說,如果是編寫Windows10,把BAT的高手集合起來寫5年也寫不好,編寫操作系統主要是兩點,一點是要有非常厲害的大牛負責整體架構的設計,一個是大量的編碼工作,負責如此大的軟件工程是非常難的,還有測試工作。

你可以看下Windows8的架構,包含非常多的,有些答案說內核是最難的,其實並不是,這麼說的人一定是不懂軟件的。操作系統的核心非常重要,但是並不是最難的,操作系統的內核有很多開源的,Linux kernel還有freeBSD等都可以參考,Windows10的內核也是非常厲害的,個人認為比Linux kernel還厲害。

最難的問題建立在內核上的各種服務還有接口,工作量巨大還需要長期的完善,據說Windows 7 的代碼量達到了5000萬行,直接參與人員有1000人,分成了25個小組,耗時3年。要知道這是建立在微軟這麼多年操作系統開發經驗的基礎上的,不是隨隨便便找幾個大牛就可以的。


萌哈科技


舉例來說,微軟的Windows XP系統有4000萬行的代碼,Windows Vista和Windows 7 則達到了50000000行代碼,接近1000個人參與共同開發,他們分成25個小組每個小組就有約40人,耗時在3年左右。

幾千萬行代碼的工作量是個什麼概念?舉個參照系吧,很多人在用的金山的WPS代碼行數約有150萬行,而金山軟件公司重寫這個級別的辦公軟件WPS,用了3年時間。現在我們耳熟能詳的Windows等操作系統,都是幾十年技術積累的產物,絕非憑空冒出來的。

當然,操作系統代碼行數並非是越多越好,而是在相同功能的情況下,保障代碼越精簡越好,比如像塞班的系統代碼行數突破3500萬行,卻因代碼的臃腫,對代碼的維護性和擴展性都造成了負面影響。

寫完代碼又是一個費時費力的巨大的工作。如何始終反覆的精簡代碼,保證系統的功能的最優化,值得推敲

想要開發操作系統最難的工作就是你要做一個系統的內核,而系統內核分成很多模塊,每個模塊的劃分、協調不僅要考慮有效性、效率高低、可維護性,還要注重代碼的控制、項目的管理、算法的效率、多任務的調度算法、軟件架構設計等的方面,是非常複雜的一項工作,需要有非常深厚的技術積累,技術門檻也比較高。

在資金方面,一個成熟的操作系統的開發是很燒錢的,往往延續數年,比如微軟在4年前的研發成本超過100億美元,在開發Windows Vista的所花費的研發費用更是超過了恐怖的200億美元。Linux內核開發根據人員投入的規模測算,也耗資數有十億美元。

作系統有一種屬性叫做用戶粘性,當用戶習慣了某一個特定操作系統後,比如Windows,你讓他換一種操作系統,甚至同一個OS換一個版本都會難以接受。這也是目前XP也有很大市場佔有率的原因。

,都要從新學起,很多人就覺得很麻煩,這也是為什麼微軟已經發展到Windows 10了,Windows XP在中國依舊有龐大的


快科技問答


其實,Windows系統的編寫工作量並不大,但是想要成型,工作量就很大了!


編寫Windows系統?不如說是編寫Windows核心!

對於一個系統而言,就和蓋房子是一樣的,只要打好地基,就很容易向上累積,所以實際上,Windows系統的內核才是這個系統剝去外衣後真正的樣貌。

所以,編寫Windows系統的關鍵和難點就在於編寫Windows系統的內核,所幸,Windows XP之前的系統內核(比如win95,98)並不是微軟編寫的,它使用的是DOS系統內核,我們可以把它看做是使用Linux內核的安卓系統或者是Ubuntu,內核系統在計算機學範疇上實際上指的是最基礎的可以利用各種代碼調用硬件的接口的微型系統,比如在DOS下,雖然沒有文件管理器這個界面,但我們依然可以使用各種DOS命令完成這一任務。

但是我們尚不知道在比爾·蓋茨買下DOS系統更改為MS-DOS之前,DOS系統到底編寫了多久,但我們可以參照Linux的發展來看看到底有多難。

Linux的過去,Unix僅由幾人開創

Linux是基於Unix內核的修改版,可以看做類似於Windows的系統發展史,而Unix基本內核第一版僅由Unix之父Ken Thompson(左)和其同事Dennis Ritchie(右)共同利用匯編語言編寫而成。

到了1973年的時候,Ken Thompson 與Dennis Ritchie感到用匯編語言做移植太過於頭痛,他們想用高級語言來完成第三版,對於當時完全以彙編語言來開發程序的年代,他們的想法算是相當的瘋狂。一開始他們想嘗試用Fortran,可是失敗了。後來他們用一個叫BCPL(Basic Combined Programming Language)的語言開發,他們整合了BCPL形成B語言,後來Dennis Ritchie覺得B語言還是不能滿足要求,於是就改良了B語言,這就是今天的大名鼎鼎的C語言。

於是,Ken Thompson 與Dennis Ritchie成功地用C語言重寫了Unix的第三版內核。至此,Unix這個操作系統修改、移植相當便利,為Unix日後的普及打下了堅實的基礎。而Unix和C完美地結合成為一個統一體,C與Unix很快成為世界的主導。

之後就不算是內核的重寫,而是系統的開枝散葉了,不再做介紹。

既然如此,那為什麼現在做不到重寫一個Windows10?

小編一開始就說過,系統內核是系統的靈魂部分,但這不代表只要有靈魂這個系統就能活起來,作為地基,想要正常的居住就必須在上面無數次迭代更新建房子,僅微軟為了Windows 7(64位版本)重寫的核心(從這一版系統開始出現小範圍64位),就耗費了數萬微軟程序員的心血,另外XP升級到vista的內核,也造成了顯而易見的問題,拋棄之前成熟系統內核帶給了Vista效率下降50%以上的問題,直到Windows 7才有所好轉,這也就說明,地基不是想重做就重做的!

想寫一個Windows10對於個人而言是不可能完成的事情,為什麼Windows98的系統還要佔0.8G左右的空間,歸根結底是因為除了MS-DOS的系統內核以外,還有數以萬計的各類擴展庫(DLL)和應用程序(EXE),這些東西的作用是將複雜的DOS命令簡單化,讓其他高級語言的使用者可以直接調用系統API從而更高效的完成應用,比如C語言裡想要使用圖片顯示在DOS窗格,就要調用系統GUI參數才可以做到,所以個人或許可以重寫一個系統內核,但是沒有相應的擴展庫和調用接口,就不能產生大量的生態軟件,這就是為什麼微軟的移動系統會失敗的原因。


aliquis


編寫Windows 操作系統的工作量是大於阿波羅登月計劃的!


首先說說代碼量,假如一個桌面級的操作系統代碼規模在千萬行數量級,如果加上配套軟件,總規模應該超過一億行,如果再加上一個完整的軟件生態系統,那麼總規模應該不少於十億行。這還是成熟的系統,再加上調試精簡前更多。再加上各個功能之間需要兼容性,可維護性,可管理性等這些隨著代碼的越來越多可推敲,需考慮的問題也會越來越多,是項技術難度非常大的工作!

再說一個直觀一點的道理吧:是不是說會蓋5層樓房,只要投入2倍的人力物力財力就可以蓋出10層樓房?顯然不可能僅僅是2倍。或者蓋5層樓房需要一年,那麼投入兩倍的資源,是不是半年就可以搞定?顯然也不會是2倍這麼少。 同樣的,能開發一個軟件,和開發一個完整的操作系統的難度相比困難也在這裡。 可惜很多人都認識不到這一點,把軟件開發當成是1+1=2這麼簡單的事情了,隨著系統的越來越複雜,臃腫,開發難度也越來越大!

微軟,一個公司就有將近10萬員工,當年有Windows95、Windows98等系統的技術積累的情況下,依舊集中了5000餘名程序員開發歷時兩三年才開發出Windows XP。


熱門笑話百科


就目前開發工具來說,重新開發一個操作系統有難度,但並非你們說得難到中國人做不到;之所我們沒有,那是因為專利壁壘和系統生態環境,微軟不允許任何人開發出兼容Windows軟件的操作系統,你要開發自己的操作系統,你就必須自己打造你的上下游生態鏈,這才是最難的,因為你不這樣做就沒有人為你的系統開發應用軟件,沒有應用軟件誰來用你的系統呢,Linux在桌面系統市場很小就是因為這個原因,它只能走服務器道路;現在Windows在移動端市場很小也是因為安卓系統和蘋果系統的生態系統比他強大所致。中國也有自己的操作系統,但都是專用的,比如超算中心用的,還有華為有些路由器用的,等等


wooo2


簡單來說下,軟件開發的工作量一般以一個程序員工作一年為單位即“人年”,像微軟公司開發xp的初期版本為三千到四千人年,這還是xp的內核只是個升級版,不包括系統測試人員,也不包括開發工具等配套軟件。

所以一個像MacOS和windows可以產生完整生態的系統,工作量以幾萬人年起步,如果我國從頭開始開發國產操作系統,保守估計工作量在五萬人年,發展到成熟穩定的版本沒有十萬人年下不了線。


玩鮞2oo8


只能說這麼多行代碼水分很多。比如用VC,寫個簡單的HELLO WORLD,IDE自動為你生成的代碼就至少數百行。再比如IF一行,刮號一行等等,個人覺得要除10才能基本體現代碼量


immortalknight


算法才是軟件的靈魂,寫出簡潔實用高效的算法很費勁,關係到軟件的成敗。操作系統也是軟件,把01的基礎語言改進成圖形化多樣(元)化的接口去管理著硬件。同時,也有去適應新的網絡功能,硬件功能,新的應用領域的程序應用開發和兼容。應用越廣越通用,編寫越複雜。比如,手機上的APP都是各類軟件,要界面豐富並不斷增加實用功能就要不斷去開發測試到升級,APP的容量也不斷增大。操作系統要適應各種硬件,外接設備,應用行業,學科領域,就要不斷增加‘自我學習’。


九M


所以,經常看到有人問為什麼中國不能出自己的操作系統,這真的是一項極為艱鉅的工作。這方面老美的企業確實是先驅,幾十年連續那麼大量的投入和維持盈利的商業模式,基本上屬於私營企業行為,生態系統越來越完善和龐大,如今即使別人想去顛覆都很難。


MartinLA


工作量固然很大,但生態更重要。做一套系統並不是很難,甚至比起60年代造原子彈簡單太多了。但是沒有生態圈子做系統是白費力氣的事,國內沒有做長期研發的土壤,不適合做基礎研究和長期投入的人生存,他們要麼去了國外要麼轉行去賺快錢了


分享到:


相關文章: