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.模組(未閱讀)