很多人都希望有全新的國產的操作系統,但是很遺憾,這個很難。那麼打造一個全新的操作系統真的那麼難嗎?

抱歉,其實做一個操作系統並不難,但是做一個“好”的操作系統,就非常非常的難。本文,將討論好的操作系統到底難在哪裡。

1.打造操作系統並不難

說到操作系統,就不得不提Linux。1989年,21歲的芬蘭大學生Linus Torvalds在學習計算機課程時,其導師為了便於講解《操作系統》,就自己做了一個微型mini-Unix操作系統(Unix是美國AT&T的貝爾實驗室在1969年最早開發的一套操作系統)。

Linus在其導師mini-Unix操作系統的基礎上,進行了優化、升級,然後以自己的名字諧音發佈了一個簡單的Linux操作系統,並公佈在網上,讓喜愛操作系統的朋友可以下載學習,並允許修改其源代碼來完善Linux。

從這件事情上,我們也能夠感覺到,一個大學生都能編寫操作系統,所以你說開發一個操作系統有多難多難,顯然是不現實的。所以,做一個操作系統並不難。

2.操作系統難的是生態

Linux的成功,很大原因是因為他一開始就開源的,任何個人或者公司,都可以獲取Linux源代碼,添加自己的功能或者修復Linux的漏洞。考慮如下2種情況:

(1)愛普生是一家日本打印機生成廠商,我們都知道,在使用打印機時,需要安裝打印機驅動程序,因為Windows使用者太多,所以,愛普生為Windows操作系統專門開發了驅動程序,讓windows用戶可以使用自己公司的打印機。

現在Linux開源了,愛普生開發人員把Linux下載下來,增加自己的Linux版驅動程序,這樣,以後Linux也可以使用愛普生打印機了。

(2)三星是一家韓國打印機生成廠商,同樣的,他也提供Windows版本和Linux版本驅動程序,讓這2個系統可以使用自己的打印設備。

所以,第一個問題來了:

如果開發全新的國產操作系統,沒有硬件廠商的支持,那麼你就算做出來仍然沒用。

你能想象假如一個全新國產操作系統是:ZhOS,安裝到自己電腦上後,打印機不能打印、聲音不能播放、網卡不能聯網... 是不是這樣一個操作系統,其實就是廢物一個?

再次強調一下:你安裝的聲卡需要聲音驅動程序、安裝的顯卡需要顯卡驅動程序、安裝的網卡需要網卡驅動程序... 這些驅動都需要硬件廠商配合。

操作系統只提供基本的接口。具體實現是硬件廠商來實現的。

可以這麼理解這句話:

例如操作系統提供2個函數:

public virtual void TurnSoundOn()
public virtual void TurnSoundOff()

這2個接口:分別用於打開聲音和關閉聲音。

操作系統並不知道如何打開打開這個聲音,具體由硬件公司實現。

美國亞德諾半導體Analog的聲卡驅動可能代碼如下

public void TurnSoundOn()
{
/* 寄存器reg和數據data共十六位:reg為高七位, data為低九位 */
unsigned short val = (reg << 9) | (data & (0x1ff));
/* CSB, SCLK, SDIN 設置為高電平 */
s3c2410_gpio_setpin(S3C2410_GPB2,1);
s3c2410_gpio_setpin(S3C2410_GPB3,1);
s3c2410_gpio_setpin(S3C2410_GPB4,1);
/* 關中斷 */
local_irq_save(flags);

}

而Conexant公司提供的驅動代碼可能如下:

public void TurnSoundOn()
{

/* 設置為高電平 */
AAA_gpio_setpin(00001);
BBB_gpio_setpin(00002);
CCC_gpio_setpin(00003);
Int(00000);
}

可以看到兩家公司的驅動,會針對自己的硬件實現不同的代碼,對操作系統而言,他並不關心你怎麼寫的代碼,他只要調用TurnSoundOn能打卡聲音即可。

3.硬件廠商為什麼不願意做更多驅動?

我們看到,驅動程序開發是辛苦的工作。如果一個全新的操作系統出來,市場佔有率比較低,而又沒有錢可賺,驅動廠商憑什麼給你做驅動程序?

所以,這就形成了一個惡性循環:新操作系統使用率低,導致驅動廠商不願意給你做驅動程序,而硬件不給你做驅動程序又導致新操作系統使用率更低。

可以說,廠商做不做驅動是市場選擇的結果,只有有利可圖,有錢賺,廠商才會去做。這個靠行政命令或者靠國家動員是解決不了的。

4.除了硬件,海量應用軟件是關鍵

就算硬件廠商配合了,還需要海量軟件的支持,例如你的操作系統需要有Word,Excel,Powerpoint,Photoshop,3D Max,各種遊戲,瀏覽器等等支持。

這是考驗操作系統穩定性關鍵。

就像有用戶反映國產Deepin深度操作系統,有時候用著用著就卡機或者死機了,這是最難解決的。早期使用windows98操作系統可能都知道,windows一不小心就藍屏了。

微軟的windows也是通過20-30年不斷迭代升級才達到今天如此穩定的程度,如果你新操作系統,怎麼能保證你自己的文檔,不會寫著寫著文檔或者處理圖片或者編輯視頻不死機,就成了關鍵。

要想新操作系統有海量應用,操作系統必須提供非常優秀的開發環境。有人說,微軟windows能成功,Visual Studio功不可沒。

Visual Studio被稱為宇宙第一開發利器。

工欲善其事必先利其器,VS真的太厲害了。

打造一個全新的操作系統有多難?

Visual Studio 截圖

Visual Studio的出現,讓海量開發人員為windows開發海量應用程序。

也正是開發環境如此重要,作為Android的所有制谷歌,也開發的自己編輯器:Android Studio。

當然,我們也都知道Android Studio並不是從零開發的,他是基於JetBrains軟件開發的,JetBrains是一家捷克公司,這也是現存少有的非美國的公司。

如果在加上蘋果公司的Xcode的,

可以這麼說,美國三巨頭各自完成了自己生態系統的打造。外來者很難再進入
打造一個全新的操作系統有多難?

Xcode開發環境

  1. 微軟:Visual Studio, VB和C#開發語言
  2. 谷歌:Android Studio, Java和Kotlin開發語言
  3. 蘋果:XCode,Object-C和Kotlin開發語言

開發一套開發環境是複雜的工作,像Visual Studio軟件大小動輒5-10G,這個大小比操作系統本身還大,還複雜。

操作系統和開發環境是“先有雞還是先有蛋”的問題,有時候很難說清楚。操作系統用開發環境開發,而開發環境又需要運行在操作系統上,是你中有我,我中有你

5.遊戲功能無法接受開發第二個版本

很多人都會玩遊戲,例如LOL英雄聯盟,DOTA等,這些遊戲本身開發就極其複雜,遊戲公司也承受不了開發第二個版本遊戲。

所以,Linux生活了幾十年一直幹不過Windows,就是因為,遊戲公司只能提供Windows版本的,根本沒有力量再開發一個Linux版本的。導致在桌面版上,仍是Windows 的天下。

6.其它

除了上面所說的,操作系統要有內存管理。根據PKS定律:“你給程序再多內存,程序也會想盡辦法耗光”,因此操作系統要能動態分佈內存。

進程管理,例如我打開的Word不影響我的Excel。

文件管理,例如打開一個100G的文件,操作系統能支持嗎,支持遠程打開嗎

網絡管理,包括TCP/IP協議,DNS域名解析等等。

安全管理,新操作系統必須足夠安全,各種加密、解密算法等等

等等,所以,這些問題都要操作系統解決。

7.操作系統的未來

通過上面的介紹,可以看到新操作系統的複雜,但是這並不代表我們毫無作為。相反,我們正在進入一個新的“時代”。

具體的說:Windows基本上已經發展到極限了,該有的都有了,所以,有人說Windows到win10基本上,在往後都是小打小鬧了。因為沒有什麼功能可以增加了。

而蘋果MacOS,其市場也在持續萎縮。

接下來,唯一的戰場就是Android。Android雖然是谷歌控制的,但是他是開源的。

這意味著任何人都可以獲取其源代碼,由此,我們進入一個萬物互聯的時代。我們唯一的擔心就是哪一天谷歌會突然不再開源了。這個擔心確實存在,特別是中美貿易戰,萬一美國對華禁運怎麼辦?所以,像華為這樣的大公司,其實也在研發自己的操作系統作為備份。這裡有2個要點:華為的操作系統一定是基於Android的,華為的操作系統僅做備份用。

眾觀歷史,除了Windows,我們可以看到:

Unix衍生出Linux, Linux衍生出Android,

Unix衍生出MacOS,MacOS衍生出iPhone操作系統。

Linux衍生出 紅帽子,CentOS, 國產深度操作系統Deepin

也就是,基本上後一個操作系統都是在前一個操作系統上開發的。不會全新開發。

所以,如果哪一天谷歌對中國禁運,那麼,華為包括小米就可以再Android的基礎上開發自己的操作系統。而且,以“華為+小米+Oppo+Vivo+聯想” 5家手機差不多佔據全球手機的75%的份額,如果5家聯手,就算谷歌都得敬讓我們三分。

否則,你谷歌開發了一個新功能,結果全球75%的手機都不支持,那其實就是沒用。

這也想就是:真理其實掌握在強權的手裡。

7.現在你知道開發一個操作系統複雜了嗎

如果有人問:開發一個操作系統簡單嗎?現在你明白了嗎?可以做一個簡單類比。這就像問:生一個孩子簡單嗎?生一個還是當然簡單了:當精子與卵子結合的瞬間,一個生命體就誕生了,再等10個月孩子就能出生了。所以,你說生一個孩子困不困呢?

但是,生下來並不代表能活下來,活下來並不代表那能活的好?你要給他吃,給他喝,生病給他治療,要讓他念書,讓他學習。。。所以,生孩子簡單,但是成為一個有用的人難,想成為愛因斯坦那樣的天才,難上加難,開發操作系統也是如此,開發操作系統簡單,開發一個人見人愛的操作系統,難上加難。

相關推薦

推薦中...