Linux核心設計與實現讀書筆記 1

2021-04-13 03:12:20 字數 1085 閱讀 3325

我現在要做的科研專案涉及到核心程式設計的知識,所以在學校的圖書館借了一本《linux核心設計與實現》(英文名:linux kernel development),打算通過這本書來了解一下linux核心各部分的原理。我選擇這本書的原因很簡單-薄。全書只有二百多頁,但內容還是很全面的。翻譯質量還可以,譯者還在文中加了自己的解釋。看譯者序中說這本書適合核心初學者,看過後對核心各個核心子系統有個整體把握。這很好,符合我的要求,《understand linux kernel》實在太厚了,太細了,有時間再看吧。

今天讀了第一章 - linux核心簡介。收穫如下:

1、處理器在任何指定時間點上的活動範圍可以概括為下列三者之一:

•  執行於核心空間,處於程序上下文,代表某個特定的程序執行。

•  執行於核心空間,處於中斷上下文,與任何程序無關,處理某個特定的中斷。

•  執行於使用者空間,執行使用者程序。

2、linux核心和傳統unix核心特點的比較

•  linux支援動態載入核心模組。

•  linux支援對稱多處理(**p)機制

•  linux核心可以搶占。

•  linux核心並不區分執行緒和其他的一般程序。

3、linux核心程式設計與使用者空間內應用程式開發的差異

•  linux核心程式設計時不能訪問c庫。

•  linux核心程式設計時必須使用gnu c。

•  linux核心程式設計時缺乏像使用者空間那樣的記憶體保護機制。

•  linux核心程式設計時浮點數很難使用。

•  核心只有乙個很小的定長堆疊。

•  由於核心支援非同步中斷、搶占式和**p,因此必須時刻注意同步和併發。

•  要考慮可移植性的重要性。

4、likely()和unlikely()

對於條件選擇語句,gcc內建了一條指令用於優化,在乙個條件經常出現(likely()),或者該條件很少出現時(unlikely()),編譯器可以根據這條指令對條件分支選擇進行優化。核心將該指令封裝成了巨集。

在你想要對某個條件選擇語句進行優化之前,一定要搞清楚其中是不是存在這麼乙個條件,在絕大多數情況下都會成立。如果你的判斷正確,確實是這個條件佔壓倒性的地位,那麼效能會得到提公升,如果你搞錯了,效能反而會下降。

linux核心設計與實現讀書筆記 記憶體管理

一 頁 記憶體管理的基本單位 頁。核心中用struct page表示物理頁,位於,屬性包括flag頁狀態 count頁的引用計數,virtual頁虛擬位址。目的在於描述物理記憶體本身而非其中的資料。1 獲得頁 核心 alloc pages gft t gft mask,order 連續分配2n個連續...

《Linux核心設計與實現》讀書筆記 程序排程

程序排程程式負責決定將哪個程序投入執行,何時執行以及執行多長時間。在執行態程序之間分配有限的處理器時間資源。多工系統分為搶占式和非搶占式。linux使用搶占式。大部分現代系統都是搶占式 io消耗型 處理器消耗型程序 把大多時間用於執行 的程序。程序優先順序 nice值 20 19,值越大優先順序越低...

linux核心設計與實現讀書筆記 程序的位址空間

記憶體描述符 描述程序的位址空間,mm struct定義在中,包括記憶體物件的位址 使用該位址的程序 頁表等資訊,自身鏈結在雙向鍊錶中。首元素init mm記憶體描述符,代表init程序的位址空間,操作時使用mmlist lock鎖防治併發。task struct結構體mm存放記憶體描述符。分配記憶...