當前位置:學者齋 >

計算機 >作業系統 >

如何學習作業系統

如何學習作業系統

導語:學習作業系統是學習計算機的基礎內容,下面是關於作業系統的學習方法,歡迎參考!

如何學習作業系統

作業系統怎麼學,首先要想作業系統是怎麼來的,在沒有作業系統的年代裡,人們是怎麼程式設計的。這是首要的問題。不知道有沒有人看過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,後來開始學INTELCPU的應用級程式設計,現在我決定開始從系統級學起。目前我也會上MSDN英文網站看看有關MFC的東西,但我看MFC倒不是主要因為去編寫MFC應用程式,而是想看看微軟是用系統為所有的應用級程式設計提供服務的,這整個一套結構是如何構造出來的,ORACLE資料庫是我繼INTEL文件的下一波目標,我也是想看看,一個數據庫體系結構是什麼樣的,可不可以嵌到作業系統裡去。

標籤: 作業系統 學習
  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/caozuo/2j10j.html