如果沒有學過os,先看《作業系統第3版》湯子贏:這本書雖然是通用教材,但是os思想演算法絕大多數和linux基本一致,也算必備基礎
然後看核心主線
啟動**看不懂說明彙編,保護模式沒有學好。其實不要花太多時間在啟動**上,作業系統的精髓還是在程序管理和記憶體管理上
推薦先看看《自己動手寫作業系統》和楊力祥的《linux核心藝術》
核心設計的東西太多,通過這兩本書,可以了解一些基礎知識。這兩本書相對來說內容量小一些。。。。
看完這個之後,就見仁見智了,不是靠看書能學會的,總之是!動手!。選定乙個方向或者做出某個東西等等
以下是我給你的建議,一定要給分啊。
1. 了解作業系統基本概念。如果不會,可以學習《作業系統:設計與實現》andrew s.tanenbaum 寫的那本。以minix為例子講解作業系統的概念。非常推薦。
2. 有了作業系統的基本概念以後,可以了解linux的機制了。推薦《linux核心設計與實現》robert love 寫的。這本書從概念上講解了linux有什麼,他們是怎麼執行的。這本書要反覆認真看透。
3. 有了linux核心的了解,還需要具體研究linux核心原始碼。最經典的就是《深入理解linux核心》daniel p. bovet 寫的。學習這本書的時候,要對著核心**看著學。這本書學起來相當費力了,那麼多多**要研究。不過這本書如果學明白了,恭喜你,linux核心你已經很熟悉了。
4. 如果要開發裝置驅動,可以學習《linux裝置驅動程式》o'reilly出版社的。這本作為驅動的入門是很好的資料。另外還有一本《精通linux 驅動程式開發》也是不錯的教材,可以參考著看。學習驅動,免不了要學習一些硬體的協議和資料,研究哪個就找到相應的硬體文件,把硬體的工作原理搞明白。這些就不細說了。
5. 網路部分,學些linux網路部分就學習《深入理解linux網路技術內幕》。這本書把linux的網路部分講的非常清晰透徹。但是通常不做這方面的工作研究,也不用研究這麼深,畢竟現在國內相關職位較少。
6. 現在linux相關的工作,多集中在一些嵌入式開發領域,arm,mips等,要學習以下這些體系架構的的資料,了解cpu的設計和工作方式。arm就看對應的晶元手冊,講的很細緻。mips就看 《see mips run》,有一二兩版,兩版內容有些差異,推薦都看。
7. 補充一點經驗。不要認為linux很龐大,很複雜,就覺的很難學。任何東西認真學下來都是能學會的,看你都恆心和毅力了。另外,不要走彎路,不要看市面上講什麼linux0.11的那些書,直接學你要學的東西。就像學c語言看什麼譚浩強一樣,彎路走了,力氣沒少花,還嚴重影響學習效果。
你問的核心,多給你說幾句應用程式設計,有時候經常會需要的:
1. 學習linux應用程式設計,建議看《unix環境高階程式設計》,把裡面的例子都做一遍,會對整個linux程式設計有系統都認識。
2. 針對linux,有本 《linux系統程式設計》,學完上一本,這本很快看一遍就懂了。主要是針對linux具體懂一些內容,講的挺全了,很實用。
3. linux網路程式設計,系統的學習一下《unix網路程式設計.卷1,套接字聯網api》,基本上網路應用相關的程式就都沒問題了。
這些內容,你分幾年時間,分步計畫學習,就會成為linux高手了。
Linux核心分析 Linux核心學習總結
這學期選了孟老師的 linux核心分析 這門課,在學習之前聽說這門課很難,通過也不是很容易,但我還是選了這門課。課程不容易學,含金量才會大,才會有收穫。現在,學習這門課已經兩個月了,我的收穫很大,特別是以前接觸 計算機組成原理 作業系統 這兩門課時遇到的很難理解的地方,通過孟老師的linux核心講解...
Linux 核心list head 學習
在linux核心中,提供了乙個用來建立雙向迴圈鍊錶的結構 list head。雖然linux核心是用c語言寫的,但是list head的引入,使得核心資料結構也可以擁有物件導向的特性,通過使用操作list head 的通用介面很容易實現 的重用,有點類似於c 的繼承機制 希望有機會寫篇文章研究一下c...
Linux 核心list head 學習
在linux核心中,提供了乙個用來建立雙向迴圈鍊錶的結構 list head。雖然linux核心是用c語言寫的,但是list head的引入,使得核心資料結構也可以擁有物件導向的特性,通過使用操作list head 的通用介面很容易實現 的重用,有點類似於c 的繼承機制 希望有機會寫篇文章研究一下c...