• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 0,  comments - 5,  trackbacks - 0

            ========================================================================

            轉(zhuǎn)自:kangnixi的BLOG

            原文地址: http://www.shnenglu.com/kangnixi/archive/2010/02/18/107992.html

            ==================================================================

            如何學(xué)習(xí)操作系統(tǒng)?——整理篇,非個(gè)人感悟


                    (下面的文字還為整理)

            本來是想在留言里面回simohayha的,結(jié)果越寫越多,改成博客算了,也許對(duì)別人也有幫助。沒什么中心思想,大家胡亂看看。 

            我在讀大學(xué)的時(shí)候是努力試圖學(xué)習(xí)過linux源碼的,在機(jī)房里打印出厚厚一疊紙,悶在計(jì)算機(jī)旁邊猛看了好幾天,飯也沒好好吃,那些紙的質(zhì)量不太好,有股怪味,空著肚子鉆研,到后來聞那股味道,差點(diǎn)嘔吐,于是放棄,出去大吃了一頓。 

            這是上世紀(jì)末的事情了,那時(shí)其實(shí)水平還沒到,心里好奇,完全是賴蛤蟆想吃天鵝肉。學(xué)習(xí)這個(gè)事情,還是得循序漸進(jìn)的。 

            要想學(xué)深入學(xué)習(xí)操作系統(tǒng),推薦從這本書開始: Operatiing Systmes, Design and Implementation (by Tanenbaum, Woodhull),里面有個(gè)用于教學(xué)的操作系統(tǒng)MinixLinux的某些方面,現(xiàn)在還可以找到Minix的影子。 

            我手里的這本書,是第二版,現(xiàn)在書最新版是第三版。Minix 3.0,也已經(jīng)有點(diǎn)難度了, X Window System都有了。http://www.minix3.org/ 

            要是覺得還是太復(fù)雜,還有個(gè)更簡(jiǎn)單的GeekOShttp://geekos.sourceforge.net/ 

            OS
            的設(shè)計(jì)是受限于硬件的,尤其是CPU。當(dāng)代OS的不同進(jìn)程之間的內(nèi)存保護(hù),虛擬地址,都要通過硬件。所以對(duì)一個(gè)CPU的深刻了解,必不可少。對(duì)于IntelCPU,應(yīng)該讀下面三本: 

            1. Intel Architecture Software Developer's Manual, Volume 1: Basic Architecture http://www.intel.com/design/PentiumII/manuals/243190.htm 

            2. Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual http://www.intel.com/design/PentiumII/manuals/243191.htm 

            3. Intel Architecture Software Developer’s Manual Volume 3: System Programming http://www.intel.com/design/PentiumII/manuals/243192.htm 

            尤其是第三本,OS必看,虛擬內(nèi)存,內(nèi)存保護(hù)的東西全在里面。 

            操作系統(tǒng)里面代碼最多的,實(shí)際是IO部分,理論不多,可事關(guān)重要。Mindshare出了一系列書,寫的非常深入詳細(xì)。http://www.mindshare.com/ 

            學(xué)匯編開始直接學(xué)CISC的指令集太費(fèi)勁了,推薦先從RISC匯編開始,西方大學(xué)計(jì)算機(jī)專業(yè)走的也是這條路。可以看的一本書是Introduction to RISC Assembly Language Programmingby John Waldron。里面用的處理器MIPS,可以下載個(gè)SPIM Simulator,在PC上跑。http://www.cs.wisc.edu/~larus/spim.html 

            Knuth
            老先生在The Art of Computer Programming一書里的例子,都是匯編,現(xiàn)在用的虛擬機(jī)是訪RISC設(shè)計(jì)的,叫做MMIXKnuth寫了本書,叫做MMIXware, A RISC Computer for the Third Millennium, 呵呵,口氣好大啊。 

            講計(jì)算機(jī)架構(gòu)的兩本計(jì)算機(jī)學(xué)科經(jīng)典書,是PattersonHennessy合寫的兩本:Computer Organization and Design: The Hardware/Software Interface 3rd edition,以及Computer Architecture, Fourth Edition: A Quantitative Approach 

            學(xué)匯編要注意一點(diǎn),每個(gè)匯編器,其語法都不一樣。在Windows下面寫匯編,微軟的Macro Assembler不是很合適,里面的Macro太多,都趕上高級(jí)語言了。有個(gè)開源的Netwide Assembler, http://sourceforge.net/projects/nasm倒是挺不錯(cuò),推薦使用。 

            關(guān)于學(xué)習(xí)操作系統(tǒng)內(nèi)核,如果不是非抱著Linux的話,BSD是個(gè)挺好的選擇。代碼的結(jié)構(gòu)可能還清晰些。我有一臺(tái)FreeBSD服務(wù)器,基本非常滿意,有兩點(diǎn)不足,MySQL是針對(duì)Linux優(yōu)化的,在FreeBSD下性能不夠好,但是根據(jù)Yahoo的人說(YahooFreeBSD,FreeBSD最新版下用MySQL threading library重新編譯性能可以接受了。Java也不盡如意,Sun 現(xiàn)在提供Java 5binaryFreeBSD。但我在FreeBSD如果啟動(dòng)Tomcat開的內(nèi)存太大,啟動(dòng)會(huì)失敗。 

            想看看FreeBSD的源碼,可以看看這里:http://www.leidinger.net/FreeBSD/src_docs/,里面列的都是內(nèi)核各個(gè)部分的Code Reference Manual。里面那個(gè)講kernel的文件有23M,共2205頁,可見鉆研這些是件極為費(fèi)時(shí)費(fèi)力的事情。 

            http://www.chinaunix.net/
            也有很多BSD的資料。 

            現(xiàn)在主流操作系統(tǒng),就兩大家了,一邊是微軟的以NT為內(nèi)核的Win2k/XP/2003/Vista,另一邊是以UNIX為根基的Linux/BSD/Solaris等等

            Tanenbaum
            說過這么一句話,操作系統(tǒng)是什么呢,就是操作系統(tǒng)定義的API 

            學(xué)習(xí)Windows下的API,容易許多,資料全,另外Jeffrey RichterProgramming Application for MS Windows那本書寫的太好了,Process, Job, Thread, Fiber, Critical Section, Event, Waitable Timer, Semaphore, MutexVirtual Memory, IO,寫的非常詳盡清楚。要是Linux/BSD下面也有這么一本書,該有多好啊。Linux, BSD里面的線程,家家各有不同,把人搞得糊里糊涂。 

            如果從研究操作系統(tǒng)是怎么實(shí)現(xiàn)的,那么正好反過來,Linxu/BSD/Solaris簡(jiǎn)單明了多了.除了代碼公開,他們內(nèi)部結(jié)構(gòu)沒有Windows那么復(fù)雜。Windows的源碼,要是成為微軟的MVP,也是可以看到的。Windows 2000的大部分源碼,還泄露出來了,在網(wǎng)上流傳了一陣子。 

            我個(gè)人覺得搞應(yīng)用的去學(xué)習(xí)編譯器回報(bào)可能更大,首先就是對(duì)語言了解很深入,寫碼,讀碼容易。如果會(huì)了編譯器前臺(tái)技術(shù),可以自己寫個(gè)分析代碼的程序啊,那么讀別人的碼不久容易很多。現(xiàn)在雖然有現(xiàn)成的源碼分析器,但是想想你有個(gè)數(shù)據(jù)庫,一種是只能使用別人寫好的界面,一種是可以用SQL自由查找,哪個(gè)好?如果學(xué)會(huì)了編譯器后臺(tái)技術(shù),恭喜你,寫任何一行代碼都知道在計(jì)算機(jī)里怎么執(zhí)行的,這是一種多么自由自在的境界啊。

            posted on 2010-09-25 13:26 saha 閱讀(196) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿

            文章分類

            文章檔案

            收藏夾

            搜索

            •  

            最新評(píng)論

            久久精品国产男包| 91精品国产综合久久婷婷| 91精品日韩人妻无码久久不卡| 精品久久久久香蕉网| 久久精品成人免费国产片小草| 欧美亚洲国产精品久久高清| 国产精品久久国产精麻豆99网站| 国产高潮国产高潮久久久91| 无码人妻久久一区二区三区蜜桃 | 国产高潮国产高潮久久久91 | 日本精品久久久久影院日本| 久久久久波多野结衣高潮| 国产精品久久99| 久久精品中文无码资源站| 亚洲国产精品婷婷久久| 狠狠色婷婷久久一区二区| 久久91亚洲人成电影网站| 中文字幕无码久久精品青草| 青青青青久久精品国产h| 亚洲人成精品久久久久| 久久久受www免费人成| 99国产精品久久久久久久成人热| 久久频这里精品99香蕉久| 青青草原1769久久免费播放| 国产∨亚洲V天堂无码久久久| 2020国产成人久久精品| 久久久综合香蕉尹人综合网| 国产成人99久久亚洲综合精品| 777米奇久久最新地址| 久久精品国产精品亚洲毛片| 久久精品国产清自在天天线| 国内精品伊人久久久影院| 久久久这里有精品中文字幕| 久久久久无码精品国产app| 国产精品成人精品久久久| 中文字幕亚洲综合久久| 东京热TOKYO综合久久精品| 久久精品夜夜夜夜夜久久| 日韩精品久久久久久久电影蜜臀| 亚洲中文字幕无码久久2017| 久久午夜无码鲁丝片|