和菜鳥一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇Word版

上傳人:每**** 文檔編號:51418438 上傳時(shí)間:2022-01-25 格式:DOCX 頁數(shù):23 大?。?.28MB
收藏 版權(quán)申訴 舉報(bào) 下載
和菜鳥一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇Word版_第1頁
第1頁 / 共23頁
和菜鳥一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇Word版_第2頁
第2頁 / 共23頁
和菜鳥一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇Word版_第3頁
第3頁 / 共23頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《和菜鳥一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇Word版》由會員分享,可在線閱讀,更多相關(guān)《和菜鳥一起學(xué)linux內(nèi)核源碼之基礎(chǔ)準(zhǔn)備篇Word版(23頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

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

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

3、系統(tǒng)第一次調(diào)用創(chuàng)建進(jìn)程函數(shù)fork(),創(chuàng)建出一個用于運(yùn)行init()的子進(jìn)程。 ?????? 在該進(jìn)程中系統(tǒng)將運(yùn)行控制臺程序。如果控制臺環(huán)境建立成功,則再生成一個子進(jìn)程,用于運(yùn)行shell程序/bin/sh。若該子進(jìn)程退出,父進(jìn)程返回,則父進(jìn)程進(jìn)入一個死循環(huán)內(nèi),繼續(xù)生成子進(jìn)程,并在此子進(jìn)程中再次執(zhí)行shell程序/bin/sh,而父進(jìn)程則繼續(xù)等待。 ?????? 對于linux來說,所有任務(wù)都是在用戶模式執(zhí)行的,包括很多系統(tǒng)應(yīng)用程序,如shell程序、網(wǎng)絡(luò)子系統(tǒng)程序等 推薦精選 關(guān)于linux內(nèi)核體系結(jié)構(gòu) ?????? 說到操作系統(tǒng),我們都會知道windows操作系

4、統(tǒng),linux操作系統(tǒng),蘋果的iOS操作系統(tǒng),以前很火的塞班操作系統(tǒng),還有最近消費(fèi)類電子很火的Android操作系統(tǒng)。一個完整的操作系統(tǒng)分為4個部分。 推薦精選 ? ? ? ?可以把這個理解為我們用的手機(jī)。其中的硬件系統(tǒng)就是我們看到的整個手機(jī)了,cpu啊,內(nèi)存啊,這些不拆開來看不到的,和觸摸屏啊,按鍵之類看以看到的。操作系統(tǒng)內(nèi)核就是我們說的android了,不過他包括了linux的內(nèi)核了。操作系統(tǒng)服務(wù)就是android的一套結(jié)構(gòu)了,給我們直觀的就是那個有點(diǎn)炫的界面了。我們可以通過點(diǎn)擊來實(shí)現(xiàn)我們想要的功能。用戶應(yīng)用就是我們常玩的QQ啊,導(dǎo)航啊,當(dāng)然少不了各種好玩的游戲了,憤怒的小鳥,

5、涂鴉跳,水果忍者,是不是又想玩一把?唉,還是好好學(xué)習(xí)吧,雖然手機(jī)就在旁邊。 對于linux內(nèi)核的單內(nèi)核模式的系統(tǒng),有可以把他分為如下: ?????? Linux內(nèi)核又可分為5個大的模塊。 其關(guān)系和主要功能可以見下圖: 推薦精選 推薦精選 關(guān)于linux內(nèi)存 物理內(nèi)存可以分為下圖所示: 內(nèi)核占用內(nèi)存開始部分;接下來是共硬盤,軟盤使用的高速緩沖區(qū)部分,其中扣除顯存和bios的640k到1m;然后是虛擬盤;最后一部分是為所有程序可以使用的主內(nèi)存區(qū)。 推薦精選 Linux內(nèi)存管理中,段變換:將一個由段選擇符和段內(nèi)偏移構(gòu)成的邏輯地址轉(zhuǎn)換為一個線性地址。頁變

6、換:將線性地址轉(zhuǎn)換為對應(yīng)的物理地址。具體可見下圖所示: 虛擬地址:指的是由程序產(chǎn)生的由段選擇符和段內(nèi)偏移地址兩個部分組成的地址。為什么叫它是虛擬的地址呢?因?yàn)檫@兩部分組成的地址并沒有直接訪問物理內(nèi)存,而是要通過分段地址的變換機(jī)構(gòu)處理或映射后才會對應(yīng)到相應(yīng)的物理內(nèi)存地址。 ?????? 段描述符:向CPU提供了將邏輯地址映射為線性地址所必要的信息。描述符是由程序編譯器、鏈接器、加載器或者操作系統(tǒng)創(chuàng)建的。 ?????? 描述符表:保存描述符在描述符表中的,有兩類 1、?全局描述符表(Global descriptor table---GDT) 2、?局部描述符表(Local desc

7、riptor table---LDT) 推薦精選 描述符表是由8字節(jié)構(gòu)成的描述符項(xiàng)的內(nèi)存中的一個數(shù)組。處理器是通過使用GDT和LDTR寄存器來定位GDT表和當(dāng)前的LDT表。最多可以含有8192(2^13)個描述符。 選擇符:邏輯地址的選擇部分,用于指定一描述符的,它是通過指定一描述符表并且索引其中的一個描述符項(xiàng)完成的。 段寄存器:處理器將描述符中的信息保存在段寄存器中,因而可以避免在每次訪問內(nèi)存時(shí)查詢描述符表。 ? 推薦精選 ? ? 線性地址:通過指定一個頁表、頁表中的某一頁以及頁中的偏移值,從而間接地指向?qū)?yīng)的物理地址。 頁表:一個簡單的32位頁指示器的數(shù)組。

8、頁表本身也是一頁內(nèi)存,因此它含有4K字節(jié)的內(nèi)存,可容納1K個32位的項(xiàng)。 推薦精選 ? Offset = 2^12=4K, table =2^10, directory = 2^10,所以線性地址空間為2^10*2^10*4k=4G。 由于0.11內(nèi)核把每個進(jìn)程的最大可用的虛擬內(nèi)存空間定義為64M,因此每個進(jìn)程的邏輯地址可以用任務(wù)號*64M,就可以轉(zhuǎn)換到線性空間的地址。 ? ? 關(guān)于linux進(jìn)程 推薦精選 ???????進(jìn)程可以在內(nèi)核態(tài)或者用戶態(tài)運(yùn)行,當(dāng)資源可用就被喚醒,進(jìn)入就緒態(tài);當(dāng)進(jìn)程處于可中斷睡眠狀態(tài),收到信號可被喚醒;當(dāng)處于不可中斷睡眠狀態(tài),只能被使用w

9、akeup等的喚醒;當(dāng)進(jìn)程處于暫停狀態(tài),可發(fā)送信號使其進(jìn)入就緒態(tài);當(dāng)僵死狀態(tài),當(dāng)已經(jīng)停止運(yùn)行,父進(jìn)程還沒有調(diào)用wait查詢狀態(tài),一旦父進(jìn)程調(diào)用完wait取得子進(jìn)程信息后,這個進(jìn)程任務(wù)數(shù)據(jù)結(jié)構(gòu)就會被釋放掉。 ? 推薦精選 ? 關(guān)于linux文件系統(tǒng)和源碼目錄 ? 推薦精選 ? ? ? ? 推薦精選 推薦精選 ? 推薦精選 ? 推薦精選 ? ? 推薦精選 ? 推薦精選 ? ? ? 推薦精選 ? ? 推薦精選 ? ? 推薦精選 推薦精選 關(guān)于linux內(nèi)核ma

10、kefile Linux makefile文件是編譯輔助工具軟件make的參數(shù)配置文件。Make工具軟件的主要用途是通過識別哪些文件已經(jīng)被修改過,從而自動地決定在一個含有多個源程序文件的程序系統(tǒng)中哪些文件需要被重新編譯。 ???????這里的makefile主要作用是指示make程序最終使用獨(dú)立編譯連接成的tools/目錄中的build執(zhí)行程序?qū)⑺袃?nèi)核編譯代碼連接和合并成一個可運(yùn)行的內(nèi)核映像文件image。具體是對boot/目錄中的bootsect.s、setup.s使用8086匯編器進(jìn)行編譯,分別生成各自的執(zhí)行模塊。再對源代碼中的其他所有程序使用GNU的編譯器gcc/gas進(jìn)行編譯,并連接成模塊system。再用build工具將這三塊組合成一個內(nèi)核映像文件image。 ? (注:可編輯下載,若有不當(dāng)之處,請指正,謝謝!) 推薦精選

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!