簡談操作系統

自打穀歌宣佈停止對華為海外版手機安卓系統的更新服務後,那麼對於操作系統的重要性相信很多人都有了初步認識。

那麼究竟什麼是操作系統?為什麼如此重要?研發自主操作系統到底難不難?我們今天簡單瞭解下。

操作系統實際上就是通過指令和設定邏輯對數字電路進行控制,以管理和完成應用軟件各項功能的機器主軟件系統。

操作系統在功能上體現在管理,實現各種功能上。這些管理和功能實現包括自身和應用軟件。

這些功能是如何實現的?就是指令。指令是一串控制數字電路功能的代碼。這些代碼就是0,1字符串,實際上最後被轉成物理的高低電平串來控制邏輯電路門,以求開啟電路功能。

這就要求,若想生產操作系統,你必須充分了解某個邏輯電路系統的指令集和這些電路的每一個功能原理,否則生產不了操作系統。這樣看,操作系統與硬件是互相配合的。

你也可以圍繞別人的硬件和指令集來生產自己的操作系統。但是會受硬件廠商制約。如果不想受制約,這時你需要訂製或自己開發硬件,設定指令集。

0,1指令串我們在使用和編程時不方便記憶和使用,這是個最底層的機器語言,所以我們發明了編譯軟件和高等指令(命令)。這些我們方便記憶和理解的命令通過各種關係組織到一起的集合,就是程序。這個過程就是編程。編程軟件是工具軟件,被創造出了很多種,由語言來區分。每種編程軟件又對應各個應用環境。比如系統開發編程,網站後臺編程,數據庫編程,遊戲編程等等。不同對象要選擇最適合的語言。

這樣看來,要想開發自己的操作系統,還要開發出對應的各類編程軟件,這又是個巨型工程。否則,你的系統出來了,很可能無應用軟件可用。

事實上一個操作系統並沒有那麼多數據,DOS只有幾M,而win10弄了10多G,功能和視圖肯定佔了一部分,但更多的還是人為。不大不慢你還會不停地升級硬件麼?安卓系統也是如此。蘋果系統就非常小且流暢,因為蘋果獨一家,沒必要自己難為自己。

至於多任務和單任務,則完全由硬件功能和性能決定,操作系統你可以設置成對硬件的任何操作。這就是我們所說的真8核和假8核或單線程和多線程。

一個完整的計算機必須包括顯示器,處理器,輸入輸出器,內存和永久外存。所有軟件數據必須被加載進內存才可以被處理器(CPU)所使用。這些內存中數據又被分成了指令和應用數據。這些指令和應用數據都是被自動區分的。

因此說生產自己的操作系統也不是太難。需要精通指令集,精通系統邏輯與架構,精通硬件功能,精通編譯,精通功能模塊,只要精通這5點,你就可以編寫自己的操作系統。

對一臺裸機在沒有任何軟件的情況下進行操作系統的編寫,這就是在發明操作系統。這些裸機是具備最原始功能的,即硬件的自我控制管理和引導功能。引導功能就是將固定位置的信息開機導入內存,第一個加載導入的是編譯器。編譯器的文件信息可以被直接使用,即就是0,1,按規則加載入內存,然後永久駐留。編譯器是後期所有數據流的關卡,相當於一個解壓縮軟件。然後就是依次導入各種操作系統的功能模塊。如果是簡單且追求速度的單片機或專用機系統,這些你也可以設置成直接二進制信息,不必進行編譯過程,但是這種設置對於複雜機器和系統,是不利於開發和維護的,所以設置成後期所有數據都要經過統一編譯。

編譯器載入結束後就是讀取預加載模塊清單,然後按這個清單將各個功能模塊載入內存。

當系統的各個功能模塊都依次被加載入內存後,實際上已經完成了系統的啟動。

當然你可以設計出各種加載方法和順序,並非是固定的,要根據適用情況來選擇設計加載方法和文件順序及進制屬性。

系統在開機時就是把存在永久存儲器上的系統相關數據依次加載到內存,因此編譯軟件非常重要,這個編譯器決定了上層軟件的內容。編譯器不同,上層內容肯定不同。比如機器語10110100可以用FF代表,也可以用AA表示。無論什麼,相同指令集的處理器最後譯成的二進制碼肯定相同。

先簡單說這麼多,實際上已經把製作操作系統的簡單思路說了。但是重點是操作系統的功能,安全與效率和針對此係統的應用軟件開發,這需要投入巨大的人力,財力和時間。

本文為原創,引用請說明出處。

時間有限,不足錯誤請諒解!

相關推薦

推薦中...