主頁 > 教育培訓 > 電腦培訓 > 經(jīng)驗詳談:如何學習操作系統(tǒng)?

經(jīng)驗詳談:如何學習操作系統(tǒng)?

     學習應用軟件的朋友,我也勸你們看看操作系統(tǒng),內(nèi)核等這些系統(tǒng)底層的東西??催^了以后,你會覺得看應用級編程會更流暢,學起來也會更簡單。我就是這樣學的,學MFC,后來開始學INTEL CPU的應用級編程,現(xiàn)在我決定開始從系統(tǒng)級學起。

      本人學習計算機技術(shù)至今,對于如何學習操作系統(tǒng)原理有一點自己的看法,現(xiàn)在寫出來,希望對大家能有所幫助!
       操作系統(tǒng)怎么學,首先要想操作系統(tǒng)是怎么來的,在沒有操作系統(tǒng)的年代里,人們是怎么編程的。這是首要的問題。不知道有沒有人看過INTEL官方的CPU文檔,總是分為應用級編程、系統(tǒng)級編程、指令集這三塊。其中系統(tǒng)級編程這一塊最復雜,我不說內(nèi)容,就單從文件的大小來看,IA-64編程手冊的應用級編程卷是2MB,系統(tǒng)卷卻有6MB。就連IA-32編程手冊上的系統(tǒng)卷部分也遠比應用卷的要多。當然這些內(nèi)容我還沒有看,不過從目錄當中,覺得有很多相似的地方,比如CPU內(nèi)存尋址、虛擬存儲器管理、中斷與保護等等,可以從INTEL的CPU文檔上看出,各種CPU或機器雖然各有各的不同,各有各的特點,但是目前的CPU要解決的核心問題就是那么幾塊,要解決的就是象如何尋址內(nèi)存,如何管理虛擬存儲,如何實現(xiàn)中斷,如何保護資源等等。

        各位編程的同仁想必都很清楚,計算機的操作系統(tǒng)就是在為應用級編程提供服務,提供什么服務,就是提供象諸如如何內(nèi)存尋址,如何管理虛擬存儲器、如何進行中斷,如何管理磁盤,如何。。。。等等。操作系統(tǒng)為我們做掉了系統(tǒng)級編程中最繁重的一塊,所以我們在用應用級編程比如用C++編程的時候才會那么舒服,用int分配一個變量這內(nèi)存地址就來了,某個函數(shù)要調(diào)用另一個函數(shù)執(zhí)行的時候這執(zhí)行行程就能跳到那個函數(shù),內(nèi)存不夠了,沒有關(guān)系,操作系統(tǒng)自動啟動虛擬存儲器(只不過慢了些),所以應用級編程是最舒服的,操作系統(tǒng)級編程比較難,而直接做單片機可能就是最難的了。因為即使就是操作系統(tǒng)級編程,可能很多有關(guān)CPU底層的東西也已經(jīng)做掉了,你要做的可能就是要了解的你的操作系統(tǒng)做掉了哪些功能,如何調(diào)用。而單片機就沒有那么好玩了,單片機我沒有做過,

      我想可能就是直接對著一個CPU用匯編來編程,而且很可能是在沒有操作系統(tǒng)的情況下,這樣一來,操作系統(tǒng)要承擔的諸如內(nèi)存管理,中斷,過程跳轉(zhuǎn)等這些復雜繁重的工作就得程序員自己來承擔,那程序員的負擔就比目前應用級編程大得多了。

        我猜想,可能在沒有操作系統(tǒng)的時候,每個計算機程序員的日子可不會象現(xiàn)在的那么好過,因為做每個程序,都需要你自己去分配管理內(nèi)存,你不但要考慮如何高效的管理內(nèi)存,還要知道如何進行過程跳轉(zhuǎn)等等這一大堆的的細活,而這些細活在不同的CPU上的實現(xiàn)方式也是不同的,直到把這些問題都解決了以后,你才開始真正考慮你的應用方面的程序邏輯如何去編的問題。當然了,雖然有關(guān)CPU底層的系統(tǒng)級實現(xiàn)細節(jié)不一樣,但是大至CPU系統(tǒng)級這一部分要解決哪幾塊問題這是一樣的,所以在INTEL的官方文檔上,無論是IA-32還是IA-64這兩個編程手冊的系統(tǒng)卷上,都是那么幾塊內(nèi)容。

        既然系統(tǒng)級要解決的幾個任務都是相同的,每個程序員在編程的時候都要考慮這幾方面的內(nèi)容,那么可能就會想,為什么不把這些程序要解決的相同的任務給提取出來呢,這就形成了操作系統(tǒng),操作系統(tǒng)的內(nèi)核的任務,就是專門負責解決早期計算機程序員每次編程都必須要解決的幾項系統(tǒng)級任務,這樣一來,留給應用級的擔子就非常的輕了,忘記在哪里看過,好像以前的數(shù)據(jù)庫系統(tǒng)是屬于應用軟件的,可能同樣是因為每個應用軟件連同操作系統(tǒng)都需要一個數(shù)據(jù)庫,所以就把數(shù)據(jù)庫系統(tǒng)給單獨提了出來做為系統(tǒng)軟件了。有一點不明白為什么目前的操作系統(tǒng)要用文件系統(tǒng),直接用數(shù)據(jù)庫系統(tǒng)不更好些嗎,既對用戶服務,又為系統(tǒng)服務!

        我覺得,如果大家有要學操作系統(tǒng)原理的,根本就不必要去看所謂什么操作系統(tǒng)原理這一類的書,連外文的書籍也沒有必要去看,因為目前國際CPU制造商提供的CPU文檔的系統(tǒng)級編程卷才是真正的,原汁原味最好的教材,你要編寫的操作系統(tǒng)從大部分任務就是解決系統(tǒng)卷里的任務的。有一次在QQ上和一個做單片機的家伙聊天,那人比我小一點,我當時說目前操作系統(tǒng)底層好難,他就說這有什么難的,他馬上就能做一個操作系統(tǒng),就連編譯器也能做,我當時被嚇了一大跳,小小年紀就這么厲害,現(xiàn)在我懂了,做單片機的,大概都會做操作系統(tǒng),因為單片機的每次編程就是和系統(tǒng)底層打交道的,所以做單片機程序的自然對一個操作系統(tǒng)內(nèi)核會比較了解了。

        在此建議和我一樣的對操作系統(tǒng)原理感興趣,對系統(tǒng)底層的感興趣的人,直接去看INTEL的官方材料吧,操作系統(tǒng)原理有哪幾條,要解決哪些任務,通過查看不同CPU的系統(tǒng)卷編程手冊,找出其中相同的任務和邏輯去自己總結(jié)操作系統(tǒng)是如何做,無疑這種方法學到會是最多的了,而且理解起來可能會比一般的學習方法來得更深刻。

        學習應用軟件的朋友,我也勸你們看看操作系統(tǒng),內(nèi)核等這些系統(tǒng)底層的東西??催^了以后,你會覺得看應用級編程會更流暢,學起來也會更簡單。我就是這樣學的,學MFC,后來開始學INTELCPU的應用級編程,現(xiàn)在我決定開始從系統(tǒng)級學起。目前我也會上MSDN英文網(wǎng)站看看有關(guān)MFC的東西,但我看MFC倒不是主要因為去編寫MFC應用程序,而是想看看微軟是用系統(tǒng)為所有的應用級編程提供服務的,這整個一套結(jié)構(gòu)是如何構(gòu)造出來的,ORACLE數(shù)據(jù)庫是我繼INTEL文檔的下一波目標,我也是想看看,一個數(shù)據(jù)庫體系結(jié)構(gòu)是什么樣的,可不可以嵌到操作系統(tǒng)里去。

        就寫到這里,希望有志同道合的朋友和我一起前行,最后祝大家編程愉快,工作愉快。呵呵!
 
 

免責聲明:該文觀點僅代表作者本人,查查吧平臺系信息發(fā)布平臺,僅提供信息存儲空間服務,不承擔相關(guān)法律責任。圖片涉及侵權(quán)行為,請發(fā)送郵件至85868317@qq.com舉報,一經(jīng)查實,本站將立刻刪除。返回查查吧首頁,查看更多>>
提示

該文觀點僅代表作者本人,查查吧平臺系信息發(fā)布平臺,僅提供信息存儲空間服務,不承擔相關(guān)法律責任。圖片涉及侵權(quán)行為,請發(fā)送郵件至85868317@qq.com舉報,一經(jīng)查實,本站將立刻刪除。

優(yōu)惠商城

更多