版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、嵌入式LINUX操作系統(tǒng)開發(fā) 體系結(jié)構(gòu)概覽 進程與調(diào)度管理 內(nèi)存管理 文件系統(tǒng) 系統(tǒng)調(diào)用第1頁/共39頁體系結(jié)構(gòu)概覽第2頁/共39頁體系結(jié)構(gòu)概覽 內(nèi)核的功能 進程控制(process management) 內(nèi)存管理(Memory management) 文件系統(tǒng)管理(Filesystem management) 設備驅(qū)動程序(Device control) 網(wǎng)絡(Networking)第3頁/共39頁內(nèi)核層次 內(nèi)核在系統(tǒng)中的位置 用戶進程 系統(tǒng)調(diào)用接口 內(nèi)核 硬件 什么是Linux內(nèi)核? 從程序員的角度 從用戶的角度第4頁/共39頁系統(tǒng)調(diào)用 內(nèi)核提供的一套C語言函數(shù)庫稱為系統(tǒng)調(diào)用 應用程序使
2、用系統(tǒng)調(diào)用完成編程任務 系統(tǒng)調(diào)用分類 進程管理 進程間通信(IPC) 文件系統(tǒng)管理 網(wǎng)絡編程(Socket)第5頁/共39頁Linux結(jié)構(gòu)第6頁/共39頁Linux進程管理 Linux是一個多任務多用戶操作系統(tǒng) 一個任務(task)就是一個進程(process) 每一個進程都具有一定的功能和權(quán)限,它們都運行在各自獨立的虛擬地址空間。 在Linux中,進程是系統(tǒng)資源分配的基本單位,也是使用CPU運行的基本調(diào)度單位。 第7頁/共39頁 Linux進程概述 程序映像 存放在磁盤上的可執(zhí)行文件的代碼和數(shù)據(jù)的集合稱為可執(zhí)行映象(Executable Image),即程序 當一個程序(可執(zhí)行映象)裝入系統(tǒng)
3、中運行時,它就形成了一個進程 進程映像 進程是由正文段(text)、用戶數(shù)據(jù)段(user segment)和系統(tǒng)數(shù)據(jù)段(system segment)組成的一個動態(tài)實體。 正文段中存放著進程要執(zhí)行的指令代碼,具有只讀的屬性, 用戶數(shù)據(jù)段是進程在運行過程中處理數(shù)據(jù)的集合,它們是進程直接進行操作的所有數(shù)據(jù), 以及進程使用的進程堆棧。 系統(tǒng)數(shù)據(jù)段存放著進程的控制信息。其中包括進程控制塊PCB。第8頁/共39頁進程控制塊PCB 進程控制塊PCB是名字為task_struct的數(shù)據(jù)結(jié)構(gòu),稱為任務結(jié)構(gòu)體 任務結(jié)構(gòu)體中容納了一個進程的所有信息,是系統(tǒng)對進程進行管理和控制的有效手段,是系統(tǒng)實現(xiàn)進程調(diào)度的主要依
4、據(jù) 當一個進程被創(chuàng)建時,系統(tǒng)就為該進程建立一個task_struct任務結(jié)構(gòu)體。當進程運行結(jié)束時,系統(tǒng)撤消該進程的任務結(jié)構(gòu)體 Linux在內(nèi)存空間中開辟了一個專門的區(qū)域存放所有進程的任務結(jié)構(gòu)體,在操作系統(tǒng)的內(nèi)核空間設置了一個task數(shù)組,該數(shù)組的每一個元素是一個指向任務結(jié)構(gòu)體的指針,所以task數(shù)組又稱為task向量。 進程的任務結(jié)構(gòu)體是進程存在的唯一標志,調(diào)度程序維護current指針,它指向當前正在運行的進程。第9頁/共39頁Linux調(diào)度分析 Linux進程的狀態(tài)變化第10頁/共39頁進程狀態(tài) 運行態(tài):進程正在使用CPU運行的狀態(tài)。處于運行態(tài)的進程又稱為當前進程(current proc
5、ess) 可運行態(tài):進程已分配到除CPU外所需要的其它資源,等待系統(tǒng)把CPU分配給它之后即可投入運行 等待態(tài):又稱睡眠態(tài),它是進程正在等待某個事件或某個資源時所處的狀態(tài)。 等待態(tài)進一步分為可中斷的等待態(tài)和不可中斷的等待態(tài)。處于可中斷等待態(tài)的進程可以由信號(signal)解除其等待態(tài)。處于不可中斷等待態(tài)的進程,一般是直接或間接等待硬件條件。 它只能用特定的方式來解除,例如使用喚醒函數(shù)wake_up()等 暫停態(tài):進程需要接受某種特殊處理而暫時停止運行所處的狀態(tài)。通常進程在接受到外部進程的某個信號進入暫停態(tài),例如,正在接受調(diào)試的進程就處于這種狀態(tài)。 僵死態(tài):進程的運行已經(jīng)結(jié)束,但它的任務結(jié)構(gòu)體仍在
6、系統(tǒng)中。第11頁/共39頁核心態(tài)和用戶態(tài) Linux的進程處理機上運行時,處理機提供了兩種不同的的執(zhí)行狀態(tài),核心態(tài)(kernel mode)和用戶態(tài)(user mode)。 核心態(tài)又稱系統(tǒng)態(tài),它具有較高的特權(quán),能執(zhí)行所有的機器指令,包括由操作系統(tǒng)執(zhí)行的特權(quán)指令,能訪問所有的寄存器和存儲區(qū)域,能直接控制所有的系統(tǒng)資源。 Linux在執(zhí)行內(nèi)核程序時是處于核心態(tài)下。 用戶態(tài)是進程的普通執(zhí)行狀態(tài),在用戶態(tài)下進程具有較低的特權(quán), 只能執(zhí)行規(guī)定的機器指令,不能執(zhí)行特權(quán)指令。進程在用戶態(tài)下只能訪問進程的存儲空間。在用戶態(tài)下進程不能與系統(tǒng)硬件相互作用,不能訪問系統(tǒng)資源。第12頁/共39頁Linux進程調(diào)度方式
7、 Linux系統(tǒng)采用搶占調(diào)度方式,又稱可剝奪調(diào)度方式。采用這種調(diào)度方式時,對于當前運行的進程而言,當有更緊急的進程到來時,系統(tǒng)將剝奪當前進程使用處理機的權(quán)利,立即停止它在處理機上的運行,而把處理機分配給那個更緊急的進程。 Linux采用時間片輪轉(zhuǎn)法。對某個運行中的進程,當它的時間片用完時,系統(tǒng)將停止它的運行并把處理機分配給其它進程。第13頁/共39頁Linux進程調(diào)度方法 Linux進程調(diào)度采用動態(tài)優(yōu)先級法,調(diào)度對象是可運行隊列, 可運行隊列中優(yōu)先級大的進程首先得到CPU投入運行。 進程在運行中,counter的代表進程的動態(tài)優(yōu)先級。 Linux采取了加權(quán)的方法來保證實時進程優(yōu)先于普通進程。第
8、14頁/共39頁進程調(diào)度時機 時機1進程狀態(tài)發(fā)生變化時。 處于運行態(tài)下的進程要等待某種資源, 運行態(tài)下的進程在程序執(zhí)行完畢后,一般通過調(diào)用內(nèi)核函數(shù)do_exit()終止運行并轉(zhuǎn)入僵死態(tài)。 處于等待態(tài)的進程被喚醒后,將加入到可運行隊列中時。 進程從運行態(tài)轉(zhuǎn)入暫停態(tài)時。 進程從暫停態(tài)成為可運行態(tài)時。 時機2當前進程時間片用完時。 時機3進程從系統(tǒng)調(diào)用返回到用戶態(tài)時。 時機4中斷處理后,進程返回到用戶態(tài)時。第15頁/共39頁Linux內(nèi)存管理模式 MMU內(nèi)存管理 MMU是內(nèi)存管理單元 內(nèi)存的管理單位是頁(page),通常是4K或8K 虛擬地址與物理地址 物理地址可以位于RAM/FLASH/DISK
9、經(jīng)過MMU,虛擬地址可以轉(zhuǎn)化成物理地址 MMU可以在轉(zhuǎn)換過程中檢查權(quán)限,以保護內(nèi)存不受非法訪問 如果沒有MMU,進程與內(nèi)核之間無法隔離和保護,系統(tǒng)容易崩潰16第16頁/共39頁Linux的三級目錄 Linux采用三級目錄底層MMU支持實現(xiàn)存儲管理,可以適應64/32位CPU 三級目錄是頁面目錄、中間目錄和頁表第17頁/共39頁進程空間和內(nèi)核空間 進程名義上有4G的空間 實際上只有3G屬于進程本身 虛擬系統(tǒng)空間占據(jù)高位1G第18頁/共39頁Linux內(nèi)核啟動分析 搭建開發(fā)環(huán)境 宿主機和目標機 交叉編譯 編譯引導程序(u-boot或者vivi) 編譯內(nèi)核(mizi linux) 編譯根文件系統(tǒng) 使
10、用JTAG將編譯好的映像寫入目標板 可以寫入到Nor Flash當中 可以寫入到Nand Flash當中第19頁/共39頁Linux內(nèi)核啟動分析 上電 CPU根據(jù)設置讀取Flash中的Bootloader Bootloader作兩段式加載 Bootload將控制權(quán)移交給內(nèi)核 Bootloader事先檢測硬件參數(shù),例如物理地址 Bootloader加載壓縮的內(nèi)核映像 內(nèi)核自解壓 內(nèi)核將自身定位到正確的物理地址第20頁/共39頁內(nèi)核啟動流程 執(zhí)行init初始化進程 啟動一個shell 執(zhí)行啟動腳本文件 顯示登錄提示符等待登錄第21頁/共39頁嵌入式LINUX操作系統(tǒng)內(nèi)核 選擇內(nèi)核 內(nèi)核配置 編譯內(nèi)
11、核 安裝內(nèi)核第22頁/共39頁 Linux內(nèi)核源碼 內(nèi)核目錄結(jié)構(gòu): /usr/src/Linux-* /arch(重點) /drivers /fs /include /init /ipc /kernel /mm /net第23頁/共39頁內(nèi)核配置 進入到內(nèi)核源代碼目錄 cd /usr/src/linux-2.* make config make xconfig make menuconfig make第24頁/共39頁編譯生成的文件 vmlinux 未壓縮的Linux內(nèi)核 varch/boot/zImage 經(jīng)zlib壓縮后的Linux內(nèi)核 varch/boot/bzImage 經(jīng)zlib壓縮
12、后的Linux內(nèi)核,b是指big,壓縮狠 /boot/vmlinuz- 經(jīng)zlib壓縮后的Linux內(nèi)核第25頁/共39頁編譯生成的文件 v/boot/System.map- 內(nèi)核符號地址 /boot/initrd-.img ramdisk,要掛載的根文件系統(tǒng) /lib/modules/ 模塊 vmodules.dep 模塊依賴文件第26頁/共39頁裁剪Linux 目的是創(chuàng)建嵌入式Linux 嵌入式硬件資源有限,所以要裁剪軟件 裁剪的對象包括: Linux內(nèi)核 庫 守護進程 GUI第27頁/共39頁裁剪Linux 選擇合適的文件系統(tǒng) ext2,ext3,jffs2 模塊機制 網(wǎng)絡協(xié)議 無用的驅(qū)
13、動程序 調(diào)試信息 裁剪的技術要求 能省就省,能小就小,能快就快第28頁/共39頁安裝內(nèi)核 移植相關的文件 相關文件和目錄 arch/arm/config.in arch/arm/Makefile 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頁/共39頁嵌入式Linux內(nèi)核調(diào)試 Pri
14、ntk() Oops消息 /proc文件系統(tǒng) Kgdb 追蹤工具(strace,ltt,gprof,gcov,memwatch) 第30頁/共39頁Linux調(diào)試工具 Linux系統(tǒng)察看和調(diào)參 /proc文件系統(tǒng) 用戶空間工具: 內(nèi)存工具:MEMWATCH 和 YAMD strace GNU 調(diào)試器(gdb) 內(nèi)核工具: 內(nèi)核源代碼級調(diào)試器(kgdb) 內(nèi)建內(nèi)核調(diào)試器(kdb) Oops第31頁/共39頁/proc文件系統(tǒng) /proc內(nèi)存文件系統(tǒng),記錄系統(tǒng)相關信息 可以直接使用cat得到相關信息 也可以編程通過文件方式得到相關信息第32頁/共39頁通過/proc獲取進程信息 找到相關進程號 找到相關/proc子目錄 獲取特定參數(shù)第33頁/共39頁通過/proc獲取硬件信息 找到相關硬件標識 在/proc中找
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 門診輸液室護士工作總結(jié)
- 幼教行業(yè)助理工作總結(jié)
- 電影行業(yè)技巧提升總結(jié)
- 國家課程:《機械制造裝備設計》第一章
- 2025-2030全球管式爐行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球工業(yè)應用移動機器人行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國電動低升降托盤車行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國塑料3D打印長絲行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球工業(yè)膠囊填充機行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國微米級氧化鋯行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 《敏捷項目管理》課件
- 統(tǒng)編版(2024新版)七年級上學期道德與法治期末綜合測試卷(含答案)
- 黑龍江省哈爾濱市2024屆中考數(shù)學試卷(含答案)
- 前程無憂測評題庫及答案
- 高三日語一輪復習助詞「と」的用法課件
- 物業(yè)管理服務房屋及公用設施維修養(yǎng)護方案
- 五年級上冊小數(shù)遞等式計算200道及答案
- 帶拼音生字本模板(可A4打印)
- 超高大截面框架柱成型質(zhì)量控制
- 森林法講解課件
評論
0/150
提交評論