學(xué)習(xí)應(yīng)用軟件的朋友,我也勸你們看看操作系統(tǒng),內(nèi)核等這些系統(tǒng)底層的東西??催^了以后,你會(huì)覺得看應(yīng)用級(jí)編程會(huì)更流暢,學(xué)起來也會(huì)更簡單。我就是這樣學(xué)的,學(xué)MFC,后來開始學(xué)INTEL CPU的應(yīng)用級(jí)編程,現(xiàn)在我決定開始從系統(tǒng)級(jí)學(xué)起。
本人學(xué)習(xí)計(jì)算機(jī)技術(shù)至今,對(duì)于如何學(xué)習(xí)操作系統(tǒng)原理有一點(diǎn)自己的看法,現(xiàn)在寫出來,希望對(duì)大家能有所幫助!
操作系統(tǒng)怎么學(xué),首先要想操作系統(tǒng)是怎么來的,在沒有操作系統(tǒng)的年代里,人們是怎么編程的。這是首要的問題。不知道有沒有人看過INTEL官方的CPU文檔,總是分為應(yīng)用級(jí)編程、系統(tǒng)級(jí)編程、指令集這三塊。其中系統(tǒng)級(jí)編程這一塊最復(fù)雜,我不說內(nèi)容,就單從文件的大小來看,IA-64編程手冊(cè)的應(yīng)用級(jí)編程卷是2MB,系統(tǒng)卷卻有6MB。就連IA-32編程手冊(cè)上的系統(tǒng)卷部分也遠(yuǎn)比應(yīng)用卷的要多。當(dāng)然這些內(nèi)容我還沒有看,不過從目錄當(dāng)中,覺得有很多相似的地方,比如CPU內(nèi)存尋址、虛擬存儲(chǔ)器管理、中斷與保護(hù)等等,可以從INTEL的CPU文檔上看出,各種CPU或機(jī)器雖然各有各的不同,各有各的特點(diǎn),但是目前的CPU要解決的核心問題就是那么幾塊,要解決的就是象如何尋址內(nèi)存,如何管理虛擬存儲(chǔ),如何實(shí)現(xiàn)中斷,如何保護(hù)資源等等。
各位編程的同仁想必都很清楚,計(jì)算機(jī)的操作系統(tǒng)就是在為應(yīng)用級(jí)編程提供服務(wù),提供什么服務(wù),就是提供象諸如如何內(nèi)存尋址,如何管理虛擬存儲(chǔ)器、如何進(jìn)行中斷,如何管理磁盤,如何。。。。等等。操作系統(tǒng)為我們做掉了系統(tǒng)級(jí)編程中最繁重的一塊,所以我們?cè)谟脩?yīng)用級(jí)編程比如用C++編程的時(shí)候才會(huì)那么舒服,用int分配一個(gè)變量這內(nèi)存地址就來了,某個(gè)函數(shù)要調(diào)用另一個(gè)函數(shù)執(zhí)行的時(shí)候這執(zhí)行行程就能跳到那個(gè)函數(shù),內(nèi)存不夠了,沒有關(guān)系,操作系統(tǒng)自動(dòng)啟動(dòng)虛擬存儲(chǔ)器(只不過慢了些),所以應(yīng)用級(jí)編程是最舒服的,操作系統(tǒng)級(jí)編程比較難,而直接做單片機(jī)可能就是最難的了。因?yàn)榧词咕褪遣僮飨到y(tǒng)級(jí)編程,可能很多有關(guān)CPU底層的東西也已經(jīng)做掉了,你要做的可能就是要了解的你的操作系統(tǒng)做掉了哪些功能,如何調(diào)用。而單片機(jī)就沒有那么好玩了,單片機(jī)我沒有做過,
我想可能就是直接對(duì)著一個(gè)CPU用匯編來編程,而且很可能是在沒有操作系統(tǒng)的情況下,這樣一來,操作系統(tǒng)要承擔(dān)的諸如內(nèi)存管理,中斷,過程跳轉(zhuǎn)等這些復(fù)雜繁重的工作就得程序員自己來承擔(dān),那程序員的負(fù)擔(dān)就比目前應(yīng)用級(jí)編程大得多了。
我猜想,可能在沒有操作系統(tǒng)的時(shí)候,每個(gè)計(jì)算機(jī)程序員的日子可不會(huì)象現(xiàn)在的那么好過,因?yàn)樽雒總€(gè)程序,都需要你自己去分配管理內(nèi)存,你不但要考慮如何高效的管理內(nèi)存,還要知道如何進(jìn)行過程跳轉(zhuǎn)等等這一大堆的的細(xì)活,而這些細(xì)活在不同的CPU上的實(shí)現(xiàn)方式也是不同的,直到把這些問題都解決了以后,你才開始真正考慮你的應(yīng)用方面的程序邏輯如何去編的問題。當(dāng)然了,雖然有關(guān)CPU底層的系統(tǒng)級(jí)實(shí)現(xiàn)細(xì)節(jié)不一樣,但是大至CPU系統(tǒng)級(jí)這一部分要解決哪幾塊問題這是一樣的,所以在INTEL的官方文檔上,無論是IA-32還是IA-64這兩個(gè)編程手冊(cè)的系統(tǒng)卷上,都是那么幾塊內(nèi)容。
既然系統(tǒng)級(jí)要解決的幾個(gè)任務(wù)都是相同的,每個(gè)程序員在編程的時(shí)候都要考慮這幾方面的內(nèi)容,那么可能就會(huì)想,為什么不把這些程序要解決的相同的任務(wù)給提取出來呢,這就形成了操作系統(tǒng),操作系統(tǒng)的內(nèi)核的任務(wù),就是專門負(fù)責(zé)解決早期計(jì)算機(jī)程序員每次編程都必須要解決的幾項(xiàng)系統(tǒng)級(jí)任務(wù),這樣一來,留給應(yīng)用級(jí)的擔(dān)子就非常的輕了,忘記在哪里看過,好像以前的數(shù)據(jù)庫系統(tǒng)是屬于應(yīng)用軟件的,可能同樣是因?yàn)槊總€(gè)應(yīng)用軟件連同操作系統(tǒng)都需要一個(gè)數(shù)據(jù)庫,所以就把數(shù)據(jù)庫系統(tǒng)給單獨(dú)提了出來做為系統(tǒng)軟件了。有一點(diǎn)不明白為什么目前的操作系統(tǒng)要用文件系統(tǒng),直接用數(shù)據(jù)庫系統(tǒng)不更好些嗎,既對(duì)用戶服務(wù),又為系統(tǒng)服務(wù)!
我覺得,如果大家有要學(xué)操作系統(tǒng)原理的,根本就不必要去看所謂什么操作系統(tǒng)原理這一類的書,連外文的書籍也沒有必要去看,因?yàn)槟壳皣HCPU制造商提供的CPU文檔的系統(tǒng)級(jí)編程卷才是真正的,原汁原味最好的教材,你要編寫的操作系統(tǒng)從大部分任務(wù)就是解決系統(tǒng)卷里的任務(wù)的。有一次在QQ上和一個(gè)做單片機(jī)的家伙聊天,那人比我小一點(diǎn),我當(dāng)時(shí)說目前操作系統(tǒng)底層好難,他就說這有什么難的,他馬上就能做一個(gè)操作系統(tǒng),就連編譯器也能做,我當(dāng)時(shí)被嚇了一大跳,小小年紀(jì)就這么厲害,現(xiàn)在我懂了,做單片機(jī)的,大概都會(huì)做操作系統(tǒng),因?yàn)閱纹瑱C(jī)的每次編程就是和系統(tǒng)底層打交道的,所以做單片機(jī)程序的自然對(duì)一個(gè)操作系統(tǒng)內(nèi)核會(huì)比較了解了。
在此建議和我一樣的對(duì)操作系統(tǒng)原理感興趣,對(duì)系統(tǒng)底層的感興趣的人,直接去看INTEL的官方材料吧,操作系統(tǒng)原理有哪幾條,要解決哪些任務(wù),通過查看不同CPU的系統(tǒng)卷編程手冊(cè),找出其中相同的任務(wù)和邏輯去自己總結(jié)操作系統(tǒng)是如何做,無疑這種方法學(xué)到會(huì)是最多的了,而且理解起來可能會(huì)比一般的學(xué)習(xí)方法來得更深刻。
學(xué)習(xí)應(yīng)用軟件的朋友,我也勸你們看看操作系統(tǒng),內(nèi)核等這些系統(tǒng)底層的東西??催^了以后,你會(huì)覺得看應(yīng)用級(jí)編程會(huì)更流暢,學(xué)起來也會(huì)更簡單。我就是這樣學(xué)的,學(xué)MFC,后來開始學(xué)INTELCPU的應(yīng)用級(jí)編程,現(xiàn)在我決定開始從系統(tǒng)級(jí)學(xué)起。目前我也會(huì)上MSDN英文網(wǎng)站看看有關(guān)MFC的東西,但我看MFC倒不是主要因?yàn)槿ゾ帉慚FC應(yīng)用程序,而是想看看微軟是用系統(tǒng)為所有的應(yīng)用級(jí)編程提供服務(wù)的,這整個(gè)一套結(jié)構(gòu)是如何構(gòu)造出來的,ORACLE數(shù)據(jù)庫是我繼INTEL文檔的下一波目標(biāo),我也是想看看,一個(gè)數(shù)據(jù)庫體系結(jié)構(gòu)是什么樣的,可不可以嵌到操作系統(tǒng)里去。
就寫到這里,希望有志同道合的朋友和我一起前行,最后祝大家編程愉快,工作愉快。呵呵!
2021-07-09
2021-07-08
2021-07-08
2021-07-08
2021-07-08
2021-07-08
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-06
2021-07-06
2021-07-06
工作態(tài)度怎么寫 具有穩(wěn)定的工作心態(tài)
2021-07-06
該文觀點(diǎn)僅代表作者本人,查查吧平臺(tái)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),不承擔(dān)相關(guān)法律責(zé)任。圖片涉及侵權(quán)行為,請(qǐng)發(fā)送郵件至85868317@qq.com舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。