本人學習計算機技術至今,對於怎樣學習操做系統原理有一點本身的見解,現在寫出來,但願對你們能有所助!數據庫
操做系統怎麼學。首先要想操做系統是怎麼來的,在沒有操做系統的年代裏,人們是怎麼編程的。編程
這是首要的問函數
題。不知道有沒有人看過INTEL官方的CPU文檔,老是分爲應用級編程、系統級編程、指令集這三塊。當中系統級編post
程這一塊最複雜,我不說內容,就單從文件的大小來看,IA-64編程手冊的應用級編程卷是2MB,系統卷卻有6MB。就學習
連IA-32編程手冊上的系統卷部分也遠比應用卷的要多。固然這些內容我尚未看,只是從文件夾其中,認爲有很是多類似spa
的地方,比方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文檔的下一波目標,我也是想看看,一個數據庫體系結構是什麼樣的。可不可以嵌到操做系統裏去。
呵呵!