最近開始學習linux 核心相關的知識,一直想對linux核心做些了解,但是時間上的問題,雖然學習了三年的linux,也玩了幾乎四年的linux系統,但是從來沒有對linux 核心做乙個詳細的了解,最近抽出課餘時間對《linux核心設計與實現》進行了第一遍閱讀,相關的筆記如下,如果覺得不錯會做第二遍閱讀。
1、關於linux核心原始碼的獲取。
由於linux是乙個開源的專案,所以其原始碼是很好獲取的,幾乎所以的原始碼在這個**上都可以獲得(你可以選擇http或者ftp方式來獲取。
2、對核心的配置或者移植。
這對於乙個linux使用者來說很簡單,進入核心原始碼使用make工具就可以搞定,當然不同的系統可能會有錯誤,但是這些都可以找到解決辦法。以下是幾種編譯方法:
a、make config 使命令列的方式進行核心配置。
b、make xconfig 、make menuconfig 使用圖形介面的方式配置核心。
c、make命令。
使用這些命令就可以完成核心的編譯,但是如果你要進行改工具鏈或者什麼的就得修改配置檔案,所以的這些都是在makefile作用下的功能,對於makefile 的了解在這裡不描述。
3、了解核心開發與普通程式的開發的不同點。
a、核心編譯時不能訪問c庫,因為核心中根本就沒有libc庫。
b、編寫程式必須使用gun c(開源的c**)。
c、核心缺少記憶體保護機制,所以在編寫核心**時,必須嚴格保證不能出現記憶體錯誤,否則會導致核心出現無法估計的錯誤。
d、核心提供的浮點數運算並不完整,為了減少不必要的麻煩盡量少使用浮點運算。
e、核心棧有限。所以在編寫程式的時候時刻想到自己的棧是否有足夠的空間。
f、linux是真正多處理器作業系統,對於核心必須支援非同步中斷、搶占和smp功能(在liunx核心中經常使用的一種鎖機制就是自旋鎖)。
g、由於linux更很多時候用在了其他的環境,如嵌入式方面等,要充分考慮其可移植型(對齊方式,位元組序的方面)。
支援的gun c特性:
1、內聯函式(inline)
提高執行速度,但是會占用更多的儲存空間。
2、內聯彙編
使用機器語言直接操作硬體,並且其執行速度也就更快。
3、分支宣告
使用了likely或者unlikly函式。
第二章 核心C
如果在一條語句中宣告和初始化了多個變數,那麼所有的變數都具有相同的資料型別 int x 10,y 20 變數使用前需要賦初始值 宣告不同型別的變數需要單獨的語句。變數的初始化 變數時類或者結構中的字段,如果沒有顯式的初始化,建立這些變數時,其預設值就是0.方法的區域性變數必須在 中顯示的初始化,之後...
Python核心教程 第二章
輸出hello world 核心筆記一 在互動式直譯器中顯示變數的值 通常當你想看變數內容時,你會在 中使用print 語句輸出。不過在互動式直譯器中,你可以用 print 語句顯示變數的字串表示,或者僅使用變數名檢視該變數的原始值。在下面的例子中,我們把乙個字串賦值給變數mystring,先用pr...
Linux第二章作業
答 不是一定要有很高的配置才能安裝linux 因為linux系統是非常穩定和高效的,對電腦硬體配置要求很低,這正是linux系統的優勢所在,不同的linux系統版本要求略有不同,但是大體上在同乙個配置等級內,而且當下主流的配置都可以輕鬆執行linux系統,對於規模很小的主機系統大致的需要有 cpu ...