這是大半年前在麒麟的論壇上寫(xiě)的,看到這里也有很多初學(xué)的朋友,就老文再發(fā)一遍(做了點(diǎn)修正).請(qǐng)大家多指正.主要是開(kāi)出了一些我認(rèn)為很重要階段性的書(shū)目.希望能有點(diǎn)用.做了一點(diǎn)修正.不禁想起以前做助教的時(shí)光,真是如白駒過(guò)隙,不堪回首. 作者:無(wú)夢(mèng)到徽州 歡迎轉(zhuǎn)載 請(qǐng)注明出處 發(fā)在這里的目的是希望能有更多的人加入系統(tǒng)軟件的研究社區(qū)中來(lái), 對(duì)于kylin本身的問(wèn)題爭(zhēng)論毫無(wú)意義隨著大家學(xué)習(xí)的深入, 不辨自明. 所以 拋磚引玉, 希望能對(duì)初學(xué)者有所裨益. 希望大家多指正.希望至少可以影響一個(gè)人進(jìn)入系統(tǒng)軟件開(kāi)發(fā)社區(qū). 呵呵.
所指得類unix系統(tǒng) 指得是包含unix(商標(biāo)所有權(quán)歸opengroup所有)
,以及unix各個(gè)變體(aix,hp-unix,Solaris,BSD, FreeBSD ,etc ) 以及克隆
例如linux.下面這個(gè)是目前最全面的譜系圖,大家有興趣可以看看,了解一下.[unix 譜系圖] http://www./unix/
Step 0: 這個(gè)階段的同學(xué)基本對(duì)OS沒(méi)有認(rèn)識(shí), 可以從安裝系統(tǒng), 配置系統(tǒng),學(xué)習(xí)各種編輯器的使用, 與腳本的編寫(xiě).建議從Linux入手,畢竟比較容易得到各種發(fā)行版本,而且用戶群比較大,有了問(wèn)題 容易得到解答.推薦的發(fā)行版本是桌面Ubuntu,服務(wù)器 Debian. 推薦教材: LinuxCBT 系列的培訓(xùn)教材不錯(cuò), swf文件, 屬于手把手教的,只是用英語(yǔ)教學(xué).
O‘Reilly 出版了一系列的關(guān)于linux環(huán)境下的工具使用的書(shū). 包括了Bash, vim , emacs, linux 配置等 很多.用到具體工具時(shí)可以參考.
入門(mén)階段各個(gè)linux社區(qū)的FAQ很重要,基本包含了初學(xué)者能碰到的大部分問(wèn)題,好好利用. 例如國(guó)內(nèi)的linuxsir, CLF, CU, etc .國(guó)外主要時(shí)幾個(gè)主要的郵件列表.
Step 1: 對(duì)于系統(tǒng)使用有了基本掌握之后,開(kāi)始進(jìn)入編寫(xiě)應(yīng)用程序階段 , 進(jìn)入這階段前提是 C語(yǔ)言必須 有非常扎實(shí)的基礎(chǔ). 如果看完 expert c programming , 覺(jué)得沒(méi)有困難,算是過(guò)關(guān) 能基本使用vim,emacs ,其中之一. 基本會(huì)編寫(xiě)makefile. 這階段學(xué)習(xí)的必備之書(shū)是APUE.作者steven是我非常敬佩的前輩,可惜英年早逝.這本書(shū)講解非常 全面,初學(xué)會(huì)感到困難,但是堅(jiān)持下來(lái)受益非淺.第二版已經(jīng)引進(jìn)可以買(mǎi)到
Howto write makefile 這個(gè)有中文的,可以作為寫(xiě)makefile的參考. O‘Reilly 也有 emule上搜吧
這里除了一般的應(yīng)用程序外有3個(gè)重要的分支.
A.網(wǎng)絡(luò)編程. 類unix下有非常豐富的網(wǎng)絡(luò)工具所以這個(gè)是很大的一類分支.網(wǎng)絡(luò)通信本質(zhì)上也是 進(jìn)程間通信,所以steven的進(jìn)程間通信3卷本就是必看的書(shū)(steven生前只完成了2卷 第三卷由他的朋友續(xù)寫(xiě).具體情況不明).作為更進(jìn)一步可以研究apache的衍生項(xiàng)目 APR和ACE(這個(gè)需要比較深厚的C++,設(shè)計(jì)模式的功底).可以說(shuō)網(wǎng)絡(luò)編程是一個(gè)非常大的分支, 精通需要耗費(fèi)很多時(shí)間.研究?jī)?nèi)核看完steven的前2卷即可.
B.Xwindows 這個(gè)涉及到GUI, 也是一個(gè)龐大的分支,研究?jī)?nèi)核只需要關(guān)注X的架構(gòu)和 驅(qū)動(dòng)之間的關(guān) 系即可.這個(gè)分支很龐大,可是好的書(shū)其實(shí)不多.只有92年的這個(gè)系列 O‘Reilly - The Definitive Guides To The X Window Systems, Vol 1 - Xlib Programming Manual, 3Rd Ed . 最近xserver的架構(gòu)有很大的變化,xgl的出現(xiàn)石破天驚,看過(guò)novell2月在法國(guó)的演示 真是無(wú)話可說(shuō).只能說(shuō)在創(chuàng)新這一點(diǎn)上我們還沒(méi)有資格來(lái)談.這點(diǎn)我同意BNN的觀點(diǎn),這 10年我們的任務(wù)就是學(xué)習(xí),追趕.CLF 上面有一些文章和翻譯的project
C. 腳本.研究?jī)?nèi)核掌握Bash即可,不過(guò)這幾年perl,php,python,ruby都很火爆,國(guó)內(nèi)這 這方面也很紅火.這些書(shū)如過(guò)江之鯽,沒(méi)啥好說(shuō)的.
Step2: 開(kāi)始進(jìn)入OS 的正題, 首先要掌握基本概念 首推 operating system concepts 第六版 通過(guò)這本書(shū)可以掌握基本概念, 有個(gè)感性認(rèn)識(shí).
然后可以看<<操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)>> 這本書(shū)是結(jié)合minix這個(gè)教學(xué)系統(tǒng)來(lái)講的,也是經(jīng)典書(shū)籍 不過(guò)很少有人有耐心看完上下兩冊(cè).現(xiàn)在已經(jīng)進(jìn)化到minix3了,老頭不甘于只作一個(gè)教學(xué)系統(tǒng).差點(diǎn) 去念老頭的phd.minix3 已經(jīng)改變了很多. 還有一本很好的書(shū)籍Operating Systems: A Design-Oriented Approach 這本書(shū)很難找, 當(dāng)年我從一堆垃圾書(shū)中掏到這本世圖的影印本,印數(shù)很小,不過(guò)確實(shí)是一本好書(shū),作者把每章的概 念對(duì)應(yīng)到j(luò)ava代碼 ,深入淺出,可惜沒(méi)人重視.
M. J. Bach , The Design of the UNIX Operating System, Prentice-Hall 經(jīng)典中的經(jīng)典
這個(gè)階段主要是從總體上把握OS的整體結(jié)構(gòu),對(duì)各個(gè)概念基本了解.
step 3: 以linux為平臺(tái)的內(nèi)核開(kāi)發(fā)的初級(jí)階段.
<<understand linux kernel>> 3th
<<Linux Device Driver >> 3th
<<Linux kernel Develop>> 2th <<Approach for.x86.and.PowerPC.Architectures>>
介紹unix OS內(nèi)核的幾本重要的書(shū):
The Design and Implementation of the FreeBSD Operating System FreeBSD 的經(jīng)典詮釋.
The Design and Implementation of the 4.4BSD Operating System
4.4BSD-Lite的經(jīng)典詮釋
《 UNIX 高級(jí)教程系統(tǒng)技術(shù)內(nèi)幕 》中文的是96年的老版本,聽(tīng)說(shuō)出新版了,還沒(méi)到手
Solaris Internals: Core Kernel Architecture sun在unix歷史上作出了很多貢獻(xiàn),solaris的進(jìn)程調(diào)度 內(nèi)存管理,文件系統(tǒng) 都有獨(dú)到之處. 還有線程模型是m:n 的混合模式, 實(shí)現(xiàn)方法還有很有意思的. Step4: 從這里開(kāi)始進(jìn)入了OS的具體實(shí)現(xiàn)和內(nèi)核很具體的分支. 進(jìn)入這章之前必須要對(duì)編譯器, 體系結(jié)構(gòu)有中等水平的認(rèn)識(shí). 也就是說(shuō)編譯器要看過(guò)龍書(shū),體系要看過(guò)量化方法這本.最好加上see mips run 調(diào)度, 內(nèi)存管理, 網(wǎng)絡(luò)協(xié)議棧,文件系統(tǒng),體系相關(guān).進(jìn)程管理, Linker&&Loader , tool-chain 這些都是很重要的分支都有很重要的應(yīng)用.
對(duì)于調(diào)試器原理要有一定的了解,能熟練使用
The Linux® Networking Architecture: Design and Implementation of Network
Understanding The Linux Virtual Memory Manager Mel Gorman , 和這本書(shū)的作者當(dāng)面討論過(guò), 很nice的人,卻在ibm做java coder 好奇怪 呵呵 2.4內(nèi)核內(nèi)存管理的全面分析, 2.6中改動(dòng)不小
linux 情景分析 2.4 kernel 的全面分析. 浙大的毛德操,李善平老師力作.
linux 完全注釋 linux 早期版本的全面解析 國(guó)人力作
www. solaris 代碼已經(jīng)公開(kāi) 可以參考
Wiley.UNIX.Filesystems.Evolution.Design.and.Implementation
SunOS50MultithreadArchitecture
Wiley - Symbian OS Internals {Real-time Kernel Programming}
這一階段 書(shū)籍已經(jīng)是輔助,主要是靠查看代碼,做實(shí)際的修改,實(shí)驗(yàn),比較. Step 5 : 進(jìn)入微內(nèi)核高端專用系統(tǒng)移植與開(kāi)發(fā).QNX, IOX , RTEM,ARINC-653 XEN 純粹的學(xué)術(shù)研究的os : Plan 9 (派生出utf8 , proc 文件系統(tǒng)) Plan B Hurd Oskit L4
到這一階段的人數(shù)很有限, 基本是靠團(tuán)隊(duì),靠實(shí)力,靠經(jīng)驗(yàn)摸索了
有用的工具: lxr 索引代碼的利器.
有關(guān)系統(tǒng)軟件的戰(zhàn)略問(wèn)題見(jiàn)陳懷臨的對(duì)中國(guó)系統(tǒng)軟件的思考 http://www./
btw: kuth的書(shū)估計(jì)不是每個(gè)人都有耐心看完的,所以平時(shí)無(wú)聊的時(shí)候建議看mit算法導(dǎo)引的錄像. 絕對(duì)大補(bǔ),emule上有,可以下到 . 中科大的acm站點(diǎn)上也有,教育網(wǎng)的可以去下. 有什么遺漏不當(dāng)之處,請(qǐng)大家指正.
|