作業系統核心的一些事

2021-08-25 21:29:48 字數 1037 閱讀 9560

一.總的來講,作業系統只要能實現以下兩點就可以了:

1.時間的假象和空間的假象

時間假象的作用是實現了多程序/多執行緒;空間假象的作用是實現了虛擬記憶體。無疑,這兩點是現代作業系統的基石。

2.和硬體介面以及和使用者態的介面

從硬體那裡接收資訊,這個用中斷實現,和硬體互相讀寫,這個用基本io實現;從使用者接收請求,這個用系統呼叫...向使用者傳送資訊,這個用訊號...。無疑,這樣就在介面層次滿足了上層使用者和底層硬體的要求,無疑,unix在這一點上是成功的(訊號,ipc,posix...)。

二.大核心和微核心

如果我們把作業系統核心在其生命週期的前期按照時間分割,我們把它分為原始碼階段和二進位制階段,大核心和微核心的區分是二進位制階段的區分。我們都知道,linux是大核心,然而為何大而不亂呢?實際上看看它的原始碼就明白了,它的原始碼組織非常好,核心檔案不到100個,其它的都是驅動或者體系結構相關的**。畢竟,開發者知道,對於二進位制檔案,人是看不懂的,人所看的是原始碼,將二進位制檔案分開,無疑會增加維護的複雜性,更何況,將問題控制在原始碼階段就節省了很多除錯時間。

三.裝置驅動開發

1.閱讀datasheet,編寫io、中斷例程

2.和作業系統核心介面,也就是插入核心最低端

3.和使用者態介面,也就是在最上端匯出乙個使用者介面,比如ioctl

4.編寫使用者態demo和工具程序,呼叫第3步的介面

5.試用,除錯打包

6.總結,層次結構-從上到下:終端使用者-應用程式設計師-系統程式設計師-驅動程式員-硬體工程師

四.到底應不應該在核心中解決fork

fork臭名昭著,一堆看似亂碼的字元就能耗盡你的cpu:.();.。如果想在核心解決它,那是很簡單的,那就是控制task_struct的層數,我們知道linux程序是分層樹形組織的,如果限制層數最多為5層,那麼該最多也就是炸五次就無法發揮作用了,然而這卻不是好方法,因為這會損害那些正好需要6層或以上的正常程式的利益。其實還有很多解決辦法:1.利用cpu組排程,限制它們可以使用的資源;2.修改oom killer的核心演算法,優先砍掉那些過於長,然而卻很瘦的樹枝,這也符合園藝工人的操作方式,因為這種枝丫會帶走過多的養分!

一些作業系統和網路

日誌檔案系統 只有當日誌項已經寫入磁碟,不同的操作才可以進行,所有的操作完成後,擦除日誌項。如果系統這時崩潰,系統恢復後,檔案系統可以通過檢查日誌檔案來檢視是不是有未完成的操作。檢查磁軌是否有壞道等,可以用兩張表分別記錄是否以用和空閒,然後對比,結果一樣則正常,否則是壞道。psw 程式狀態暫存器。t...

經營作業系統的一些思路

最近國內作業系統行業比較活躍,10月17日到10月18日是第二屆開源作業系統技術年會。各路好手你方唱罷我登場,好不熱鬧。我有幸了解了一下,的確是一屆盛會。個人關心的並不是作業系統本身的技術,自己雖然是個做技術的。我始終放在作業系統的發展上,尤其是商業發展。放眼國內,作業系統都是國外的在搶灘登陸。國內...

區分作業系統的一些巨集

編碼的時候經常要用到條件編譯,每次都到網上去查比較浪費時間,今天總結一下以備後用 編譯器 ifdef gnuc if gnuc 3 gcc3.0以上 ifdef msc ver 非vc編譯器很多地方也有定義 if msc ver 1000 vc 4.0以上 if msc ver 1100 vc 5....