1. 程式人生 > >Linux核心設計與實現總結。

Linux核心設計與實現總結。

1.程序管理。

        本章主要是介紹程序的一個靜態的狀態,包括系統如何組織程序。建立,啟動,到最後死亡的一個概念性認識,沒有更加深刻的知識。

2.程序排程。

        本章比較重要。

           1.  搶佔式排程策略。

           2. 倆程序間上下文切換  有倆函式 switch_mm 和 switch_to倆函式完成此功能。(具體細節需要閱讀其他書籍)

 3.系統呼叫。

           1.系統呼叫處於程序上下文(此概念很模糊,大概的意思是說,核心代表程序在執行

           2.陷入核心 是一個重要的概念(如何重要,沒有講,知識說linux陷入核心特別快。)

  4.中斷和中斷處理,以及下半部。(驅動程式一般分為上半部和下半部,講得很淺薄

             1  .中斷 不會被當前中斷  搶佔(原因不詳)

             2. 軟中斷不會被所有軟中斷搶佔(原因不詳)

  5.核心同步(講得很淺薄

              1.需要保護什麼很重要也很難。一條規則是幾乎所有的核心資料結構都需要加鎖。【:只要別的程式碼能訪問到】

              2.死鎖。(悲催 十字路口車輛問題,都在等其他車,結果兩輛車都走不動)

  6.核心同步方法(想到特殊的volatile修飾符)

             1.原子操作

             2.順序性

             3.自旋鎖

             4.訊號量

             5.完成變數

             6.禁止搶佔 來保持高效,(有時候不需要自旋鎖(註解:本身會禁止搶佔),只需要禁止搶佔就夠了)

             7.順序和屏障

 7.記憶體管理

             1.MMU以page為單位進行管理

             2.三種區 DMA區(記憶體地址固定的硬體使用),普通區,高階記憶體(無法訪問)

8.塊I/O層,就是說 塊裝置

            1.塊和扇區。塊必須是扇區的大小(512Byte)的整數倍,但是小於頁面大小。

             2.用bio來管理。

             3.電梯排程程式

9.程序地址空間

            1.程式碼段,資料段(已經初始化),未初始化的全域性變數(0頁)。

             2.程序的使用者空間棧

            3.各種庫的記憶體對映

            4.記憶體對映檔案

            5.共享記憶體段

            6.malloc分配的匿名記憶體對映。

10.頁快取記憶體和頁回寫

            1.主要是快取磁碟的。臨時區域性原理。

            2.同時也可以快取 磁碟本身的IO緩衝區。

11.模組(未閱讀)