操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

10 個回答
IT人刘俊明

謝謝邀請!

動態軟件體系結構是我的早期研究方向,目前也在指導大數據、機器學習方向的研究生,所以我來回答一下這個問題。

首先,目前Linux操作系統的應用非常廣泛,不僅涉及到個人電腦領域,也涉及到服務端、移動端和大量的嵌入式設備等領域。之所以Linux系統有廣泛的應用,有三方面原因,其一是Linux操作系統自身的功能性和擴展型比較強,能夠提供穩定的運行環境;其二是Linux操作系統是開源的,可以完全免費使用,而且開源也會使得Linux的安全性能夠在一定程度上得到保障;其三是Linux操作系統的生態體系比較健全。從技術本身來說,打造一個操作系統是完全可以的,但是建立起一個完善的生態體系卻具有巨大的困難。操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

另外,Linux操作系統的發展是整個IT行業共同推動的結果,Linux操作系統自身開放和共享的生態環境是推動Linux不斷壯大的重要原因。目前大量針對於特定應用領域的操作系統,比如智能手機操作系統、嵌入式操作系統等都是基於Linux開發的。從這個角度來看,Linux操作系統為整個IT行業的創新也奠定了一個紮實的基礎。

由於Linux操作系統本身就是開放和共享的,所以重新編寫一個Linux操作系統並不存在太大的意義,而且可能會出現眾多的兼容性問題,所以目前整個IT行業為了維護Linux操作系統來之不易的生態體系,通常都會共同遵循Linux體系的各種標準,以免帶來不必要的兼容性問題。如果行業內出現大量不兼容的操作系統,對於軟件開發人員來說,絕對是一場災難。

我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言!

EmacserVimer

操作系統研發是一個極其複雜的超級系統工程,即使是微軟、谷歌、蘋果也都是站在巨人的肩膀上才能打造出自己的操作系統,很顯然操作系統的研發已經實屬不易,還要在操作系統基礎上打造一個生態同樣是難上加難,現在你還要完全自主,沒有了巨人的肩膀,簡直是難於上青天。

人類世界最難三大超級工程分別是:阿波羅登月計劃、人類基因組繪圖、曼哈頓原子彈計劃,然而操作系統的研發難度一點都不比這三項計劃低。操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

操作系統研發難度堪比三項超級工程

早期Unix的研發成本已經無法考證,不過擁有肯湯普森、丹尼斯里奇兩位祖師爺的貝爾實驗室毫無懸念實力不會低,當時的硬件環境也比較單純,由於最開始Unix定位就是服務器操作系統,因此在很多用戶層功能都捨棄了。

操作系統研發耗資巨大、研發週期長、人員投入巨大,整體難度並不比三項人類超級工程輕鬆。

據微軟官方數據統計,Windows vista系統是超過25個研發小組,總共人數超過1000多名研發人員,用了超過5年多的時間才開發出來的,這其中可見的資金投入已經超過了200多億美金,這相當於阿波羅計劃的經費。要知道這還是微軟在擁有Windows7/WindowsXP等超過三十年的操作系統研發經驗積累的前提之下,還不算微軟其他部門對Windows部門的技術和研發支持。操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

Windows Vista的代碼行數超過了5000萬行,假設用A4紙打印,每頁紙打印30行來計算,Vista代碼打出來需要166萬張A4紙。Linux核心代碼在2008年的時候就超過了1000萬行,這還不算圖形化界面環境等外圍代碼,Fedora 9社區發行版要花費大約108億美金,這個成本並不小。目前近2萬名開發者維護者Linux超過2500萬行的內核代碼,僅僅在2018年時間,就增加了225077行代碼。

站在巨人肩上、何必要另起爐罩

Linux操作系統應用十分廣泛,為什麼要另起爐罩了,直接站在Linux或者Unix的巨人肩上,完全打造一個完全自主的操作系統,不僅沒有這樣的能力,就算是有這樣的能力,也不是一天兩天就能成功的。

Linux操作系統擁有非常完備的功能性、擴展性能也非常好;Linux操作系統本身又是開源免費的,完全可以免費無障礙使用,開源也能夠讓Linux的安全性能得到較好的保障;Linux操作系統已經有比較出色的生態構建,儘管比Windows和macOS不及,終歸還是擁有比較成熟的軟件生態。

Linux的發展本來就不是一兩個人推動的,Linux擁有成熟的社區,是來自全世界各地的Linux開發人員共同開發努力的結果,Linux自身的開放性、以及共享生態的特點讓Linux能夠不斷壯大的根本原因。Linux在嵌入式領域、智能手機、桌面領域、服務器領域都得到了廣泛應用,已經非常成熟,兼容性、生態性、穩定性都已經得到了驗證,Linux打下的堅固基石沒必要棄之不取,而是應該充分利用。操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?


本文為字節跳動簽約作者EmacserVimer悟空問答原創文章,未經允許轉載、抄襲必究!

不怕直说

作為一個程序猿,簡單說下自己的理解:

目前的計算機體系建立在一個最基礎的模型上:電流的開和關,也就是1和0,這也是為什麼計算機採用二進制的原因。在這個基礎上,是數百個硬件接口程序,採用的是機器語言編寫。在這個基礎之上,是彙編語言。再上面,才是各種操作系統和應用程序,呈金字塔狀。任何一個命令都是從金字塔頂端逐層翻譯到最底層機器運算執行。在這個金字塔體系中,每層都有無數的專利障礙,要從頭開發,談何容易?

有一種方法可以解決:

發明出一種基礎模型,不採用電流的兩個狀態,如三進制甚至四進制。在此基礎上逐層開發並申請專利(包括對應的硬件體系),花個幾十年,抗住原有企業的打壓,也許能成。

先不說能不能發明這種機制,幾十年,幾萬億的投入,抗企業級甚至國家級打壓,難!

但是一旦成功,就是另一種生態,甚至將可能淘汰原有生態,利益不是以萬億計。

小强Talk

關於Linux,我想和大家說明一下兩點內容。第一,首先我們一起來了解一下應該怎麼讀 "Linux" 這個單詞,根據Torvalds(Linux 的發明者)在其多次公開場合中的說明,"Linux" 標準的讀音應該是“里納克斯”,利用搜索引擎加關鍵字 Linux pronunciation 進行搜索,就可以看到具體的視頻;第二,現在流行的操作系統中只有 Android 是基於 Linux 開發的,而 Linux 主要還是用於服務器領域。


至於要了解操作系統為什麼要基於Linux,而不是自己開發源代碼;我想我們還是有必要知道Linux的發展。

操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

Linux發展簡史

談到Linux就不得不提到UNIX,因為Linux是一種類UNIX的系統。早在1965年,貝爾實驗室加入了一項由美國通用電氣公司和麻省理工學院發起的合作計劃,該計劃要開發一個多用戶、多進程、多層次的Multics操作系統。由於該計劃實際進展太過緩慢,1969年便暫停了。不過該計劃的參與者之一Ken Thompson已經從這項計劃中獲得了一些點子和收穫,他決定自己編寫一個可移植的小型操作系統,這個操作系統就是UNIX的原型。


UNIX由於具有優秀的移植性而得到了廣泛的關注和支持,1974年12月伯克利大學獲得UNIX的源碼,並動手將其修改為適合自己機器的版本,最終命名為BSD,這是UNIX很重要的一個分支。後來AT&T公司處於商業考慮(貝爾實驗室是從屬於AT&T公司的),1979在發行第七版UNIX時開始嚴格限制對學生提供源碼。當時有位叫Tanenbaum的教授為避免版權糾紛,在完全不看UNIX的源碼的情況下,自己動手寫了一個類UNIX的系統,並命名為Minix。

操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

1991年8月,一名芬蘭的大學生髮出了一個帖子“Hello every out there using minix,I am doing a free operation ststem.”,這是他為了編寫一個類Minix的系統而在尋找志同道合的夥伴,他就是著名的Linux之父 Linus Torvalds. 10月5日,他就在網絡上發佈了大約有1萬行代碼的Linux 0.01版本,次年已經有約1000人在使用Linux了。1993年,大約有100名程序員參與了Linux內核的開發工作,其中核心人員有5名,此時Linux 0.99版本的代碼大約有10萬行,用戶約為10萬人。隨後,Linux 加入了GNU,成為了GNU項目中的一員,同時Linux 1.0版本發佈,代碼量約有17萬行。之後大量開發人員開始將自己的代碼貢獻給核心小組,這使得Linux大大提高了不用平臺間的可移植性。1998年,RedHat公司宣佈商業支持計劃,迅猛推進了Linux的發展,至此Linux正式成為真正的服務器操作系統並繼續成長。


Linux 的特點

從1991年問世至今,Linux 在服務器、桌面、行業定製等各級領域都獲得了長足的發展,尤其在服務器領域獲得了令人矚目的成就,被業界認為是未來最有前途的操作系統之一。這得益於Linux具有的諸多優勢特點:

操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

第一,免費開源。Linux是一款完全免費的操作系統,任何人都可以從網絡上下載到它的源代碼,並且可以根據自己的需求進行定製化的開發,而且沒有版權限制。

第二,模塊化程度高。Linux的內核設計分成進程管理、內存管理、進程間通信、虛擬文件系統、網絡5部分;這樣的設計使得用戶可以根據實際需要,在內核中插入或移走模塊,以方便在不同的場景下使用。

第三, 廣泛的硬件支持。得益於其免費開源的特點,有大批程序員不斷地向Linux社區提供代碼,使得Linux有著異常豐富的設備驅動資源,對主流硬件的支持極好,幾乎能運行在所有流行的處理器上。

第四,安全穩定。Linux採取了很多安全技術措施,包括讀寫權限控制、帶保護的子系統、審計跟蹤、核心授權等,這為網絡環境中的用戶提供了安全保障。

第五,多用戶,多任務。Linux的資源可以同時被不同的用戶使用,每個用戶之間互不影響;Linux內核負責調度每個進程,使之平等地訪問處理器。

第六,良好的可移植性。Linux中95%以上的代碼都是用C語言編寫的,由於C語言是一種機器無關的高級語言,是可移植的,因此Linux系統也是可移植的。


回顧一下上面的內容,我們知道Linux在發展的過程中有著來自於不同領域的大量開發人員助推了Linux系統的發展,經過這麼多年的時間終於發展成為服務器領域的霸主。這從側面說明了開發操作系統的難度,更要命的是,一個系統的成功很大程度上取決於對於各大主流硬件平臺的支持,這一點短期內是任何一家單個的公司沒法做到的。所以,一旦一個操作系統成功,後來者是極難超越的;這也就是為什麼沒必要自己開源操作系統的原因所在。


贈人點贊,手留餘香。我是小強Talk,歡迎大家關注我,和我一起共同成長進步!

发现道

linux的牛X之處在於:它編寫了具體每一個硬件與Linux命令之間的橋樑。編程人員只需要用C、彙編或其它編程語言調用Linux的各個命令,Linux就能指令具體的硬件進行正確的工作。linux的難度是支持的的層硬件非常多,每一個常見硬件都要能自動識別並自動對接。Linux已經那麼多年了,他的底層硬件庫已經非常豐富,其它公司要替代,做起來並不容易,需要很長時間來積累。不過難也沒問題,只要你開始做了,比如華為就可以開始,假以時日,我們的操作系統能支持的硬件庫同樣不會少,與linux並駕齊驅,不會有太大的問題。

操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?
操作系統為什麼要基於Linux,重新開發源代碼不行嗎?打造一個完全自主的不行嗎?

松涛盛语

微軟當初也是買來別人的系統PC-DOS,改成MS-DOS開始開發系統軟件的。蘋果系統也來自於UNIX,安卓是谷歌從Linux發展出來的——為什麼人家可以在別人的東西基礎上開發,我們為什麼就不能?不要糾結於是不是完全自主,關鍵是要用人類已有的科技成就來開發自己的科技產品。牛頓站在巨人的肩膀上,他才看得更遠。Linux既然是開源的,誰能用,又非常好用,我們為什麼非得去打造什麼“完全自主”的操作系統呢?中國的四大發明,外國人不是直接拿去就用了嗎?沒見他們嚷著要自主開發,不用中國的技術。中國改革開放以來的經濟和科技騰飛,也是因為中國有後發優勢,可以選擇最先進的技術為自己所用。只要我們開發了,並且有創新,那不管它原來是誰,現在它是我的。Linux是芬蘭人Linus,美國公司谷歌據此開發了安卓,你能說安卓不是美國的,而是芬蘭的嗎?

破禅剑

理論上是完全可以做到的,但是由於Linux是開源的,並且已經比較成熟,那麼除非功能特殊,否則完全沒有這個必要。

比如:數學。為什麼我們一定要用阿拉伯數字?用中文不可以嗎?

社會在發展,科學、知識在不斷進步,我們終究不可能從頭開始,重新打造一個科學體系,因為成本極其巨大,並且收益極其微小。

重新打造一個操作系統也是同樣的道理。畢竟,開源的體系是透明的,而且非常自由。基於Linux是性價比最高的。

不過,我們的系統一定要切合中國人的實際。界面的中文化一定要做到極致!可以參照WINDOWS系統。目前的任何一個Linux系統(PC)都沒有達到windows的中文化水平,更不要說圖形界面和使用方面的簡便化!基於Linux的軟件仍然非常欠缺,想要追平windows的水準,恐怕還要很多很多年!

說的人極多,做的人極少!

观上灵云

在計算機裡,操作系統是靈魂,沒有操作系統,計算機就是一堆廢銅爛鐵。

實際上寫一個操作系統並不難,當初蓋茨他們幾個人湊到一起不也是寫了一個操作系統嗎?

但是今天我們寫操作系統好像遇到了難點,其實這個難點並不是技術上的難點,而是商業推廣上的難點。

首先,蓋茨推出的系統其實是買來的,他的媽媽很有錢,買這個東西猶如吃吃一頓飯那麼簡單,那麼這個買來的操作系統又給了誰呢?給了IBM公司,而蓋茨的媽媽是這家公司說了算的人(執行董事),剩下的中國人都懂。

那麼中國人能不能如法炮製一個呢?當然可以,但是遇到了很實際的問題----專利。

今天,計算機上幾乎所有的一切都被申請了專利,從上網到鍵盤等等,理論上根本就回避不了,研發操作系統的工作其實就是不斷購買專利的過程,是用大價錢購買各種專利來研發一個操作系統還是用幾塊錢買一個光碟?這個答案我想大家都知道。

如果用過期的專利如何?結論就一個,永遠是落後的。

所以答案差不多就一個,尋找開源的不要專利費的程序集合再做二次開發,這個來源的程序集合就是題主說的“李紐斯”操作系統。

但是,李紐斯系統有個毛病,就是對硬件支持非常不到位,這直接導致使用這個系統的人非常少,使用者少了,為它配套的軟件就少……不過這些超出題主的問題太多,不談。

秋叶不惑

Linux是一個非常有影響力的開源操作系統,很多系統都是基於Linux定製出來的。

開源軟件的前身是自由軟件,其靈魂就是可以自由地修改,而不受壟斷企業的控制。可以毫不誇張的說,沒有開源社區的巨大貢獻,就沒有今天軟件的繁榮。國內軟件行業應該支持開源社區(世界範圍),成為開源軟件的貢獻者,而不是另起爐灶,一切從頭做起。

BRIAN_HO

Linux只是核心,是樁基,上面怎麼搞那各種開發公司可以根據自己業務需求來定製,全世界那麼多的社區貢獻人員,省去了太多不必要的試錯時間,這些都是開發成本,為啥一定要自己去從最底層開始?我們需要了解底層開發和運作就可以了,像ubuntu,centos,arc,debian,fedora等等這種特定環境版本我們也能定製出來,不就可以了, 有全球社區資源和開發者參與, 生態就不會太差, 按照啥都要自己的這是不切實際的想法,想想都是理所當然, 但在操作層面可行性非常低, 按照這種邏輯, 開發工具是不是也得自己寫一個呢?開發語言是不是也要發明一種呢?

相關推薦

推薦中...