今年貌似是國產操作系統的“爆發”之年,除了老牌的銀河麒麟、中標麒麟、深度之外,中興近日發布了自己的“新支點”,華為也公開了自研的操作系統“鴻蒙”。縱觀這些國產操作系統,大多基于開源的Linux。那么為什么我們不可以從0開始打造一款不同于windows、Linux和macOS的桌面系統,這樣做到底有多難?
要想真真正正的從0開始設計一款操作系統,至少要解決幾大問題:
技術問題:處理器的管理——進程的操作和處理器調度
操作系統的核心功能之一是分配和管理CPU的計算資源,決定由哪些核心執行哪些程序的代碼。比如我們在使用個人4核CPU的電腦的時候,可以一邊用chrome瀏覽器上網、一邊用網易云聽著音樂、一邊用迅雷下載著文件、一邊用視頻編輯軟件渲染自己編輯好的小視頻,另外后臺里還跑著上百個系統相關的服務程序。
然而每個CPU的核心在某一時刻只能執行1個進程的代碼,之所以4個核心能同時做這些事情,就是操作系統的調度算法在進行進程的操作和處理器調度。操作系統可以非常迅速的在這些任務之間來回切換,以達到最優化使用CPU計算資源,最大化并發執行程序代碼。調度算法與操作系統的使用場景緊密聯系,具體的設計可以千變萬化,是決定操作系統工作效率的核心技術。
技術問題:存儲器的管理——協調管理多種不同速度的存儲器
操作系統的核心功能之二是如何配合程序執行,使數據和程序代碼以最高的效率在CPU寄存器、內存、磁盤之間傳輸。寄存器、內存、磁盤都叫存儲器,它們的容量差別很大、速度差別也很大。操作系統要協調這些速度不同的存儲器盡可能的高效率工作,不讓速度快的“閑死”、“撐死”,不讓速度慢的“忙死”、“餓死”,所以要綜合運用分區、段式、頁式等各種存儲管理技術以及緩存技術來解決這些問題。
技術問題:文件管理、系統安全性、設備管理……
除了上面兩個核心的功能,操作系統還要解決文件以什么方式存放在硬盤上、如何管理、如何實現高速檢索、如何實現海量文件存儲等等;操作系統的安全方面要考慮如何控制用戶權限、賬戶管理策略、密碼管理策略、漏洞風險控制等等;設備管理方面要考慮如何更好的支持常用設備,提高兼容性……
非技術問題:生態
一款新操作系統,如果沒有應用程序支持,那就只能是個操作系統,不會有人去用。所以操作系統在技術上“誕生”之后,面臨的更大的問題是生態問題,培養一個良好的生態并不是2-3年就可以做到的。反觀Android,從誕生到現在也不敢說生態成熟完整。建設一個生態的難度要大于所有的技術上遇到的問題。
總之,一個操作系統的誕生,并非我們想象中那樣寫寫代碼、搞搞開發就能輕松完成的。它是許許多多計算機科學家的心血和智慧的結晶,借鑒現有成熟的技術,是滿足我們現實中對國產自主操作系統迫切需求的一個非常好的路子。從0開始做操作系統不是沒有可能,而是沒有必要。
舉報/反饋