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