Linux内核源代码情景分析(linux 内核源代码)
如何查看linux內核源代碼?
一般在Linux系統中的/usr/src/linux*.*.*(*.*.*代表的是內核版本,如2.4.23)目錄下就是內核源代碼(如果沒有類似目錄,是因為還沒安裝內核代碼)。另外還可從互連網上免費下載。注意,不要總到http://www.kernel.org/去下載,最好使用它的鏡像站點下載。請在http://www.kernel.org/mirrors/里找一個合適的下載點,再到pub/linux/kernel/v2.6/目錄下去下載2.4.23內核。
代碼目錄結構
在閱讀源碼之前,還應知道Linux內核源碼的整體分布情況。現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序和網絡等組成。Linux內核源碼的各個目錄大致與此相對應,其組成如下(假設相對于Linux-2.4.23目錄):
1.arch目錄包括了所有和體系結構相關的核心代碼。它下面的每一個子目錄都代表一種Linux支持的體系結構,例如i386就是Intel CPU及與之相兼容體系結構的子目錄。PC機一般都基于此目錄。
2.include目錄包括編譯核心所需要的大部分頭文件,例如與平臺無關的頭文件在include/linux子目錄下。
3.init目錄包含核心的初始化代碼(不是系統的引導代碼),有main.c和Version.c兩個文件。這是研究核心如何工作的好起點。
4.mm目錄包含了所有的內存管理代碼。與具體硬件體系結構相關的內存管理代碼位于arch/*/mm目錄下。
5.drivers目錄中是系統中所有的設備驅動程序。它又進一步劃分成幾類設備驅動,每一種有對應的子目錄,如聲卡的驅動對應于drivers/sound。
6.ipc目錄包含了核心進程間的通信代碼。
7.modules目錄存放了已建好的、可動態加載的模塊。
8.fs目錄存放Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext3文件系統對應的就是ext3子目錄。
Kernel內核管理的核心代碼放在這里。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
9.net目錄里是核心的網絡部分代碼,其每個子目錄對應于網絡的一個方面。
10.lib目錄包含了核心的庫代碼,不過與處理器結構相關的庫代碼被放在arch/*/lib/目錄下。
11.scripts目錄包含用于配置核心的腳本文件。
12.documentation目錄下是一些文檔,是對每個目錄作用的具體說明。
一般在每個目錄下都有一個.depend文件和一個Makefile文件。這兩個文件都是編譯時使用的輔助文件。仔細閱讀這兩個文件對弄清各個文件之間的聯系和依托關系很有幫助。另外有的目錄下還有Readme文件,它是對該目錄下文件的一些說明,同樣有利于對內核源碼的理解。
在閱讀方法或順序上,有縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是按模塊進行。它們經常結合在一起進行。對于Linux啟動的代碼可順著Linux的啟動順序一步步來閱讀;對于像內存管理部分,可以單獨拿出來進行閱讀分析。實際上這是一個反復的過程,不可能讀一遍就理解。
本人想學Linux內核,望高手有經驗的人士推薦點書?
《內核源代碼情景分析》,毛德操,胡希明著,這本書講的比較深,公認的經典。
我感覺比較淺些的 《linux內核源代碼》陳莉君寫的那本,當然還有別的。
看內核以前應該有些操作系統的知識,x86硬件也要有一定的了解,最好再有些Linux應用程序的了解,這樣看起來更容易些,個人感覺。
linux有2億代碼嗎
代碼一般用行數來表示,目前linux內核大約有不到3000萬行代碼
Android內核源碼開源嗎?
android (安卓)是完全開源的。
Android是一種基于Linux的自由及開放源代碼的操作系統。主要使用于移動設備,如智能手機和平板電腦,由Google(谷歌)公司和開放手機聯盟領導及開發。
尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。
2007年11月,Google與84家硬件制造商、軟件開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨后Google以Apache開源許可證的授權方式,發布了Android的源代碼。
怎么修改系統內核,比如linux的?
修改內核源碼么?首先要獲得一份源碼,然后修改需要部分,之后編譯生成內核映像,修改系統引導至新內核。
總結
以上是生活随笔為你收集整理的Linux内核源代码情景分析(linux 内核源代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中public private_
- 下一篇: java正则表达式验证密码_最新密码验证