和菜鳥(niǎo)一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇_第1頁(yè)
和菜鳥(niǎo)一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇_第2頁(yè)
和菜鳥(niǎo)一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇_第3頁(yè)
和菜鳥(niǎo)一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇_第4頁(yè)
和菜鳥(niǎo)一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、和菜鳥(niǎo)一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇斷斷續(xù)續(xù)地看著內(nèi)核源碼,發(fā)現(xiàn)很多知識(shí)點(diǎn)都不是很明白,特別是對(duì)于操 作系統(tǒng)的一些基礎(chǔ)。雖然看到了塊設(shè)備了,但是發(fā)現(xiàn)也總結(jié)不出什么了,這篇 好像好久前更新的,一直沒(méi)有發(fā)表。最近還是比較忙碌,同事走了好多人,也 有考慮過(guò)別的公司。但是正式工作未滿1年,也不能隨隨便便地就離開(kāi)。雖然很忙,但是還是學(xué)了很多東西。漸漸地接觸了linux應(yīng)用層。發(fā)現(xiàn)應(yīng)用和驅(qū)動(dòng)還是有很多區(qū)別的,各種需求,各種接口,各種設(shè)計(jì),各種實(shí)現(xiàn)。嗯,慢慢來(lái)總 會(huì)學(xué)好的。對(duì)于內(nèi)核,慢慢看,看一遍不懂,那就第二遍,第三遍。相信總會(huì) 看懂的。Fighting。初始化in it下只有一個(gè)main函數(shù)。首先

2、利用setup.s程序取得的程序參數(shù)設(shè)置系統(tǒng)的根文件設(shè)備號(hào)以及一些內(nèi) 存全局變量。這些內(nèi)存變量指明了主內(nèi)存的開(kāi)始地址、系統(tǒng)所擁有的內(nèi)存變量 和作為高速緩沖區(qū)內(nèi)存的末端地址。如果還定義了虛擬盤(pán)(RAMDISK),貝y主內(nèi)存將適當(dāng)減少。然后,內(nèi)核進(jìn)行所有方面的硬件初始化工作。包括陷阱門(mén)、塊設(shè)備、字符 設(shè)備和tty包括人工創(chuàng)建第一個(gè)任務(wù)(task 0)。待所有初始化工作完成就設(shè)置中 斷允許標(biāo)志,開(kāi)啟中斷。在整個(gè)內(nèi)核完成初始化后,內(nèi)核將執(zhí)行權(quán)切換到了用戶模塊,也即CPU從0特權(quán)級(jí)切換到了第3特權(quán)級(jí)。然后系統(tǒng)第一次調(diào)用創(chuàng)建進(jìn)程函數(shù) fork(),創(chuàng)建 出一個(gè)用于運(yùn)行init()的子進(jìn)程。在該進(jìn)程中系統(tǒng)將

3、運(yùn)行控制臺(tái)程序。如果控制臺(tái)環(huán)境建立成功,則再生成 一個(gè)子進(jìn)程,用于運(yùn)行shell程序/bin/sh。若該子進(jìn)程退出,父進(jìn)程返回,則父 進(jìn)程進(jìn)入一個(gè)死循環(huán)內(nèi),繼續(xù)生成子進(jìn)程,并在此子進(jìn)程中再次執(zhí)行shell程序/bin/sh,而父進(jìn)程則繼續(xù)等待。精選文庫(kù)班禪I創(chuàng)建于迴畀訓(xùn)刪理內(nèi)農(nóng)齊化* 1打;時(shí)任笛0紂始化址陽(yáng)2I 出y閑肘執(zhí)行paiKM)祈環(huán)等待進(jìn)樓迥ill I II * 1I執(zhí) 1 jshdi對(duì)于linux來(lái)說(shuō),所有任務(wù)都是在用戶模式執(zhí)行的,包括很多系統(tǒng)應(yīng)用程 序,如shell程序、網(wǎng)絡(luò)子系統(tǒng)程序等/mainx系統(tǒng)和帖化- I 逬恤1:二有二y出出關(guān)于linux內(nèi)核體系結(jié)構(gòu)說(shuō)到操作系統(tǒng),我們

4、都會(huì)知道 windows操作系統(tǒng),linux操作系統(tǒng),蘋(píng)果的iOS擁作系統(tǒng),以前很火的塞班操作系統(tǒng),還有最近消費(fèi)類電子很火的An droid操作系統(tǒng)。一個(gè)完整的操作系統(tǒng)分為4個(gè)部分。17用戶應(yīng)用程序操作系統(tǒng)組成部分操作系統(tǒng)服務(wù)操作系統(tǒng)內(nèi)核便件系統(tǒng)可以把這個(gè)理解為我們用的手機(jī)。其中的硬件系統(tǒng)就是我們看到的整個(gè)手 機(jī)了,cpu啊,內(nèi)存啊,這些不拆開(kāi)來(lái)看不到的,和觸摸屏啊,按鍵之類看以 看到的。操作系統(tǒng)內(nèi)核就是我們說(shuō)的an droid 了,不過(guò)他包括了 linux的內(nèi)核了。操作系統(tǒng)服務(wù)就是an droid的一套結(jié)構(gòu)了,給我們直觀的就是那個(gè)有點(diǎn)炫 的界面了。我們可以通過(guò)點(diǎn)擊來(lái)實(shí)現(xiàn)我們想要的功能。用戶應(yīng)

5、用就是我們常玩 的QQ啊,導(dǎo)航啊,當(dāng)然少不了各種好玩的游戲了,憤怒的小鳥(niǎo),涂鴉跳,水 果忍者,是不是又想玩一把?唉,還是好好學(xué)習(xí)吧,雖然手機(jī)就在旁邊。 對(duì)于linux內(nèi)核的單內(nèi)核模式的系統(tǒng),有可以把他分為如下:?jiǎn)蝺?nèi)核模式/ 可以分為/調(diào)用視序的主 程序執(zhí)行系統(tǒng)服務(wù) 的系統(tǒng)服務(wù)支持系統(tǒng)調(diào)用 的底層函數(shù)Linux內(nèi)核又可分為5個(gè)大的模塊。 其關(guān)系和主要功能可以見(jiàn)下圖:構(gòu)成內(nèi)核5人模塊討了不文件系統(tǒng)I控制逬程対CFU源的忸川 調(diào)虔擴(kuò)|由罡各牛遇和ii平臺(tái) 理泊訪(MCIH;.同時(shí)內(nèi)植及 時(shí)扭fj曲會(huì)軸魏作r進(jìn)程調(diào)度45賣(mài)件毎?川來(lái)支持甘外 國(guó)設(shè)a架動(dòng)杯存儲(chǔ)功 能.須丈tt泵統(tǒng).問(wèn) 所有外部說(shuō)備民斷

6、的Afm 同#丄備低細(xì)節(jié)欣勺保所冇進(jìn)程安今*扶亨主內(nèi)存 E, &持虛擬肉療曾理力式&供種網(wǎng)緒迪信! 標(biāo)世的認(rèn)問(wèn)井文W ! 劣種網(wǎng)絡(luò)城件 V網(wǎng)絡(luò)接n各模塊示意曲用戶程序也川廣系裁調(diào)用接口4MILLRiJlssW&蕃汽DatEi羌址枚巧、fcjj rOuriiI阱i段慶S冷PSGS ssDTR拴持口沾段遠(yuǎn)捋苻追問(wèn)HI執(zhí)行任務(wù)宜撫燥作Linux文件系統(tǒng)rp戶沖頤數(shù)用門(mén)常川 普通*令系統(tǒng)運(yùn)行可變程疥或丹H盅傳息引導(dǎo)啟動(dòng)程序n錄bcKHhooHeci.shead.s磁盤(pán)引導(dǎo)塊程洋.編誹后會(huì)駐葩在磁盤(pán)的第 一區(qū)中*在卩C機(jī)加rhROM BIOS訂檢fi, 將BIOS丿川載到內(nèi)存(K7C00處進(jìn)行執(zhí)行.取機(jī)

7、器的硬件配胃尊數(shù).并把內(nèi)檢模塊 iystin移動(dòng)到適M的內(nèi)?7位置處-匚 rnamciiblock devi fcv-ecfcnlioctlr1rdSLdtOpCfl.4II IT bItickiniMk此作請(qǐng)數(shù)UruhCtt;頭文件主冃錄imlixlesi;罠門(mén).口UI執(zhí)行丈件格武和一些喘J.OULconu 1-醴與關(guān)字符類塑判I忻利轉(zhuǎn)換的索ciype.li嘉統(tǒng)中齊種hCTTnu.li盂丈門(mén) 知乂中i。血字屋的丼標(biāo)志臓rcniljin)T irr ait搞述符曲桂杵持制嘟 數(shù)間I;的立艾佶號(hào)符號(hào)議址.二占兮結(jié)宙以圧佶吁忒口十1慄作翫救壓型1 /(:的荒武變武齡歡刊惡 戟伽也11 廠stJdc

8、f.li-旳內(nèi)文字符M廉f乍的廉入兩故slnng.Ji捋制#步)Annm喘接nterm jag.h皓構(gòu)和空f(shuō)l犬時(shí)阿的兩敗底昭time.h牡種槪號(hào)常數(shù)和婁犁.井屮明r各沖iinistd.h寸訪問(wèn)和修加加:給構(gòu)以恥訕網(wǎng)加眼utime.h&壇 Hal.h佶號(hào)符號(hào)???佶號(hào)結(jié)構(gòu)風(fēng)風(fēng)怙號(hào) 操作常撿原皚丿NUlXMTshof tTyFEMEMHhRi子H錄貼m、linux. sysasm血 h*心me tn cpyt) I嵐入成匯編r卩/煎ttim,mcTPOT.h仃久段托/器他柞的就入戍匯編朗懶rtiuAu 呂 Ecni.hI汶進(jìn)的嵌入?yún)R編形式定叉肘皿蜩n 採(cǎi)作第數(shù)linux kernel.!iism

9、.sysicni.hIPa骨咸S改抽述閒中慚門(mén)習(xí)的職入 /式匯堰巡文鍵播詁=和鎖盤(pán)婁V可選頃liiiUK.Cifit i各 h牧盤(pán)控制辭範(fàn)放豹業(yè)宦義kmK.ldrei; ti丈件農(nóng)結(jié)枸TinvM.T.li昴曲chsytimcs.h耳朱的氛虢撿撫茨曙s5!i.ail,h含有丈件或立ft系維狀宦瓦血仃 和鬲LiniJXbdrcg.h描述符前簡(jiǎn)單51枸.和幾個(gè)選丼荷障址I 血 x/hutidh訪阿硬盤(pán)寄fr養(yǎng)MSn.狀態(tài)碼:農(nóng)導(dǎo)/內(nèi)棒常即偵敬時(shí)1氏旱定又iJiJii k小立義和一些切面祥1函效區(qū)列JiniL.-niLikhlinu?L Kched.tiH:務(wù)結(jié)鞫nsLsmwj制跆桿:裁。前敵拯._冏

10、_網(wǎng)11鮎I朋散floppy.C貿(mào)現(xiàn)r対軟盤(pán)址排塊的u:/嗎躺動(dòng)闌數(shù),主耍 是d(? fcJ request實(shí)現(xiàn)底E塊設(shè)務(wù)數(shù)據(jù)讀/冒數(shù)| rw blx劉L內(nèi)核所仃I:它社序都是適討 嗓雷數(shù)對(duì)塊設(shè)備進(jìn)17數(shù)據(jù)的逑寫(xiě)操作.實(shí)現(xiàn)底E塊設(shè)務(wù)數(shù)據(jù)讀/冒數(shù)| rw blx劉L內(nèi)核所仃I:它社序都是適討嗓雷數(shù)對(duì)塊設(shè)備進(jìn)17數(shù)據(jù)的逑寫(xiě)操作.徉A.toppy,ctoppy,c字罰設(shè)備驅(qū)動(dòng)程1戸了日錄koncUchr devserin l.c但含rty宇持巴:備讀卜雷數(shù)rtyta訓(xùn)和弓曲 ftnY_WTLtC(h另外謹(jǐn)包折住串行中料 iiW 帀訓(xùn)用的 CjiS 數(shù)悶 t ry inicrru pi:m對(duì)鼻曲啊f適

11、佶QI IMRT進(jìn)打電圈化 攝作,并注S*兩牛通估端門(mén)的巾晰討鼠LciiMiLe-C控制舍MW址畀一序#控制臺(tái)寫(xiě)箔紋2,3門(mén)皚b !杯于與設(shè)備詢乩 込包括對(duì)顯11/示惑和謹(jǐn)世中閑聞祈殆化詳曰押序51 m冊(cè)I呵Mlle L婆斑嶼的i趙劇按U訥散My ioa町氏屍左 旳H*)終端詁結(jié)嗣的讀寫(xiě)込 井書(shū)芒實(shí)現(xiàn) 務(wù)統(tǒng)調(diào)恥掙 冰機(jī))的民ixMc程序屮幀冏用rs-_k ,s r汕編FJ字用于實(shí)比兩個(gè)串行接口的中斯處稈廳*|紬決叔器才璽現(xiàn)湮誼中斷處建過(guò)畑RLmR:rnj曲_RS k,sitjioctLu1 CUDfiok.C 1T=1Sf 血 he1凸一kcybtidrd.S內(nèi)核庫(kù)函數(shù)目錄libex.irnn

12、llec廠|內(nèi)存分配虧數(shù)close/關(guān)ffi文件函S等待于進(jìn)程狀i /態(tài)圍數(shù)wfiittlup/e制文件描述符淅數(shù)創(chuàng)建會(huì)話無(wú)統(tǒng)謂用/文件撲開(kāi)舷inelude/ftiringtpJ靈現(xiàn)的所仃?|/|符串操胡數(shù)openwrnc執(zhí)廿程序數(shù)CXCCVCiTKrnoiy 兀寫(xiě)i件函數(shù)內(nèi)*管理秤序H錄mm處那梅庁山氓頁(yè)吧引fc的in拝常中斷和紡 M非法抱址而引起的1保護(hù)對(duì)內(nèi)ff初ififlS的諦I SnwmnilO由卩瞇匚$的 內(nèi)療處現(xiàn)中斯過(guò)秤調(diào)川的donop庫(kù)cO和 do_wp pag鞏屈數(shù)。右勺建漏進(jìn)程面執(zhí)片復(fù) 制進(jìn)稈操作時(shí).即使用該文件中的內(nèi)冇扯用 歯數(shù)來(lái)分配螢蠅內(nèi)存空HL編if內(nèi)核工具秤序A錄tookhtjildx月于將linuK憐個(gè)冃求中被冊(cè)別編譯生成的H 標(biāo)代昭連按備并戍 個(gè)可運(yùn)行的內(nèi)樓映像文 件 image.,關(guān)于 linux 內(nèi)核 makefileLinux makefile文件是編譯輔助工具軟件 make的參數(shù)配置文件。Make工具軟件的主要用途是通過(guò)識(shí)別哪些文件已經(jīng)被修改過(guò),從而自動(dòng)地決定在一個(gè)含有 多個(gè)源程序文件的程序系統(tǒng)中哪些文件需要被重新編譯。libLi mix 內(nèi)核 make fileUJ J)sumbtwitscct啊嫡(nz這里的makefile主要作用是指示make程序最終

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論