本人學習計算機技術至今,對於怎樣學習操作系統原理有一點自己的看法,如今寫出來,希望對大家能有所助!
操作系統怎么學。首先要想操作系統是怎么來的,在沒有操作系統的年代里,人們是怎么編程的。
這是首要的問
題。不知道有沒有人看過INTEL官方的CPU文檔,總是分為應用級編程、系統級編程、指令集這三塊。當中系統級編
程這一塊最復雜,我不說內容,就單從文件的大小來看,IA-64編程手冊的應用級編程卷是2MB,系統卷卻有6MB。就
連IA-32編程手冊上的系統卷部分也遠比應用卷的要多。當然這些內容我還沒有看,只是從文件夾其中,認為有非常多相似
的地方,比方CPU內存尋址、虛擬存儲器管理、中斷與保護等等,能夠從INTEL的CPU文檔上看出。各種CPU或機器
盡管各有各的不同。各有各的特點。可是眼下的CPU要解決的核心問題就是那么幾塊。要解決的就是象怎樣尋址內
存,怎樣管理虛擬存儲,怎樣實現中斷,怎樣保護資源等等。
各位編程的同仁想必都非常清楚,計算機的操作系統就是在為應用級編程提供服務。提供什么服務。就是提供象諸
如怎樣內存尋址,怎樣管理虛擬存儲器、怎樣進行中斷,怎樣管理磁盤。怎樣。。
。。等等。操作系統為我們做掉了
系統級編程中最繁重的一塊,所以我們在用應用級編程比方用C++編程的時候才會那么舒服。用int分配一個變量這內
存地址就來了。某個函數要調用還有一個函數運行的時候這運行行程就能跳到那個函數。內存不夠了,沒有關系,操作
系統自己主動啟動虛擬存儲器(僅僅只是慢了些)。所以應用級編程是最舒服的,操作系統級編程比較難。而直接做單片機
可能就是最難的了。
由於即使就是操作系統級編程,可能非常多有關CPU底層的東西也已經做掉了。你要做的可能就是
要了解的你的操作系統做掉了哪些功能,怎樣調用。而單片機就沒有那么好玩了。單片機我沒有做過。我想可能就是
直接對着一個CPU用匯編來編程。並且非常可能是在沒有操作系統的情況下。這樣一來。操作系統要承擔的諸如內存管
理,中斷。過程跳轉等這些復雜繁重的工作就得程序猿自己來承擔,那程序猿的負擔就比眼下應用級編程大得多了。
我猜想。可能在沒有操作系統的時候。每一個計算機程序猿的日子可不會象如今的那么好過。由於做每一個程序,都
須要你自己去分配管理內存,你不但要考慮怎樣高效的管理內存,還要知道怎樣進行過程跳轉等等這一大堆的的細
活,而這些細活在不同的CPU上的實現方式也是不同的,直到把這些問題都攻克了以后。你才開始真正考慮你的應用
方面的程序邏輯怎樣去編的問題。當然了,盡管有關CPU底層的系統級實現細節不一樣。可是大至CPU系統級這一部
分要解決哪幾塊問題這是一樣的。所以在INTEL的官方文檔上。不管是IA-32還是IA-64這兩個編程手冊的系統卷上。都
是那么幾塊內容。
既然系統級要解決的幾個任務都是同樣的,每一個程序猿在編程的時候都要考慮這幾方面的內容。那么可能就會
想,為什么不把這些程序要解決的同樣的任務給提取出來呢,這就形成了操作系統,操作系統的內核的任務,就是專
門負責解決早期計算機程序猿每次編程都必需要解決的幾項系統級任務,這樣一來。留給應用級的擔子就很的輕
了,忘記在哪里看過,好像曾經的數據庫系統是屬於應用軟件的,可能相同是由於每一個應用軟件連同操作系統都須要
一個數據庫,所以就把數據庫系統給單獨提了出來做為系統軟件了。有一點不明確為什么眼下的操作系統要用文件系
統。直接用數據庫系統不更好些嗎,既對用戶服務,又為系統服務。
我認為,假設大家有要學操作系統原理的,根本就不必要去看所謂什么操作系統原理這一類的書。連外文的書籍
也沒有必要去看,由於眼下國際CPU制造商提供的CPU文檔的系統級編程卷才是真正的,原汁原味最好的教材。你要
編寫的操作系統從大部分任務就是解決系統卷里的任務的。有一次在QQ上和一個做單片機的家伙聊天。那人比我小
一點,我當時說眼下操作系統底層好難,他就說這有什么難的。他立即就能做一個操作系統,就連編譯器也能做,我
當時被嚇了一大跳,小小年紀就這么厲害。如今我懂了,做單片機的,大概都會做操作系統,由於單片機的每次編程
就是和系統底層打交道的。所以做單片機程序的自然對一個操作系統內核會比較了解了。
在此建議和我一樣的對操作系統原理感興趣。對系統底層的感興趣的人,直接去看INTEL的官方材料吧。操作系
統原理有哪幾條。要解決哪些任務。通過查看不同CPU的系統卷編程手冊,找出當中同樣的任務和邏輯去自己總結操
作系統是怎樣做。無疑這樣的方法學到會是最多的了,並且理解起來可能會比一般的學習方法來得更深刻。
學習應用軟件的朋友,我也勸你們看看操作系統,內核等這些系統底層的東西。看過了以后,你會認為看應用級
編程會更流暢,學起來也會更簡單。
我就是這樣學的,學MFC,后來開始學INTEL CPU的應用級編程。如今我決定開
始從系統級學起。眼下我也會上MSDN英文站點看看有關MFC的東西。但我看MFC倒不是主要由於去編寫MFC應用
程序,而是想看看微軟是用系統為全部的應用級編程提供服務的,這整個一套結構是怎樣構造出來的,ORACLE數據
庫是我繼INTEL文檔的下一波目標,我也是想看看,一個數據庫體系結構是什么樣的。可不能夠嵌到操作系統里去。
就寫到這里。希望有志同道合的朋友和我一起前行,最后祝大家編程愉快。工作愉快。
呵呵!