歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

Linux內核分析第一二章讀書筆記

linux讀書筆記(1,2章)

標簽(空格分隔): 20135328陳都


第一章 Linux內核簡介

Unix的歷史

Unix 雖然已經使用了40年,但計算機科學家仍然認為它是現存操作系統中最強大和最優秀的系統。從1969 年誕生以來,由Dennis
Ritchie 和Ken Thompson 的靈感火花點亮的這個Unix產物已經成為一種傳奇,它歷經了時間的考驗依然聲名不墜。

Multics 項目被終止後,貝爾實驗室計算科學研究中心的人們發現自己處於一個沒有交互式操作系統可用的境地。在這種情況下,1969年的夏天,貝爾實驗室的程序員們設計了一個文件系統原型,而這個原型最終發展橫化成了Unix.

操作系統和內核簡介

由於一些現行商業操作系統日趨龐雜及其設計上的缺陸,操作系統的精確定義並沒有一個統一的標准。許多用戶把他們在顯示器屏幕上看到的東西理所當然地認為就是操作系統。通常,當然在本書中也這麼認為,操作系統是指在整個系統中負責完成最基本功能和系統管理的那些部分。這些部分應該包括內核設備驅動程序啟動引導程序命令行Shell或者其他種類的用戶界面、基本的文件管理工具和系統工具。

系統其他部分必須依靠內接這部分軟件提供的服務,像管理硬件設備、分配系統資源等。內核有時候被稱作是管理者或者是操作系統核心。通常一個內核由負責響應中斷的中斷服務程序,負責管理多個進程從而分享處理器時間的調度程序,負責管理進程地址空間的內存管理程序和網絡、進程間通信等系統服務程序共同組成。

第二章 從內核出發

獲取內核源代碼

通過Git這個分布式的版本控制系統來進行:

  • 獲取最新提交到版本樹的一個副本
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
  • 下載代碼後,更新自己的分支到最新分支
    git pull

安裝內核源代碼

壓縮形式為bzip2:tar xvjf linux-x.y.z.tar.bz2
壓縮形式為zip:tar xvzf linux-x.y.z.tar.gz

補丁:從內部源碼樹開始,運行:patch - pl< .. /patch -x .y.z
一般來說,一個給定版本的內核補丁總是打在前一個版本上。


內核源碼結構

內核源碼樹由很多目錄組成,而大多數目錄叉包含更多的子目錄。源碼樹的根目錄及其子目錄如下表所示。
|目 錄 |描 述|
|:---:|:---:|
|arch |特定體系結構的代碼|
|block |塊設備I/O層|
|crypo| 加密API|
|Documentation |內核源碼文檔|
|drivers |設備驅動程序|
|firmware| 使用某些驅動程序而需要的設備固件|
|fs| VFS和各種文件系統|
|include| 內核頭文件|
|init| 內核引導和初始化|
|ipc| 進程間通信代碼|
|kernel| 像調度程序這樣的核心子系統|
|lib| 同樣內核函數|
|mm |內存管理子系統和VM|
|net |網絡子系統|
|samples |示例,示范代碼|
|scripts| 編譯內核所用的腳本|
|security| Linux 安全模塊|
|sound |語音子系統|
|usr |早期用戶空間代碼(所謂的initramfs)|
|tools| 在Linux開發中有用的工具|
|virt| 虛擬化基礎結構|

配置內核

內核提供了各種不同的工具來簡化內核配置。最簡單的一種是一個字符界面下的命令行工具:
$ make config

配置選項CONFlG_lKCONFIG_PROC把完整的壓縮過的內核配置文件存放在/proc/con且g.gz 下,這樣當你編譯一個新內棋的時候就可以方便地克隆當前的配置。如果你目前的內核已經啟用了此選項,就可以從/proc下復制出配置文件並且使用它來編譯一個新內核:
zcat /proc/con且.g.gz > .config
make oldconfig

  • config:用戶用來存放內核配置後結果的文件。
  • 可以配置的各種選項:用CONFIG_FEATURE形式表示,其前綴為CONFIG。
    一旦內核配置好了(不論你是如何配置的),就可以使用一個簡單的命令來編譯它了:
    $ make

安裝新內核

make modules_install
把所有已編譯的模塊安裝到正確的主目錄/lib/modules下

2.4 內核開發的特點
  最重要的差異包括以下幾種:

  • 內核編程時既不能訪問 C庫也不能訪問標准的 C頭文件。
  • 內核編程時缺乏像用戶空間那樣的內存保護機制。
  • 內核編程時難以執行浮點運算。
  • 內核給每個進程只有一個很小的定長堆錢。
  • 由於內核支持異步中斷、搶占和 SMP,因此必須時刻注意同步和並發。
    要考慮可移植性的重要性。

第 一章將帶我們從 Unix 的歷史視角來認識 Linux 內核與 Linux 操作系統的前世今生。今天Unix 系統業已憤化成一個具有相似應用程序編程接口(API),並且基於相似設計理念的操作 系統家族。但它又是一個別具特色的操作系統,從萌芽到現在已經有 40余年的歷史。若要了解 Linux,我們必須首先認識 Unix 系統。

小結

第二章主要介紹Linux內核的一些基本常識:從何處在取源碼,如何編譯它,又如何 安裝新內核。那麼,讓我們考察一下內核程序與用戶空間程序的差異,以及內核中所使用的通 用編程結構。雖然內核在很多方面有其獨特性,但從現在來看,它和其他大型軟件項目並無多大差別。

Copyright © Linux教程網 All Rights Reserved