linux操作系統(tǒng)結(jié)構(gòu)_第1頁(yè)
linux操作系統(tǒng)結(jié)構(gòu)_第2頁(yè)
linux操作系統(tǒng)結(jié)構(gòu)_第3頁(yè)
linux操作系統(tǒng)結(jié)構(gòu)_第4頁(yè)
linux操作系統(tǒng)結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

LinuxKernel架構(gòu)黃松青.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第1頁(yè)!操作系統(tǒng)(OS)的概念

一個(gè)系統(tǒng)管理程序,管理計(jì)算機(jī)的資源,給用戶一個(gè)使用這些資源的平臺(tái)一個(gè)服務(wù)程序,操作系統(tǒng)都是為用戶應(yīng)用程序服務(wù)的,服務(wù)的方式是通過系統(tǒng)調(diào)用systemcallLinux是一個(gè)多任務(wù),跨平臺(tái)的現(xiàn)代操作系統(tǒng).gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第2頁(yè)!為什么要有操作系統(tǒng)多任務(wù)的要求統(tǒng)一的服務(wù)接口,合理使用資源,如內(nèi)存管理并發(fā)時(shí)對(duì)資源使用沖突減少開發(fā)的難度安全性的要求網(wǎng)絡(luò)(TCP/IP)的使用GUI的使用要求應(yīng)用程序移植性的要求用戶操作的方便性.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第3頁(yè)!進(jìn)程管理

進(jìn)程(process)的概念系統(tǒng)的個(gè)進(jìn)程Init用戶進(jìn)程如何運(yùn)行和退出記錄進(jìn)程的信息,進(jìn)程控制塊PCB系統(tǒng)調(diào)度,不同的系統(tǒng)有不同的策略用戶進(jìn)程進(jìn)入系統(tǒng)的唯一途徑,systemcall.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第4頁(yè)!文件系統(tǒng)管理

永久性存儲(chǔ)設(shè)備,disk,flash,sd,cf分區(qū)、格式化及文件一個(gè)簡(jiǎn)單的文件系統(tǒng)的例子系統(tǒng)看存儲(chǔ)地址是線性進(jìn)程看待文件的統(tǒng)一化和抽象化.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第5頁(yè)!Linuxkernel歷史1991年由當(dāng)時(shí)的芬蘭學(xué)生linustorvalds編寫并以GNUGPL的方式發(fā)布到Internet上,稱為0.11版1994年,出1.0.0版本1996年,出2.0版本1999年,出2.2版本2001年,出2.4版本2003年,出2.6版本,至今都穩(wěn)定在該版本.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第6頁(yè)!Linux系統(tǒng)軟件層次結(jié)構(gòu).gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第7頁(yè)!fread()文件的執(zhí)行舉例用戶進(jìn)程在用戶空間,使用C庫(kù)fread()讀文件Fread()調(diào)用read()系統(tǒng)調(diào)用,進(jìn)入系統(tǒng)空間,執(zhí)行系統(tǒng)代碼系統(tǒng)根據(jù)文件對(duì)存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)請(qǐng)求,在數(shù)據(jù)沒準(zhǔn)備就緒是讓出CPU使其他進(jìn)程運(yùn)行。存儲(chǔ)設(shè)備數(shù)據(jù)準(zhǔn)備就緒,向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)進(jìn)入中斷上下文,并喚醒該文件的讀進(jìn)程在某時(shí)刻,讀文件的進(jìn)程再次運(yùn)行,取到數(shù)據(jù),返回用戶空間.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第8頁(yè)!Linux2.6內(nèi)核源碼目錄結(jié)構(gòu).gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第9頁(yè)!Linux2.6內(nèi)核配置與編譯安裝ARMLinux2.6源碼包#tarxzvfgec_linux-.tgz.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第10頁(yè)!Linux2.6內(nèi)核配置與編譯選擇相應(yīng)的配置時(shí),有三種選擇,它們分別代表的含義如下:

Y--將該功能編譯進(jìn)內(nèi)核

N--不將該功能編譯進(jìn)內(nèi)核

M--將該功能編譯成模塊,可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中makexconfig,使用鼠標(biāo)就可以選擇對(duì)應(yīng)的選項(xiàng)。makemenuconfig,則需要使用空格鍵進(jìn)行選取。如果有不明白的地方,按[shift]+?的組合鍵來查看說明.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第11頁(yè)!Linux2.6內(nèi)核配置與編譯配置工作過程:

Makefile分布在Linux內(nèi)核源代碼中的Makefile,定義Linux內(nèi)核的編譯規(guī)則;頂層目錄的Makefile管理整個(gè)Linux內(nèi)核的配置編譯。

配置工具不同的內(nèi)核配置方式,通過不同的配置工具完成。script目錄下提供了這些配置工具。如menuconfig目標(biāo)使用mconf。Kconfig文件2.6內(nèi)核引入的配置文件,是內(nèi)核配置選項(xiàng)的源文件。arch/$(ARCH)/Kconfig文件是主Kconfig文件,主Kconfig文件調(diào)用其他目錄的Kconfig文件。這些Kconfig文件形成樹狀關(guān)系-->樹狀菜單。.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第12頁(yè)!Linux2.6內(nèi)核配置與編譯配置的注意選項(xiàng)Codematurityleveloptions--->應(yīng)該選擇[*]Promptfordevelopmentand/orinpletecode/drivers這將會(huì)在設(shè)置界面中顯示還在開發(fā)或者還沒有完成的代碼與驅(qū)動(dòng).因?yàn)橛性S多設(shè)備可能必需選擇這個(gè)選項(xiàng)才能進(jìn)行配置,實(shí)際上它是安全的。.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第13頁(yè)!Linux2.6內(nèi)核配置與編譯配置的注意選項(xiàng)3Loadablemodulesupport--->[*]Enableloadablemodulesupport應(yīng)該選擇 這個(gè)選項(xiàng)可以讓你的內(nèi)核支持模塊。一般一些不常用到的驅(qū)動(dòng)或特性可以編譯為模塊以減少內(nèi)核的體積。[*]Moduleunloading應(yīng)該選擇 這個(gè)選項(xiàng)可以讓你卸載不再使用的模塊,如果不選的話你將不能卸載任何模塊[*]Forcedmoduleunloading 強(qiáng)行卸載模塊,可以把正在使用中的??煨遁d掉。做內(nèi)核開發(fā)或者驅(qū)動(dòng)開發(fā)的時(shí)候,有一定的好處。但一般用戶不應(yīng)該選擇。.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第14頁(yè)!Linux2.6內(nèi)核配置與編譯配置的注意選項(xiàng)6filesystems--->必須將根文件系統(tǒng)直接編譯到內(nèi)核中。并且在這里選擇系統(tǒng)支持的文件系統(tǒng)。.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第15頁(yè)!Linux內(nèi)核啟動(dòng)流程bootloader加載kernel到內(nèi)存arch/mips/kernel/head.Sinit/main.cstart_kernel()--體系結(jié)構(gòu)的初始化setup_arch()--內(nèi)存管理初始化mem_init()--調(diào)度系統(tǒng)初始化sched_init()--中斷系統(tǒng)初始化trap_init(),init_IRQ()--各子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)初始化--各設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)初始化do_basic_setup()--掛接根文件系統(tǒng)mount_root()--建立系統(tǒng)個(gè)init進(jìn)程exec(“/sbin/init”,…).gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第16頁(yè)!操作系統(tǒng)的組成進(jìn)程管理模塊內(nèi)存管理模塊文件系統(tǒng)管理模塊設(shè)備管理模塊異常和中斷管理模塊網(wǎng)絡(luò)協(xié)議模塊…….gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第17頁(yè)!內(nèi)存管理

內(nèi)存是系統(tǒng)資源的一種內(nèi)存的分類SRAM,SDRAM,FB,Registers,外設(shè)片上內(nèi)存物理內(nèi)存的管理虛擬內(nèi)存的管理,內(nèi)核空間與用戶空間內(nèi)核與用戶內(nèi)存的分配內(nèi)存碎片的產(chǎn)生和避免.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第18頁(yè)!設(shè)備管理

HAL層的概念,開放性的理念設(shè)備的驅(qū)動(dòng)系統(tǒng)要記錄和管理設(shè)備的存在安全使用設(shè)備設(shè)備是一種特殊的文件進(jìn)程如何使用設(shè)備,open/close,read/write,ioctl.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第19頁(yè)!Linuxkernel的特點(diǎn)類Unix,遵循POSIX標(biāo)準(zhǔn)支持很多的體系結(jié)構(gòu),如X86,Arm,Mips等等,有極強(qiáng)的平臺(tái)可伸縮性O(shè)penSource(GNUGPL)單內(nèi)核,開放可擴(kuò)展真正的多任務(wù)多用戶具有強(qiáng)大的網(wǎng)絡(luò)功能,尤其對(duì)Tcp/ip支持開發(fā)功能強(qiáng),開發(fā)環(huán)境免費(fèi)設(shè)備獨(dú)立性,系統(tǒng)把所有外部設(shè)備統(tǒng)一當(dāng)作成文件來看待及操作可靠的系統(tǒng)安全……

.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第20頁(yè)!Linux中處理器的運(yùn)行LinuxKernel初始化完畢后,程序運(yùn)行在以下的上下文空間中:1)運(yùn)行于用戶空間,執(zhí)行用戶程序2)運(yùn)行于內(nèi)核空間,處于當(dāng)前進(jìn)程的上下文3)運(yùn)行于中斷,處于中斷上下文,與進(jìn)程無關(guān),因?yàn)橹袛嗟牟豢深A(yù)知.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第21頁(yè)!獲取Linux內(nèi)核源代碼從官方網(wǎng)站獲取:.,主要是X86平臺(tái)的版本以BSP包的方式獲取,主要在嵌入式的平臺(tái)上用的方式補(bǔ)丁,從版本2.6.20升級(jí)到2.6.21#cd到2.6.20linux目錄#patch–p1<patch-2.6.21.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第22頁(yè)!Linux2.6內(nèi)核配置與編譯交叉編譯器:

運(yùn)行在一種體系的CPU(通常是X86)的編譯器,對(duì)其編譯的程序產(chǎn)生另外一種體系(如ARM/MIPS)的指令的編譯器叫交叉編譯器安裝ARM交叉編譯器#tarxzvfcrass-3.3.2.tgz

把解開的目錄的bin/目錄的絕對(duì)路徑增加到環(huán)境變量$PATH中.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第23頁(yè)!Linux2.6內(nèi)核配置與編譯內(nèi)核配置系統(tǒng):

配置命令#makeconfig(基于文本的最為傳統(tǒng)的配置界面,不推薦使用)#makemenuconfig(基于文本菜單的配置界面,字符終端下推薦使用)#makexconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使)#makegconfig(基于gtk的圖形配置界面)

這些命令產(chǎn)生的配置選項(xiàng)給用戶,用戶選擇->退出->保存后產(chǎn)生.config文件,文件中包含有各種選擇了的配置選項(xiàng),以供Makefile使用,Makefile在會(huì)根據(jù).config的選項(xiàng)來產(chǎn)生autoconf.h,autoconf.h是以C語(yǔ)言的形式定義的各編譯選項(xiàng),供kernel的源文件include.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第24頁(yè)!Linux2.6內(nèi)核配置與編譯配置的原則1)大部分選項(xiàng)可以使用其缺省值或者BSP選用缺省值,只有小部分需要根據(jù)用戶不同的需要選擇。2)將與內(nèi)核其它部分關(guān)系較遠(yuǎn)且不經(jīng)常使用的部分功能代碼編譯成為可加載模塊。有利于減小內(nèi)核的長(zhǎng)度,減小內(nèi)核消耗的內(nèi)存;3)不需要的功能就不要選;4)與內(nèi)核關(guān)心緊密而且經(jīng)常使用的部分功能代碼直接編譯到內(nèi)核中。.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第25頁(yè)!Linux2.6內(nèi)核配置與編譯配置工作過程:當(dāng)用戶執(zhí)行配置命令,Makefile調(diào)用配置工具mconf,mconf從arch/$(ARCH)/Kconfig開始搜索各目錄中的Kconfig文件,并根據(jù)這些文件形成圖形化的配置界面,給用戶進(jìn)行配置Kconfig文件是產(chǎn)生.config文件的輸入文件,也就是說.config中的選項(xiàng)是由Kconfig決定的這是Linux2.6內(nèi)核獨(dú)有的配置系統(tǒng)用戶可以根據(jù)需要增加和修改其中的配置選項(xiàng).gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第26頁(yè)!Linux2.6內(nèi)核配置與編譯配置的注意選項(xiàng)2Generalsetup---> 大部分保持默認(rèn)[*]Supportforpagingofanonymousmemory(swap)應(yīng)該選擇這個(gè)選項(xiàng)將使你的內(nèi)核支持虛擬內(nèi)存。Pc上應(yīng)該選擇,而嵌入式上一般不選[*]SystemVIPC應(yīng)該選擇 為進(jìn)程提供通信機(jī)制。有些程序只有在選Y的情況下才能運(yùn)行,這里一定要選。[*]POSIXMessageQueues POSIX的消息隊(duì)列,它同樣是一種IPC,應(yīng)該選擇[*]Supportforhot-pluggabledevices支持熱插拔的,若是為普通電腦配置內(nèi)核,則最好選擇.gdemb.linux操作系統(tǒng)結(jié)構(gòu)共30頁(yè),您現(xiàn)在瀏覽的是第27頁(yè)!Linux2.6內(nèi)核配置與編譯配置的注意選項(xiàng)4Executablefileformats--->[*]KernelsupportforELFbinaries一定要選5DeviceDrivers--->MemoryTechnologyDevices(MTD)--->存儲(chǔ)設(shè)備層,大部分的flash芯片驅(qū)動(dòng)都基于MTD。用于嵌入式系統(tǒng)。Blockdevices<M>Loopbackdev

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論