漫談如何學習作業系統原理

來源:互聯網
上載者:User

漫談如何學習作業系統原理

 

本人學習電腦技術至今,對於如何學習作業系統原理有一點自己的看法,現在寫出來,希望對大家能有所協助!

        作業系統怎麼學,首先要想作業系統是怎麼來的,在沒有作業系統的年代裡,人們是怎麼編程的。這是首要的問題。不知道有沒有人看過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文檔的下一波目標,我也是想看看,一個資料庫體繫結構是什麼樣的,可不可以嵌到作業系統裡去。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.