聽說操作系統主要是寫文件操作這部分,然後在寫入硬盤一塊叫引導區的地方,開機就會自啟動,和其它應用軟件一樣?
抄篇文件,供參考
本人學習計算機技術至今,對於如何學習操作系統原理有一點自己的看法,現在寫出來,希望對大家能有所幫助!
操作系統怎麼學,首先要想操作系統是怎麼來的,在沒有操作系統的年代裡,人們是怎麼編程的。這是首要的問題。不知道有沒有人看過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文檔的下一波目標,我也是想看看,一個數據庫體系結構是什麼樣的,可不可以嵌到操作系統裡去。
就寫到這裡,希望有志同道合的朋友和我一起前行,最後祝大家編程愉快,工作愉快。呵呵!