linux內核學習
⑴ 怎樣學習linux內核
先練基本功,《C語言》,《數據結構》,《計算機操作系統》,《計算機體系結構》,這幾門課程是必須的。
《Linux內核源碼分析》+Linux內核代碼。對著書本,邊看邊理解,對照實際內核代碼,驗證一次,比如用Source Insight,很方便看調用的邏輯關系。
上兩點是理論加理解,對工作及學習有很大幫助。實際操作起來,還是建議從編譯開始,驅動入手,再往子系統,框架走比較穩妥。
⑵ 對linux內核感興趣,要學哪些東西
如果只是研讀linux 內核的話,C語言基礎一定要好,匯編是不要求的,特別是對指針和結構體的理解一定要非常的透徹,不然你肯定暈,還有就是數據結構了,應為內核中涉及很多的內存操作,都是指針和鏈表的操作,對數據結構不熟悉的話很麻煩,如果你以前自己寫過程序的話,不論是什麼語言的,理解起來就比較容易。
不過等你看完了linux內核的代碼,你就會發現自己已經完全不是一開始的那個層次了,你會發現寫linux內核的那些開發員才是真正的大神級別的! 那代碼寫的,堪稱藝術
⑶ Linux內核應該怎麼去學習
學嵌入式Linux要先學以下幾點:
1.C語言。要有C語言的基礎,當然越熟練越好,不熟也沒關系,具備基本技能就可以:比如寫一個數組排序、輸入數字求和什麼的。C語言的學習就是多些多練。
2.Linux基礎
Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell、 Makefile腳本編寫等知識,嵌入式開發環境的搭建。
3.Linux系統編程
重點學習標准I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。
4.Linux網路編程
計算機網路在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網路發展、TCP/IP協議、socket編程、TCP網路編程、UDP網路編程、Web編程開發等方面入手,全面了解Linux網路應用程序開發。重點學習網路編程相關API,熟練掌握TCP協議伺服器的編程方法和並發伺服器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網路通信系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。
5.數據結構與演算法
數據結構及演算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據結構與演算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序演算法等應用及其C語言實現過程。
6.Cortex A8 、Linux 平台開發
通過基於ARM Cortex-A8處理s5pv210了解晶元手冊的基本閱讀技巧,掌握s5pv210系統資源、時鍾控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平台搭建做好准備。Linux平台包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平台上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時了解Android操作系統開發流程。Android系統是基於Linux平台的開源操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成,是首個為移動終端打造的真正開放和完整的移動軟體,目前它的應用不再局限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。
7.驅動開發
驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的介面,掌握系統對設備的並發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字元設備、塊設備、網路設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。
⑷ 如何學習linux內核
Linux是最受歡迎的自由電腦操作系統內核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。Linux最早是由芬蘭黑客LinusTorvalds為嘗試在英特爾x86架構上提供自由免費的類Unix操作系統而開發的。該計劃開始於1991年,在計劃的早期有一些Minix黑客提供了協助,而今天全球無數程序員正在為該計劃無償提供幫助。技術上說Linux是一個內核。「內核」指的是一個提供硬體抽象層、磁碟及文件系統控制、多任務等功能的系統軟體。一個內核不是一套完整的操作系統。一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。
組成進程管理(processmanagement)、1
定時器(timer)、2
中斷管理(interruptmanagement)、3
內存管理(memorymanagement)、4
模塊管理(molemanagement)、5
虛擬文件系統介面(VFSlayer)、6
文件系統(filesystem)、7
設備驅動程序(devicedriver)、8
進程間通信(inter-processcommunication)、9
網路管理(networkmanagement)、10
系統啟動(systeminit)等操作系統功能的實現。想學先買有關的書,再請教微機老師或專業人士。
⑸ linux內核好學嗎
任何事情都不是那麼好學的,就像小學到大學這期間所有要學習的東西,當你在小學一年級就知道到大學畢業,你要學習的所有的課程和內容時,估計你一年級就開始退縮了。linux內核學習也一個道理,你只要剛開始入門了,後面的學習就是一個漸進的過程。
http://bbs.chinaunix.net/forum.php?mod=forumdisplay&fid=224&filter=typeid&typeid=432
這是chinaunix的內核入門的論壇,每天關注一會,等一段時間後,你肯定有所收獲的。
⑹ 學習linux內核,請推薦幾本書及順序,謝謝。
linux內核最經典的書是《深入理解Linux內核》,這本書內核編程看;如果你是搞UNIX/Linux環境下的應用程序編程,那麼就看《UNIX環境高級編程》;如果做Linux下設備驅動程序開發,就看《Linux設備驅動》(第三版)。這幾本都是老外寫的,都是很經典的書。
⑺ linux內核要學多久才能達到參與內核開發的程度,怎樣學才好
至於要學多久,那要看你學習的進度和理解能力了!理解能強,學習進度就快,那麼達到參與內核開發的程度也就快。據我所知,中國(包括台灣)好像只有一個人貢獻了3000行的Linux內核代碼,結果也沒有被採用!只是中國人的一個悲哀!視乎中國人不善於、不熱心於這方面,反而熱心於去拿別人做好的!
以上都是一家之言!
⑻ 如何學習Linux內核
想要學好Linux,需要具備以下能力:
1. 基本功要扎實
學習任何一種語言,必備的基本功是必須要有的,一方面可以提高效率,另一方面可以拓寬思路。
對於Linux基本知識的學習,對一些初學者來說是枯燥乏味的,可以通過理解再背誦的方式先進行代碼及語法的學習,然後進行實踐操作,必須手動輸入命令行,不要藉助工具,這樣可以更快速有效的掌握Linux。
2. 學以致用
Linux學習的目的是應用,Linux基本知識是一些零散的技術,當沒有應用在項目上時,我們無法理解他的真實價值,所以打好基本功之後,最緊迫的是多做幾個完整的項目,剛開始可以是功能簡單的項目,之後可以選擇稍微復雜的項目,勤於動手,敢於實踐,一定能學好Linux。
3. 學會使用Linux聯機幫助
任何一種教材都不會完全講述Linux知識,一般講的都是比較常用的或者是比較有代表性的知識,但是,我們在項目應用中往往有些功能的實現是需要一些生僻知識和技能的,那麼,如何查找我們所需的知識呢,推薦查閱Linux幫助文檔,主流的Linux都自帶詳細的幫助文檔,很方便解決問題!
4. 在網上找資源
在Linux的學習和應用中,難免會遇到一些沒有思路、不知道如何解決的問題,這時就要藉助網路力量,可以通過搜索引擎搜索查找,也可以咨詢資深技術人員,最終實現問題的解決,這是Linux知識積累的一個重要的途徑!
5. 查閱英文技術文檔
如果想深入學習Linux,查閱英文技術文檔是十分必要的,往往最新的技術都是採用英文文檔的方式發布的,而且更全面,因此,對於Linux人員來說,多看一些Linux技術文檔,對於掌握前沿技術和加深知識是十分有必要的!
⑼ 如何開始學習Linux內核
1.先練基本功,《C語言》,《數據結構》,《計算機操作系統》,《計算機體系結構》,這幾門課程是必須的。
2.《Linux內核源碼分析》+Linux內核代碼。對著書本,邊看邊理解,對照實際內核代碼,驗證一次,比如用Source Insight,很方便看調用的邏輯關系。
3.上兩點是理論加理解,對工作及學習有很大幫助。實際操作起來,還是建議從編譯開始,驅動入手,再往子系統,框架走比較穩妥。
了解更多開源相關,去LUPA社區看看吧。
⑽ linux內核怎麼學習
1 學習一些操作系統的理論知識,一些概念。比如:進程,內存管理,文件系統等等。關於這一方面的書籍太多了,自己找一本就行了
2 學習x86匯編,雖然linux用的是AT&T匯編,但二者只是格式不同而已。而且學習x86匯編有助於了解x86系統結構。書籍推薦王爽的《匯編語言》 ,我學的時候用的不是這個,後面看到這本書,才覺得自己做了「苦功了」。學完大部分匯編指令時,找些匯編程序讀讀,熟悉這些指令的用法。不需要有寫匯編程序的能力,能讀就行了,當然會寫更好
3 趙炯的《Linux內核0.11完全注釋》。這個linux內核版本低,作者也講得很詳細。不過關於x86體系的那一部分,作者講得很繁瑣,這一部分一定要大體看懂,那後面章節的內容就沒有多大的問題了。我先把書通看了一遍,用了1個月的時間。後來,再返回來一個一個研究,用了2個月。
之所以看這本書,是讓自己對內核有個實質的感受,不僅僅只是理論上的東西。
4 毛德操的《linux內核情景分析》。linux內核版本2.4.0,這本書很厚,上下兩冊。我通讀一遍,用了2個月時間。後來,再返回來一個一個研究,現在已用了2個月,正在研究中。。。。就我個人覺得,linux內核最難的是內存管理,這2個月我就只大體搞清內存頁面的周轉,但搞清了這個,就會對內核的整體結構有個大致的了解,因為你已經清楚了用戶進程和內核的其它部分是怎樣使用內存頁面的。
5 學習linux內核最需要的是堅持和思考。這是一個很長的過程,也許你會發現學了linux內核,並不會給你帶來什麼,我現在就是這樣覺得的,感覺自己什麼都不會做,真希望有人能我一些建議!不過學習學習也是有好處的,比如看了趙炯的《Linux內核0.11完全注釋》後,你再去看UCOS-II,會感覺那太容易了!也許學習linux內核會對將來的工作有所幫助吧!