




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式LINUX操作系統(tǒng)(co zu x tn)開(kāi)發(fā) 體系結(jié)構(gòu)概覽 進(jìn)程與調(diào)度管理(gunl) 內(nèi)存管理(gunl) 文件系統(tǒng) 系統(tǒng)調(diào)用第1頁(yè)/共39頁(yè)第一頁(yè),共39頁(yè)。體系結(jié)構(gòu)概覽(i ln)第2頁(yè)/共39頁(yè)第二頁(yè),共39頁(yè)。體系結(jié)構(gòu)概覽(i ln) 內(nèi)核的功能(gngnng) 進(jìn)程控制(process management) 內(nèi)存管理(Memory management) 文件系統(tǒng)管理(Filesystem management) 設(shè)備驅(qū)動(dòng)程序(Device control) 網(wǎng)絡(luò)(Networking)第3頁(yè)/共39頁(yè)第三頁(yè),共39頁(yè)。內(nèi)核(ni h)層次 內(nèi)核(ni h)在系統(tǒng)中的位置
2、 用戶進(jìn)程 系統(tǒng)調(diào)用接口 內(nèi)核(ni h) 硬件 什么是Linux內(nèi)核(ni h)? 從程序員的角度 從用戶的角度第4頁(yè)/共39頁(yè)第四頁(yè),共39頁(yè)。系統(tǒng)(xtng)調(diào)用 內(nèi)核提供的一套C語(yǔ)言函數(shù)庫(kù)稱為系統(tǒng)調(diào)用 應(yīng)用程序使用系統(tǒng)調(diào)用完成編程任務(wù) 系統(tǒng)調(diào)用分類(fn li) 進(jìn)程管理 進(jìn)程間通信(IPC) 文件系統(tǒng)管理 網(wǎng)絡(luò)編程(Socket)第5頁(yè)/共39頁(yè)第五頁(yè),共39頁(yè)。Linux結(jié)構(gòu)(jigu)第6頁(yè)/共39頁(yè)第六頁(yè),共39頁(yè)。Linux進(jìn)程(jnchng)管理 Linux是一個(gè)多任務(wù)多用戶操作系統(tǒng) 一個(gè)任務(wù)(task)就是一個(gè)進(jìn)程(process) 每一個(gè)進(jìn)程都具有一定的功能和權(quán)限,它們
3、都運(yùn)行在各自獨(dú)立的虛擬地址空間(kngjin)。 在Linux中,進(jìn)程是系統(tǒng)資源分配的基本單位,也是使用CPU運(yùn)行的基本調(diào)度單位。 第7頁(yè)/共39頁(yè)第七頁(yè),共39頁(yè)。 Linux進(jìn)程(jnchng)概述 程序映像 存放在磁盤上的可執(zhí)行(zhxng)文件的代碼和數(shù)據(jù)的集合稱為可執(zhí)行(zhxng)映象(Executable Image),即程序 當(dāng)一個(gè)程序(可執(zhí)行(zhxng)映象)裝入系統(tǒng)中運(yùn)行時(shí),它就形成了一個(gè)進(jìn)程 進(jìn)程映像 進(jìn)程是由正文段(text)、用戶數(shù)據(jù)段(user segment)和系統(tǒng)數(shù)據(jù)段(system segment)組成的一個(gè)動(dòng)態(tài)實(shí)體。 正文段中存放著進(jìn)程要執(zhí)行(zhxng)
4、的指令代碼,具有只讀的屬性, 用戶數(shù)據(jù)段是進(jìn)程在運(yùn)行過(guò)程中處理數(shù)據(jù)的集合,它們是進(jìn)程直接進(jìn)行操作的所有數(shù)據(jù), 以及進(jìn)程使用的進(jìn)程堆棧。 系統(tǒng)數(shù)據(jù)段存放著進(jìn)程的控制信息。其中包括進(jìn)程控制塊PCB。第8頁(yè)/共39頁(yè)第八頁(yè),共39頁(yè)。進(jìn)程(jnchng)控制塊PCB 進(jìn)程控制塊PCB是名字為task_struct的數(shù)據(jù)結(jié)構(gòu),稱為任務(wù)結(jié)構(gòu)體 任務(wù)結(jié)構(gòu)體中容納了一個(gè)進(jìn)程的所有信息,是系統(tǒng)對(duì)進(jìn)程進(jìn)行管理和控制的有效手段,是系統(tǒng)實(shí)現(xiàn)進(jìn)程調(diào)度的主要依據(jù)(yj) 當(dāng)一個(gè)進(jìn)程被創(chuàng)建時(shí),系統(tǒng)就為該進(jìn)程建立一個(gè)task_struct任務(wù)結(jié)構(gòu)體。當(dāng)進(jìn)程運(yùn)行結(jié)束時(shí),系統(tǒng)撤消該進(jìn)程的任務(wù)結(jié)構(gòu)體 Linux在內(nèi)存空間中開(kāi)辟了
5、一個(gè)專門的區(qū)域存放所有進(jìn)程的任務(wù)結(jié)構(gòu)體,在操作系統(tǒng)的內(nèi)核空間設(shè)置了一個(gè)task數(shù)組,該數(shù)組的每一個(gè)元素是一個(gè)指向任務(wù)結(jié)構(gòu)體的指針,所以task數(shù)組又稱為task向量。 進(jìn)程的任務(wù)結(jié)構(gòu)體是進(jìn)程存在的唯一標(biāo)志,調(diào)度程序維護(hù)current指針,它指向當(dāng)前正在運(yùn)行的進(jìn)程。第9頁(yè)/共39頁(yè)第九頁(yè),共39頁(yè)。Linux調(diào)度(diod)分析 Linux進(jìn)程( jnchng)的狀態(tài)變化第10頁(yè)/共39頁(yè)第十頁(yè),共39頁(yè)。進(jìn)程(jnchng)狀態(tài) 運(yùn)行態(tài):進(jìn)程正在使用CPU運(yùn)行的狀態(tài)。處于運(yùn)行態(tài)的進(jìn)程又稱為(chn wi)當(dāng)前進(jìn)程(current process) 可運(yùn)行態(tài):進(jìn)程已分配到除CPU外所需要的其它資
6、源,等待系統(tǒng)把CPU分配給它之后即可投入運(yùn)行 等待態(tài):又稱睡眠態(tài),它是進(jìn)程正在等待某個(gè)事件或某個(gè)資源時(shí)所處的狀態(tài)。 等待態(tài)進(jìn)一步分為可中斷的等待態(tài)和不可中斷的等待態(tài)。處于可中斷等待態(tài)的進(jìn)程可以由信號(hào)(signal)解除其等待態(tài)。處于不可中斷等待態(tài)的進(jìn)程,一般是直接或間接等待硬件條件。 它只能用特定的方式來(lái)解除,例如使用喚醒函數(shù)wake_up()等 暫停態(tài):進(jìn)程需要接受某種特殊處理而暫時(shí)停止運(yùn)行所處的狀態(tài)。通常進(jìn)程在接受到外部進(jìn)程的某個(gè)信號(hào)進(jìn)入暫停態(tài),例如,正在接受調(diào)試的進(jìn)程就處于這種狀態(tài)。 僵死態(tài):進(jìn)程的運(yùn)行已經(jīng)結(jié)束,但它的任務(wù)結(jié)構(gòu)體仍在系統(tǒng)中。第11頁(yè)/共39頁(yè)第十一頁(yè),共39頁(yè)。核心(hx
7、n)態(tài)和用戶態(tài) Linux的進(jìn)程(jnchng)處理機(jī)上運(yùn)行時(shí),處理機(jī)提供了兩種不同的的執(zhí)行狀態(tài),核心態(tài)(kernel mode)和用戶態(tài)(user mode)。 核心態(tài)又稱系統(tǒng)態(tài),它具有較高的特權(quán),能執(zhí)行所有的機(jī)器指令,包括由操作系統(tǒng)執(zhí)行的特權(quán)指令,能訪問(wèn)所有的寄存器和存儲(chǔ)區(qū)域,能直接控制所有的系統(tǒng)資源。 Linux在執(zhí)行內(nèi)核程序時(shí)是處于核心態(tài)下。 用戶態(tài)是進(jìn)程(jnchng)的普通執(zhí)行狀態(tài),在用戶態(tài)下進(jìn)程(jnchng)具有較低的特權(quán), 只能執(zhí)行規(guī)定的機(jī)器指令,不能執(zhí)行特權(quán)指令。進(jìn)程(jnchng)在用戶態(tài)下只能訪問(wèn)進(jìn)程(jnchng)的存儲(chǔ)空間。在用戶態(tài)下進(jìn)程(jnchng)不能與系統(tǒng)硬
8、件相互作用,不能訪問(wèn)系統(tǒng)資源。第12頁(yè)/共39頁(yè)第十二頁(yè),共39頁(yè)。Linux進(jìn)程(jnchng)調(diào)度方式 Linux系統(tǒng)采用搶占調(diào)度方式,又稱可剝奪(bdu)調(diào)度方式。采用這種調(diào)度方式時(shí),對(duì)于當(dāng)前運(yùn)行的進(jìn)程而言,當(dāng)有更緊急的進(jìn)程到來(lái)時(shí),系統(tǒng)將剝奪(bdu)當(dāng)前進(jìn)程使用處理機(jī)的權(quán)利,立即停止它在處理機(jī)上的運(yùn)行,而把處理機(jī)分配給那個(gè)更緊急的進(jìn)程。 Linux采用時(shí)間片輪轉(zhuǎn)法。對(duì)某個(gè)運(yùn)行中的進(jìn)程,當(dāng)它的時(shí)間片用完時(shí),系統(tǒng)將停止它的運(yùn)行并把處理機(jī)分配給其它進(jìn)程。第13頁(yè)/共39頁(yè)第十三頁(yè),共39頁(yè)。Linux進(jìn)程調(diào)度(diod)方法 Linux進(jìn)程調(diào)度采用動(dòng)態(tài)(dngti)優(yōu)先級(jí)法,調(diào)度對(duì)象是可運(yùn)行
9、隊(duì)列, 可運(yùn)行隊(duì)列中優(yōu)先級(jí)大的進(jìn)程首先得到CPU投入運(yùn)行。 進(jìn)程在運(yùn)行中,counter的代表進(jìn)程的動(dòng)態(tài)(dngti)優(yōu)先級(jí)。 Linux采取了加權(quán)的方法來(lái)保證實(shí)時(shí)進(jìn)程優(yōu)先于普通進(jìn)程。第14頁(yè)/共39頁(yè)第十四頁(yè),共39頁(yè)。進(jìn)程(jnchng)調(diào)度時(shí)機(jī) 時(shí)機(jī)1進(jìn)程狀態(tài)發(fā)生變化時(shí)。 處于運(yùn)行態(tài)下的進(jìn)程要等待某種資源, 運(yùn)行態(tài)下的進(jìn)程在程序執(zhí)行完畢后,一般通過(guò)調(diào)用內(nèi)核函數(shù)do_exit()終止運(yùn)行并轉(zhuǎn)入僵死態(tài)。 處于等待態(tài)的進(jìn)程被喚醒后,將加入到可運(yùn)行隊(duì)列中時(shí)。 進(jìn)程從運(yùn)行態(tài)轉(zhuǎn)入暫停態(tài)時(shí)。 進(jìn)程從暫停態(tài)成為可運(yùn)行態(tài)時(shí)。 時(shí)機(jī)2當(dāng)前進(jìn)程時(shí)間片用完時(shí)。 時(shí)機(jī)3進(jìn)程從系統(tǒng)調(diào)用返回(fnhu)到用戶態(tài)時(shí)。
10、時(shí)機(jī)4中斷處理后,進(jìn)程返回(fnhu)到用戶態(tài)時(shí)。第15頁(yè)/共39頁(yè)第十五頁(yè),共39頁(yè)。Linux內(nèi)存(ni cn)管理模式 MMU內(nèi)存管理 MMU是內(nèi)存管理單元 內(nèi)存的管理單位是頁(yè)(page),通常是4K或8K 虛擬地址與物理地址 物理地址可以位于RAM/FLASH/DISK 經(jīng)過(guò)MMU,虛擬地址可以轉(zhuǎn)化成物理地址 MMU可以在轉(zhuǎn)換過(guò)程中檢查權(quán)限(qunxin),以保護(hù)內(nèi)存不受非法訪問(wèn) 如果沒(méi)有MMU,進(jìn)程與內(nèi)核之間無(wú)法隔離和保護(hù),系統(tǒng)容易崩潰16第16頁(yè)/共39頁(yè)第十六頁(yè),共39頁(yè)。Linux的三級(jí)目錄(ml) Linux采用(ciyng)三級(jí)目錄底層MMU支持實(shí)現(xiàn)存儲(chǔ)管理,可以適應(yīng)64/
11、32位CPU 三級(jí)目錄是頁(yè)面目錄、中間目錄和頁(yè)表第17頁(yè)/共39頁(yè)第十七頁(yè),共39頁(yè)。進(jìn)程(jnchng)空間和內(nèi)核空間 進(jìn)程名義上有4G的空間 實(shí)際上只有3G屬于進(jìn)程本身(bnshn) 虛擬系統(tǒng)空間占據(jù)高位1G第18頁(yè)/共39頁(yè)第十八頁(yè),共39頁(yè)。Linux內(nèi)核(ni h)啟動(dòng)分析 搭建開(kāi)發(fā)環(huán)境 宿主機(jī)和目標(biāo)機(jī) 交叉編譯 編譯引導(dǎo)程序(u-boot或者vivi) 編譯內(nèi)核(ni h)(mizi linux) 編譯根文件系統(tǒng) 使用JTAG將編譯好的映像寫入目標(biāo)板 可以寫入到Nor Flash當(dāng)中 可以寫入到Nand Flash當(dāng)中第19頁(yè)/共39頁(yè)第十九頁(yè),共39頁(yè)。Linux內(nèi)核(ni h)
12、啟動(dòng)分析 上電 CPU根據(jù)設(shè)置讀取Flash中的Bootloader Bootloader作兩段式加載 Bootload將控制權(quán)移交給內(nèi)核 Bootloader事先檢測(cè)硬件參數(shù),例如物理地址 Bootloader加載壓縮的內(nèi)核映像 內(nèi)核自解壓 內(nèi)核將自身(zshn)定位到正確的物理地址第20頁(yè)/共39頁(yè)第二十頁(yè),共39頁(yè)。內(nèi)核(ni h)啟動(dòng)流程 執(zhí)行init初始化進(jìn)程( jnchng) 啟動(dòng)一個(gè)shell 執(zhí)行啟動(dòng)腳本文件 顯示登錄提示符等待登錄第21頁(yè)/共39頁(yè)第二十一頁(yè),共39頁(yè)。嵌入式LINUX操作系統(tǒng)(co zu x tn)內(nèi)核 選擇內(nèi)核(ni h) 內(nèi)核(ni h)配置 編譯內(nèi)核(
13、ni h) 安裝內(nèi)核(ni h)第22頁(yè)/共39頁(yè)第二十二頁(yè),共39頁(yè)。 Linux內(nèi)核(ni h)源碼 內(nèi)核目錄(ml)結(jié)構(gòu): /usr/src/Linux-* /arch(重點(diǎn)) /drivers /fs /include /init /ipc /kernel /mm /net第23頁(yè)/共39頁(yè)第二十三頁(yè),共39頁(yè)。內(nèi)核(ni h)配置 進(jìn)入到內(nèi)核(ni h)源代碼目錄 cd /usr/src/linux-2.* make config make xconfig make menuconfig make第24頁(yè)/共39頁(yè)第二十四頁(yè),共39頁(yè)。編譯(biny)生成的文件 vmlinux 未壓
14、縮(y su)的Linux內(nèi)核 varch/boot/zImage 經(jīng)zlib壓縮(y su)后的Linux內(nèi)核 varch/boot/bzImage 經(jīng)zlib壓縮(y su)后的Linux內(nèi)核,b是指big,壓縮(y su)狠 /boot/vmlinuz- 經(jīng)zlib壓縮(y su)后的Linux內(nèi)核第25頁(yè)/共39頁(yè)第二十五頁(yè),共39頁(yè)。編譯(biny)生成的文件 v/boot/System.map- 內(nèi)核(ni h)符號(hào)地址 /boot/initrd-.img ramdisk,要掛載的根文件系統(tǒng) /lib/modules/ 模塊 vmodules.dep 模塊依賴文件第26頁(yè)/共39頁(yè)
15、第二十六頁(yè),共39頁(yè)。裁剪(cijin)Linux 目的是創(chuàng)建嵌入式Linux 嵌入式硬件資源有限,所以要裁剪軟件 裁剪的對(duì)象(duxing)包括: Linux內(nèi)核 庫(kù) 守護(hù)進(jìn)程 GUI第27頁(yè)/共39頁(yè)第二十七頁(yè),共39頁(yè)。裁剪(cijin)Linux 選擇合適(hsh)的文件系統(tǒng) ext2,ext3,jffs2 模塊機(jī)制 網(wǎng)絡(luò)協(xié)議 無(wú)用的驅(qū)動(dòng)程序 調(diào)試信息 裁剪的技術(shù)要求 能省就省,能小就小,能快就快第28頁(yè)/共39頁(yè)第二十八頁(yè),共39頁(yè)。安裝(nzhung)內(nèi)核 移植相關(guān)(xinggun)的文件 相關(guān)(xinggun)文件和目錄 arch/arm/config.in arch/arm/M
16、akefile arch/arm/boot/Makefile arch/arm/mach-s3c2410/* include/asm-arm/arch-s3c2410/* arch/arm/tools/mach-types arch/arm/boot/compressed/head-s3c2410.S arch/arm/boot/compressed/Makefile第29頁(yè)/共39頁(yè)第二十九頁(yè),共39頁(yè)。嵌入式Linux內(nèi)核(ni h)調(diào)試 Printk() Oops消息(xio xi) /proc文件系統(tǒng) Kgdb 追蹤工具(strace,ltt,gprof,gcov,memwatch)
17、第30頁(yè)/共39頁(yè)第三十頁(yè),共39頁(yè)。Linux調(diào)試(dio sh)工具 Linux系統(tǒng)(xtng)察看和調(diào)參 /proc文件系統(tǒng)(xtng) 用戶空間工具: 內(nèi)存工具:MEMWATCH 和 YAMD strace GNU 調(diào)試器(gdb) 內(nèi)核工具: 內(nèi)核源代碼級(jí)調(diào)試器(kgdb) 內(nèi)建內(nèi)核調(diào)試器(kdb) Oops第31頁(yè)/共39頁(yè)第三十一頁(yè),共39頁(yè)。/proc文件系統(tǒng) /proc內(nèi)存文件系統(tǒng),記錄系統(tǒng)相關(guān)信息 可以直接使用(shyng)cat得到相關(guān)信息 也可以編程通過(guò)文件方式得到相關(guān)信息第32頁(yè)/共39頁(yè)第三十二頁(yè),共39頁(yè)。通過(guò)(tnggu)/proc獲取進(jìn)程信息 找到相關(guān)進(jìn)程( jnchng)號(hào) 找到相關(guān)/proc子目錄 獲取特定參數(shù)第33頁(yè)/共39頁(yè)第三十三頁(yè),共39頁(yè)。通過(guò)(tnggu)/proc獲取硬件信息 找到相關(guān)硬件標(biāo)識(shí) 在/proc中找到相關(guān)硬件目錄(ml) 查找特定硬件信息第34頁(yè)/共39頁(yè)第三十四頁(yè),共39頁(yè)。通過(guò)(tnggu)/proc獲取內(nèi)核信息 內(nèi)核信息一般存放(cnfng)于/proc
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第4課 我們的公共生活 第1課時(shí) 認(rèn)識(shí)公共生活 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版
- 第2課《濟(jì)南的冬天》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)上冊(cè)
- 第二單元觀察物體(二)(教學(xué)設(shè)計(jì))-2023-2024學(xué)年人教版四年級(jí)下冊(cè)數(shù)學(xué)
- Unit 1 School Subjects Lesson 1(教學(xué)設(shè)計(jì))-2023-2024學(xué)年人教新起點(diǎn)版英語(yǔ)三年級(jí)下冊(cè)
- 垂直第三課時(shí)教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)滬教版
- 除法(教學(xué)設(shè)計(jì))-2023-2024學(xué)年二年級(jí)下冊(cè)數(shù)學(xué)人教版
- 2025年機(jī)動(dòng)車零部件及配件項(xiàng)目發(fā)展計(jì)劃
- 10《勸學(xué)》與《師說(shuō)》聯(lián)讀教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 小學(xué)生《踐行勞動(dòng)教育弘揚(yáng)節(jié)約精神》教案
- 2025年激光掃描繪圖機(jī)項(xiàng)目發(fā)展計(jì)劃
- 土建、裝飾、維修改造等零星工程施工組織設(shè)計(jì)技術(shù)標(biāo)
- 寵物貓護(hù)理教學(xué)
- 高速公路養(yǎng)護(hù)作業(yè)安全培訓(xùn)內(nèi)容
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 《大白菜種植栽培技》課件
- 北京工業(yè)大學(xué)《數(shù)據(jù)挖掘》2023-2024學(xué)年第一學(xué)期期末試卷
- 圖書借閱登記表
- 標(biāo)準(zhǔn)化機(jī)房改造方案
- 2024年重慶市公務(wù)員錄用考試《行測(cè)》真題及解析
- 珠海市第三人民醫(yī)院中醫(yī)智能臨床輔助診療系統(tǒng)建設(shè)方案
- 早產(chǎn)臨床診斷與治療指南
評(píng)論
0/150
提交評(píng)論