LKD2:

第二章 從內核出發
1. 內核就如性格怪異的猛獸,但並非不可馴服,讓我們來駕馭他
2. 不要和/usr/src/linux的目錄混在一起
3. 使用補丁:patch -p1<../patch-x.y.z
4. CONFIG_FEATURE來標識。二選一,或者三選一(yes,no,module)
5. make config, make menuconfig, make xconfig, make gconfig, make defconfig,然後就是make
6. make -jn, 或者用distcc,ccache等工具。
7. 配置grub或lilo等。
8. make modules_install
9. System.map的作用
------------------------------------------------------
與編譯應用程序的不同,導致內核成了一隻性格迥異的猛獸
1. 沒有C庫
 -先有雞還是先有蛋的問題
 -C庫太大且效率不能接受
 -printk
2. GNU C
 -inline 函數:static inline void dog()
 -內聯彙編
 -likely 和 unlikely
3. 缺乏內存保護機制
 -內核錯誤會導致oops
 -內存都不分頁
4. 浮點數很難使用
 -保存和恢復浮點寄存器外,還有...
 -別這麼做了,不要在內核中使用浮點數
5. 內核只有很小的定長棧
 -一般是2page
6. 注意併發和同步
 -(搶佔多任務,多處理器系統,中斷的異步性,內核可搶佔)
 -自旋鎖,信號量,原子操作
7. 可移植性
 -大部分C代碼應該與體系結構無關
 -字節序,對齊,不假定字長,頁面大小等。

8. 作者最後的總結
內核不外乎是一個程序,它與我們司空見慣的程序沒有多大區別,不必望而生畏:
直面它,呼喚她,擺佈她。
必須要全身心的投入,閱讀代碼,剖析代碼,並毫不氣餒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章