閱讀linux源碼
⑴ 如何閱讀linux源代碼
用寫字板打開就可以自動識別UNIX系統的換行符號。一個不會使用基礎的編輯工具的新手,還是不要在源代碼上浪費時間了。有空先學點基礎編程吧~~~
⑵ linux閱讀源碼用什麼軟體
系統自帶有vi
⑶ 如何通過閱讀linux源代碼深入學習linux內存子系統
首先,對linux的內存要有整體認識:建議看《深入理解linux內核》,英文好的看原版,沒有完全理解不要急,畢竟操作系統沒有那麼容易學。
其次,導致linux內存管理機制復雜的原因在於Intel的體系結構不斷要向前兼容,導致段式管理等一些不易理解的概念產生。建議看《獨辟蹊徑品內核 linux內核源代碼導讀》的前部分,在硬體體系結構上理解linux內存管理的演化。
第三,閱讀源代碼:建議看《linux內核源代碼情景分析》。
⑷ 如何閱讀linux源碼
閱讀linux源代碼要掌握一定的386硬體知識,AT&T匯編語言結構,操作系統原理等等基礎知識。但是及時掌握這些知識讀懂源碼還是很困難的(當然掌握操作系統原理也是一件不容易的事情),建議你先去看一下u/cos源代碼,根據其源代碼試著自己給51單片機寫一個小的分時操作系統,移植到單片機上試試效果。然後再根據對u/cos理解自己寫一個自己的u/cos,並移植到arm7平台上,一步一步來。。。。。。總之linux操作系統是一個很復雜的軟體,它不僅僅要求你對大型軟體架構有很深入的認識,還要求你對硬體的操作非常熟悉,我們經常看到在linux系統中常常會有匯編語言與c語言的嵌套。閱讀linux源代碼不是一件容易的事情,要不斷的學習,讓我們一起來努力吧!
⑸ 如何閱讀linux的源代碼
1.精通C
2.懂匯編、計算機體系結構、操作系統原理
3.懂演算法和數據結構
4.找一本介紹linux源代碼的書看,按照書上的步驟做。
5.當然,你要有linux源代碼,並且盡可能多地閱讀相關文檔。
www.oldlinux.org上有一個《linux內核源代碼完全注釋》的電子文檔,是基於linux0.11版的內核注釋的。我承認,由於對C的一知半解,加上沒學過匯編和體系結構,演算法和數據結構也勉勉強強,雖然只有1萬行左右的代碼,還是沒能堅持把它看完。
要是你不喜歡看電子版的,該書已由機械工業出版社出版,你可以向出版社聯系購買。
⑹ 在Windows下如何閱讀Linux下的源代碼
windows下一般使用source insight來閱讀linux源碼。
Source Insight是一個面向項目開發的程序編輯器和代碼瀏覽器,它擁有內置的對C/C++, C#和Java等程序的分析。能分析源代碼並在工作的同時動態維護它自己的符號資料庫,並自動顯示有用的上下文信息。
⑺ Linux 平台下閱讀 Linux 內核源碼好用的工具有哪些
可以使用vim 我個人感覺如果你在linux系統下。基本上編碼或者閱讀文本都可以使用vim。太強大的一個編輯器了。
⑻ 如何閱讀Linux源代碼
用Linux的人越來越多了,閱讀Liux的人也越來越多了。但是,很多人下了很打的功夫,收益不是很大,下面給大家介紹一下,學Linux閱讀Linux內核源代碼的捷徑。 把內核源碼解壓後,你會發下,那麼多文件夾,早期版本的Linux文件夾還比較少,後來越來越多,這也造成了閱讀的困難,下面給大家簡單的介紹一下,希望對大家的學習,起作用,能做到事半功倍。
⑼ 怎麼開始讀Linux內核源碼
本人是一名 android display方面的工程師,結合實際工作經驗聊聊(觀點未必正確)
1. 准備工作:選擇什麼樣的版本,使用什麼樣的工具,這個需要考慮好。
如果是要參考書的話,kernel版本一般都應該選擇和書裡面同步的版本,不要去選擇最新的版本。因為最新的版本,各種改動比較多,反而對不上書了。
工具問題,你可以選擇windows下的source insight,也可以選擇linux下vim+ctags;
2. 第一遍瀏覽,我建議是先把kernel裡面的 start_kernel() 函數裡面的東西看清楚(不一定看明白),看看這個過程中,出現了什麼玩意,有哪些分支,並將分支初略的畫出一張圖來(當然,我自己並沒做到這一點,有點諷刺了)。
這裡面最重要的幾個地方,我個人認為,應該搞明白mole機制,它是怎麼通過編譯鏈接腳本放在特定的區域,然後系統起來後,又是如何去(按照什麼規則)去載入這些模塊;
應該搞明白sysfs系統,這個對於驅動和用戶空間的連接,有非常大的作用;
系統調用的open()應該走一遭,看看用戶空間到kernel之間參數是如何傳遞,又是怎麼通過vfs系統,把open的動作最終落實到某一個驅動的open()上去的;
對kernel啟動過程中,內存的分配演算法,是怎麼從夥伴演算法切換到最終的演算法上,也應該略有耳聞;對fork()函數的過程有所明白。
對kernel中基本的數據結構實現過程、鎖機制實現過程要有概念:
這一部分,總結起來,應該看的路線是:
start_kernel()
mole_init() 宏實現 // 看這個的時候,強烈建議,把makefile真正的意圖弄明白
open() 系統調用
fork() 系統調用
sysfs 框架實現
雙鏈表是如何實現的;
鎖最終是依靠什麼來保證的?(其實還是硬體來保證的)
對於數據結構和鎖這部分,就按照《Linux內核設計與實現》裡面的東西挨個挨個看。有興趣,自己也可以實現一個雙鏈表公共API,隨便哪個項目,一旦用上,直接拋進去,也未嘗不可。
第一遍瀏覽,竊以為,上面這幾部分看明白後,kernel的代碼對你依然很難,但已經不再有神秘的面紗。
後續,你想研究某個模塊,直接快速定位到那邊去就行。
3. 在完全用眼睛看完上面這部分內容後,kernel的路或許找到了,但是,萬里長征的第一步,並沒有邁出。這個時候,動手是很重要的了。
網上有各種方法,比如說,去kernel maillist裡面訂閱bug,然後自己試著解bug,此方法可取,而且是非常好。這里會遇到一個問題是,我們該怎麼調試?
有人是架各種虛擬機或者多台物理機一起開干,這個可以有。(但是本人動手能力確實有限,這個沒干成,本人是後面藉助了公司的開發板)
如果你也像我一樣,動手能力不足,如果你恰巧是手機或者類似手機開發公司的,你可以直接使用公司的開發機,通過串口log,將printk()的級別設置為3,把你需要的信息列印出來;
如果你是學生或者愛好者,可以花500左右人民幣,去淘寶上買一個開發板,也是帶串口的,所有的debug信息都是通過串口列印出來,保存到一個Log文件中,然後分析;
至於買什麼樣的板子,你可以隨便選擇,經典的s3c2440也行,高端點的樹莓派,或者全志什麼的,都可以。(不推薦全志,他們添加和修改硬體比較多,驅動也許不好搞)
4. 選擇你喜歡的模塊,進行深入研究,通過log列印,反復推敲,這個時候,bug是最好的導師。多關注kernel/Documents/ 目錄下的文檔。
你需要注意的是,一定要把該模塊無關的東西砍掉,否則,生命是有限的,而代碼是無限的。
最後一句話是,在用眼睛看完後,思考過後,還得動手,然後再思考。否則,只讀的話,僅能掃盲。