嵌入式操作系統(tǒng)原理實用教案_第1頁
嵌入式操作系統(tǒng)原理實用教案_第2頁
嵌入式操作系統(tǒng)原理實用教案_第3頁
嵌入式操作系統(tǒng)原理實用教案_第4頁
嵌入式操作系統(tǒng)原理實用教案_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、嵌入式LINUX操作系統(tǒng)(co zu x tn)開發(fā) 體系結構概覽 進程與調度管理(gunl) 內存管理(gunl) 文件系統(tǒng) 系統(tǒng)調用第1頁/共39頁第一頁,共39頁。體系結構概覽(i ln)第2頁/共39頁第二頁,共39頁。體系結構概覽(i ln) 內核的功能(gngnng) 進程控制(process management) 內存管理(Memory management) 文件系統(tǒng)管理(Filesystem management) 設備驅動程序(Device control) 網(wǎng)絡(Networking)第3頁/共39頁第三頁,共39頁。內核(ni h)層次 內核(ni h)在系統(tǒng)中的位置

2、 用戶進程 系統(tǒng)調用接口 內核(ni h) 硬件 什么是Linux內核(ni h)? 從程序員的角度 從用戶的角度第4頁/共39頁第四頁,共39頁。系統(tǒng)(xtng)調用 內核提供的一套C語言函數(shù)庫稱為系統(tǒng)調用 應用程序使用系統(tǒng)調用完成編程任務 系統(tǒng)調用分類(fn li) 進程管理 進程間通信(IPC) 文件系統(tǒng)管理 網(wǎng)絡編程(Socket)第5頁/共39頁第五頁,共39頁。Linux結構(jigu)第6頁/共39頁第六頁,共39頁。Linux進程(jnchng)管理 Linux是一個多任務多用戶操作系統(tǒng) 一個任務(task)就是一個進程(process) 每一個進程都具有一定的功能和權限,它們

3、都運行在各自獨立的虛擬地址空間(kngjin)。 在Linux中,進程是系統(tǒng)資源分配的基本單位,也是使用CPU運行的基本調度單位。 第7頁/共39頁第七頁,共39頁。 Linux進程(jnchng)概述 程序映像 存放在磁盤上的可執(zhí)行(zhxng)文件的代碼和數(shù)據(jù)的集合稱為可執(zhí)行(zhxng)映象(Executable Image),即程序 當一個程序(可執(zhí)行(zhxng)映象)裝入系統(tǒng)中運行時,它就形成了一個進程 進程映像 進程是由正文段(text)、用戶數(shù)據(jù)段(user segment)和系統(tǒng)數(shù)據(jù)段(system segment)組成的一個動態(tài)實體。 正文段中存放著進程要執(zhí)行(zhxng)

4、的指令代碼,具有只讀的屬性, 用戶數(shù)據(jù)段是進程在運行過程中處理數(shù)據(jù)的集合,它們是進程直接進行操作的所有數(shù)據(jù), 以及進程使用的進程堆棧。 系統(tǒng)數(shù)據(jù)段存放著進程的控制信息。其中包括進程控制塊PCB。第8頁/共39頁第八頁,共39頁。進程(jnchng)控制塊PCB 進程控制塊PCB是名字為task_struct的數(shù)據(jù)結構,稱為任務結構體 任務結構體中容納了一個進程的所有信息,是系統(tǒng)對進程進行管理和控制的有效手段,是系統(tǒng)實現(xiàn)進程調度的主要依據(jù)(yj) 當一個進程被創(chuàng)建時,系統(tǒng)就為該進程建立一個task_struct任務結構體。當進程運行結束時,系統(tǒng)撤消該進程的任務結構體 Linux在內存空間中開辟了

5、一個專門的區(qū)域存放所有進程的任務結構體,在操作系統(tǒng)的內核空間設置了一個task數(shù)組,該數(shù)組的每一個元素是一個指向任務結構體的指針,所以task數(shù)組又稱為task向量。 進程的任務結構體是進程存在的唯一標志,調度程序維護current指針,它指向當前正在運行的進程。第9頁/共39頁第九頁,共39頁。Linux調度(diod)分析 Linux進程( jnchng)的狀態(tài)變化第10頁/共39頁第十頁,共39頁。進程(jnchng)狀態(tài) 運行態(tài):進程正在使用CPU運行的狀態(tài)。處于運行態(tài)的進程又稱為(chn wi)當前進程(current process) 可運行態(tài):進程已分配到除CPU外所需要的其它資

6、源,等待系統(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),例如,正在接受調試的進程就處于這種狀態(tài)。 僵死態(tài):進程的運行已經(jīng)結束,但它的任務結構體仍在系統(tǒng)中。第11頁/共39頁第十一頁,共39頁。核心(hx

7、n)態(tài)和用戶態(tài) Linux的進程(jnchng)處理機上運行時,處理機提供了兩種不同的的執(zhí)行狀態(tài),核心態(tài)(kernel mode)和用戶態(tài)(user mode)。 核心態(tài)又稱系統(tǒng)態(tài),它具有較高的特權,能執(zhí)行所有的機器指令,包括由操作系統(tǒng)執(zhí)行的特權指令,能訪問所有的寄存器和存儲區(qū)域,能直接控制所有的系統(tǒng)資源。 Linux在執(zhí)行內核程序時是處于核心態(tài)下。 用戶態(tài)是進程(jnchng)的普通執(zhí)行狀態(tài),在用戶態(tài)下進程(jnchng)具有較低的特權, 只能執(zhí)行規(guī)定的機器指令,不能執(zhí)行特權指令。進程(jnchng)在用戶態(tài)下只能訪問進程(jnchng)的存儲空間。在用戶態(tài)下進程(jnchng)不能與系統(tǒng)硬

8、件相互作用,不能訪問系統(tǒng)資源。第12頁/共39頁第十二頁,共39頁。Linux進程(jnchng)調度方式 Linux系統(tǒng)采用搶占調度方式,又稱可剝奪(bdu)調度方式。采用這種調度方式時,對于當前運行的進程而言,當有更緊急的進程到來時,系統(tǒng)將剝奪(bdu)當前進程使用處理機的權利,立即停止它在處理機上的運行,而把處理機分配給那個更緊急的進程。 Linux采用時間片輪轉法。對某個運行中的進程,當它的時間片用完時,系統(tǒng)將停止它的運行并把處理機分配給其它進程。第13頁/共39頁第十三頁,共39頁。Linux進程調度(diod)方法 Linux進程調度采用動態(tài)(dngti)優(yōu)先級法,調度對象是可運行

9、隊列, 可運行隊列中優(yōu)先級大的進程首先得到CPU投入運行。 進程在運行中,counter的代表進程的動態(tài)(dngti)優(yōu)先級。 Linux采取了加權的方法來保證實時進程優(yōu)先于普通進程。第14頁/共39頁第十四頁,共39頁。進程(jnchng)調度時機 時機1進程狀態(tài)發(fā)生變化時。 處于運行態(tài)下的進程要等待某種資源, 運行態(tài)下的進程在程序執(zhí)行完畢后,一般通過調用內核函數(shù)do_exit()終止運行并轉入僵死態(tài)。 處于等待態(tài)的進程被喚醒后,將加入到可運行隊列中時。 進程從運行態(tài)轉入暫停態(tài)時。 進程從暫停態(tài)成為可運行態(tài)時。 時機2當前進程時間片用完時。 時機3進程從系統(tǒng)調用返回(fnhu)到用戶態(tài)時。

10、時機4中斷處理后,進程返回(fnhu)到用戶態(tài)時。第15頁/共39頁第十五頁,共39頁。Linux內存(ni cn)管理模式 MMU內存管理 MMU是內存管理單元 內存的管理單位是頁(page),通常是4K或8K 虛擬地址與物理地址 物理地址可以位于RAM/FLASH/DISK 經(jīng)過MMU,虛擬地址可以轉化成物理地址 MMU可以在轉換過程中檢查權限(qunxin),以保護內存不受非法訪問 如果沒有MMU,進程與內核之間無法隔離和保護,系統(tǒng)容易崩潰16第16頁/共39頁第十六頁,共39頁。Linux的三級目錄(ml) Linux采用(ciyng)三級目錄底層MMU支持實現(xiàn)存儲管理,可以適應64/

11、32位CPU 三級目錄是頁面目錄、中間目錄和頁表第17頁/共39頁第十七頁,共39頁。進程(jnchng)空間和內核空間 進程名義上有4G的空間 實際上只有3G屬于進程本身(bnshn) 虛擬系統(tǒng)空間占據(jù)高位1G第18頁/共39頁第十八頁,共39頁。Linux內核(ni h)啟動分析 搭建開發(fā)環(huán)境 宿主機和目標機 交叉編譯 編譯引導程序(u-boot或者vivi) 編譯內核(ni h)(mizi linux) 編譯根文件系統(tǒng) 使用JTAG將編譯好的映像寫入目標板 可以寫入到Nor Flash當中 可以寫入到Nand Flash當中第19頁/共39頁第十九頁,共39頁。Linux內核(ni h)

12、啟動分析 上電 CPU根據(jù)設置讀取Flash中的Bootloader Bootloader作兩段式加載 Bootload將控制權移交給內核 Bootloader事先檢測硬件參數(shù),例如物理地址 Bootloader加載壓縮的內核映像 內核自解壓 內核將自身(zshn)定位到正確的物理地址第20頁/共39頁第二十頁,共39頁。內核(ni h)啟動流程 執(zhí)行init初始化進程( jnchng) 啟動一個shell 執(zhí)行啟動腳本文件 顯示登錄提示符等待登錄第21頁/共39頁第二十一頁,共39頁。嵌入式LINUX操作系統(tǒng)(co zu x tn)內核 選擇內核(ni h) 內核(ni h)配置 編譯內核(

13、ni h) 安裝內核(ni h)第22頁/共39頁第二十二頁,共39頁。 Linux內核(ni h)源碼 內核目錄(ml)結構: /usr/src/Linux-* /arch(重點) /drivers /fs /include /init /ipc /kernel /mm /net第23頁/共39頁第二十三頁,共39頁。內核(ni h)配置 進入到內核(ni h)源代碼目錄 cd /usr/src/linux-2.* make config make xconfig make menuconfig make第24頁/共39頁第二十四頁,共39頁。編譯(biny)生成的文件 vmlinux 未壓

14、縮(y su)的Linux內核 varch/boot/zImage 經(jīng)zlib壓縮(y su)后的Linux內核 varch/boot/bzImage 經(jīng)zlib壓縮(y su)后的Linux內核,b是指big,壓縮(y su)狠 /boot/vmlinuz- 經(jīng)zlib壓縮(y su)后的Linux內核第25頁/共39頁第二十五頁,共39頁。編譯(biny)生成的文件 v/boot/System.map- 內核(ni h)符號地址 /boot/initrd-.img ramdisk,要掛載的根文件系統(tǒng) /lib/modules/ 模塊 vmodules.dep 模塊依賴文件第26頁/共39頁

15、第二十六頁,共39頁。裁剪(cijin)Linux 目的是創(chuàng)建嵌入式Linux 嵌入式硬件資源有限,所以要裁剪軟件 裁剪的對象(duxing)包括: Linux內核 庫 守護進程 GUI第27頁/共39頁第二十七頁,共39頁。裁剪(cijin)Linux 選擇合適(hsh)的文件系統(tǒng) ext2,ext3,jffs2 模塊機制 網(wǎng)絡協(xié)議 無用的驅動程序 調試信息 裁剪的技術要求 能省就省,能小就小,能快就快第28頁/共39頁第二十八頁,共39頁。安裝(nzhung)內核 移植相關(xinggun)的文件 相關(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頁/共39頁第二十九頁,共39頁。嵌入式Linux內核(ni h)調試 Printk() Oops消息(xio xi) /proc文件系統(tǒng) Kgdb 追蹤工具(strace,ltt,gprof,gcov,memwatch)

17、第30頁/共39頁第三十頁,共39頁。Linux調試(dio sh)工具 Linux系統(tǒng)(xtng)察看和調參 /proc文件系統(tǒng)(xtng) 用戶空間工具: 內存工具:MEMWATCH 和 YAMD strace GNU 調試器(gdb) 內核工具: 內核源代碼級調試器(kgdb) 內建內核調試器(kdb) Oops第31頁/共39頁第三十一頁,共39頁。/proc文件系統(tǒng) /proc內存文件系統(tǒng),記錄系統(tǒng)相關信息 可以直接使用(shyng)cat得到相關信息 也可以編程通過文件方式得到相關信息第32頁/共39頁第三十二頁,共39頁。通過(tnggu)/proc獲取進程信息 找到相關進程( jnchng)號 找到相關/proc子目錄 獲取特定參數(shù)第33頁/共39頁第三十三頁,共39頁。通過(tnggu)/proc獲取硬件信息 找到相關硬件標識 在/proc中找到相關硬件目錄(ml) 查找特定硬件信息第34頁/共39頁第三十四頁,共39頁。通過(tnggu)/proc獲取內核信息 內核信息一般存放(cnfng)于/proc

溫馨提示

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

評論

0/150

提交評論