本人學習計算機技術至今,對於如何學習作業系統原理有一點自己的看法,現在寫出來,希望對大家能有所幫助!
各位程式設計的同仁想必都很清楚,計算機的作業系統就是在為應用級程式設計提供服務,提供什麼服務,就是提供象諸如如何記憶體定址,如何管理虛擬儲存器、如何進行中斷,如何管理磁碟,如何。。。。等等。作業系統為我們做掉了系統級程式設計中最繁重的一塊,所以我們在用應用級程式設計比如用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文件的下一波目標,我也是想看看,乙個資料庫體系結構是什麼樣的,可不可以嵌到作業系統裡去。
就寫到這裡,希望有志同道合的朋友和我一起前行,最後祝大家程式設計愉快,工作愉快。呵呵!
漫談如何學習作業系統原理
本人學習計算機技術至今,對於如何學習作業系統原理有一點自己的看法,現在寫出來,希望對大家能有所幫助!各位程式設計的同仁想必都很清楚,計算機的作業系統就是在為應用級程式設計提供服務,提供什麼服務,就是提供象諸如如何記憶體定址,如何管理虛擬儲存器 如何進行中 斷,如何管理磁碟,如何。等等。作業系統為我們...
漫談如何學習作業系統原理
很老的一片文章,寫的真是太好了。學習作業系統一段時間了,很難找到全面專注的講解底層的書籍或資料。這一段時間裡,都是從微機原理 作業系統 組合語言相關書籍裡面找自己需要的東西,很是麻煩,就很納悶為什麼沒有專門講解這些內容的著作。曾經意識到intel官網去檢視他的cpu文件,考慮到可能會講解硬體細節,就...
漫談如何學習作業系統原理
本人學習計算機技術至今,對於如何學習作業系統原理有一點自己的看法,現在寫出來,希望對大家能有所助!作業系統怎麼學,首先要想作業系統是怎麼來的,在沒有作業系統的年代裡,人們是怎麼程式設計的。這是首要的問 程這一塊最複雜,我不說內容,就單從檔案的大小來看,ia 64程式設計手冊的應用級程式設計卷是2mb...