嵌入式系統(tǒng)期末復習_第1頁
嵌入式系統(tǒng)期末復習_第2頁
嵌入式系統(tǒng)期末復習_第3頁
嵌入式系統(tǒng)期末復習_第4頁
嵌入式系統(tǒng)期末復習_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 引入線程的概念后,可把進程和線程的使用分為以下幾種模型: 單進程單進程/ /單線程模型單線程模型(如MS-DOS):整個系統(tǒng)只有一個進程、一個線程 單進程單進程/ /多線程模型多線程模型:在單進程/多線程模型中,整個系統(tǒng)有一個進程、多個線程 多進程多進程/ /單線程模型單線程模型(如傳統(tǒng)的UNIX):在多進程/單線程模型中,整個系統(tǒng)有多個進程,每個進程只有一個線程 多進程多進程/ /多線程模型多線程模型(如Windows NT、Solaris、Mach等):在多進程/多線程模型中,系統(tǒng)有多個進程,每個進程又可包含多個線程 嵌入式系統(tǒng)的核心-嵌入式微處理器 實時多任務 存儲區(qū)保護 可擴展的處理

2、器結(jié)構(gòu) 功耗低與通用計算機區(qū)別 通用: 方便用戶管理計算機資源 追求系統(tǒng)資源最大利用率 RTOS 調(diào)度的實時性 響應時間可確定性 高可靠性 RTOS的衡量指標 系統(tǒng)響應時間(System response time ):系統(tǒng)發(fā)出處理要求到系統(tǒng)給出應答信號的時間; 任務切換時間(Context-switching time):任務之間切換而使用的時間; 中斷延遲(Interrupt latency time ) :是計算機接收到中斷信號到操作系統(tǒng)作出響應,并完成換道轉(zhuǎn)入中斷服務程序的時間;RTOS的任務調(diào)度機制 決定了多任務能力與實時性 通用模式: 調(diào)度策略:優(yōu)先級調(diào)度、時間片輪轉(zhuǎn)調(diào)度 調(diào)度方式

3、:搶占式、不可搶占式、選擇可搶占式 時間片:定長時間片與變長時間片 RTOS一般使用搶占式任務調(diào)度 在微內(nèi)核中保留哪些東西? 進程管理 存儲管理 進程間通信 中斷響應框架微內(nèi)核的優(yōu)點 小而且簡單,容易理解,容易維護 各模塊可以獨立開發(fā) 系統(tǒng)配置靈活方便 大多數(shù)嵌入式實時內(nèi)核:單進程/多線程模型,或簡單地稱為任務模型 把整個應用當作一個沒有定義的進程來對待; 應用則被劃分為多個任務的形式來進行處理。 適用于實時性要求較高的、相對簡單的應用適用于實時性要求較高的、相對簡單的應用 也有一些嵌入式實時操作系統(tǒng)采用了多進程/多線程模型: 系統(tǒng)中包含多個進程,每個進程對應又包含多個線程 適合于處理復雜的應

4、用適合于處理復雜的應用任務的定義及其主要特性 任務是一個具有獨立功能的無限循環(huán)的程序段的一次運行活動,是實時內(nèi)核調(diào)度的單位,具有以下特性: 動態(tài)性動態(tài)性:任務狀態(tài)是不斷變化的。 一般分為就緒態(tài)、運行態(tài)和等待態(tài)。 在多任務系統(tǒng)中,任務的狀態(tài)將隨著系統(tǒng)的需要不斷進行變化。 并行性并行性: 系統(tǒng)中同時存在多個任務,這些任務在宏觀上是同時運行的。 異步獨立性異步獨立性: 每個任務各自按相互獨立的不可預知的速度運行,走走停停。 任務的內(nèi)容 任務主要包含以下內(nèi)容: 代碼代碼:一段可執(zhí)行的程序 數(shù)據(jù)數(shù)據(jù):程序所需要的相關數(shù)據(jù)(變量、工作空間、緩沖區(qū)等) 堆棧堆棧 程序執(zhí)行的上下文環(huán)境程序執(zhí)行的上下文環(huán)境任務

5、的內(nèi)容 任務與程序的區(qū)別: 任務能真實地描述工作內(nèi)容的并發(fā)性,而程序不能; 程序是任務的組成部分 除程序外,任務還包括數(shù)據(jù)、堆棧及其上下文環(huán)境等內(nèi)容; 程序是靜態(tài)的,任務是動態(tài)的; 任務有生命周期,有誕生、有消亡,是短暫的;而程序是相對長久的; 一個程序可對應多個任務,反之亦然; 任務具有創(chuàng)建其他任務的功能,而程序沒有。 任務狀態(tài)與變遷 任務擁有的資源情況是不斷變化的,導致任務狀態(tài)也表現(xiàn)出不斷變化的特性。 不同的實時內(nèi)核實現(xiàn)方式對任務狀態(tài)的定義不盡相同,但是都可以概括為三種基本的狀態(tài): 等待等待(waiting):任務在等待某個事件的發(fā)生; 就緒就緒(ready): 任務等待獲得處理器資源;

6、執(zhí)行執(zhí)行(running):任務獲得處理器資源,所包含的代碼內(nèi)容正在被執(zhí)行。 任務狀態(tài)與變遷 任務會在不同的狀態(tài)之間進行轉(zhuǎn)換,即任務狀態(tài)的變遷就緒態(tài)就緒態(tài)運行態(tài)運行態(tài)等待態(tài)等待態(tài)獲得獲得CPUCPU被高優(yōu)先級被高優(yōu)先級任務搶占或任務搶占或超時超時獲得資源獲得資源需要需要資源資源任務切換任務切換任務切換時機時機中斷、自陷中斷、自陷運行任務因缺乏資源而被運行任務因缺乏資源而被阻塞阻塞時間片輪轉(zhuǎn)調(diào)度時時間片輪轉(zhuǎn)調(diào)度時高優(yōu)先級任務處于就緒時高優(yōu)先級任務處于就緒時退出退出第三節(jié)任務調(diào)度基于優(yōu)先級的可搶占調(diào)度基于優(yōu)先級的可搶占調(diào)度時間片輪轉(zhuǎn)調(diào)度時間片輪轉(zhuǎn)調(diào)度靜態(tài)調(diào)度靜態(tài)調(diào)度*動態(tài)調(diào)度動態(tài)調(diào)度*靜態(tài)調(diào)度與動

7、態(tài)調(diào)度之間的比較靜態(tài)調(diào)度與動態(tài)調(diào)度之間的比較* 設計調(diào)度程序時,通常需要綜合考慮如下因素: CPU的使用率(CPU utilization) 輸入/輸出設備的吞吐率 響應時間(responsive time) 公平性 截止時間調(diào)度算法 搶占式調(diào)度和非搶占式調(diào)度:任務在運行過程中能否被打斷的處理情況。 搶占式調(diào)度:正在運行的任務可能被其他任務所打斷。 非搶占式調(diào)度:一旦任務開始運行,該任務只有在運行完成而主動放棄CPU資源,或是因為等待其他資源被阻塞的情況下才會停止運行。 實時內(nèi)核大都采用了搶占式調(diào)度算法,使關鍵任務能夠打斷非關鍵任務的執(zhí)行,確保關鍵任務的截止時間能夠得到滿足。搶占式和非搶占調(diào)度

8、 搶占式調(diào)度算法要更復雜些,且需要更多的資源,并可能在使用不當?shù)那闆r下會造成低優(yōu)先級任務出現(xiàn)長時間得不到執(zhí)行的情況。 非搶占式調(diào)度算法常用于那些任務需要按照預先確定的順序進行執(zhí)行,且只有當任務主動放棄CPU資源后,其他任務才能得到執(zhí)行的情況。搶占式和非搶占調(diào)度內(nèi)核的可搶占性 內(nèi)核可搶占與不可搶占:執(zhí)行內(nèi)核提供的系統(tǒng)調(diào)用的過程中,是否可以被中斷打斷。 可搶占內(nèi)核:即使正在執(zhí)行的是內(nèi)核服務函數(shù),也能響應中斷,并且中斷服務程序退出時能進行任務重新調(diào)度: 如果有優(yōu)先級更高的任務就緒,就立即讓高優(yōu)先級任務運行,不要求回到被中斷的任務,將未完成的系統(tǒng)調(diào)用執(zhí)行完。基于優(yōu)先級的可搶占調(diào)度 基于優(yōu)先級的可搶占調(diào)

9、度方式 如果出現(xiàn)具有更高優(yōu)先級的任務處于就緒狀態(tài)時,當前任務將停止運行,把CPU的控制權(quán)交給具有更高優(yōu)先級的任務,使更高優(yōu)先級的任務得到執(zhí)行。 實時內(nèi)核需要確保CPU總是被具有最高優(yōu)先級的就緒任務所控制。 當一個具有比當前正在運行任務的優(yōu)先級更高的任務處于就緒狀態(tài)的時候,實時內(nèi)核應及時進行任務切換,保存當前正在運行任務的上下文,切換到具有更高優(yōu)先級的任務的上下文。實時系統(tǒng) 在實時計算中,系統(tǒng)的正確性不僅僅依賴于計算的邏輯結(jié)果而且依賴于結(jié)果產(chǎn)生的時間 響應時間限定 可預知實時操作系統(tǒng)與I/O 實時操作系統(tǒng)還需要有效的中斷處理能力來處理異步事件和高效的I/O能力來處理有嚴格時間限制的數(shù)據(jù)收發(fā)應用。

10、就是: 系統(tǒng)應該有在事先定義的時間范圍內(nèi)識別和處理離散的事件的能力。 系統(tǒng)能夠處理和存儲控制系統(tǒng)所需要的大量的數(shù)據(jù)。 周期性的系統(tǒng) 非周期性系統(tǒng) 硬實時系統(tǒng) 災難后果 軟實時系統(tǒng) 性能下降 圖1 VFS與具體文件系統(tǒng)的關系與具體文件系統(tǒng)的關系用戶程序(進程)用戶程序(進程)VFSminixFAT設備文件設備文件Ext2文件系統(tǒng)操作的系統(tǒng)文件系統(tǒng)操作的系統(tǒng)調(diào)用界面,包括調(diào)用界面,包括read(),write(),open(),close()等等函數(shù)函數(shù)sys_read() sys_write() sys_open()等等通過通過file結(jié)構(gòu)結(jié)構(gòu)中的中的f_op指指針實現(xiàn)的針實現(xiàn)的”文件系統(tǒng)總文件

11、系統(tǒng)總線線”用戶空間用戶空間系統(tǒng)空間系統(tǒng)空間251.4 計算機體系結(jié)構(gòu)分類 1.馮諾依曼結(jié)構(gòu) 26 ALU,Controller, Memory, Input,Output 核心部件:早期是CPU,后來是Memory 存儲程序(stored program):程序以數(shù)字形式存在,可以與數(shù)據(jù)一樣被讀寫馮諾依曼結(jié)構(gòu)五大部件272.哈佛體系結(jié)構(gòu)28哈佛體系結(jié)構(gòu) 程序與數(shù)據(jù)有單獨的存儲器 PC只能指向程序存儲器 目前仍然廣泛應用 指令cache與數(shù)據(jù)cache 適用于實時信號處理(大部分的DSP) 大量數(shù)據(jù)流入計算機 數(shù)據(jù)必須在精確的時間內(nèi)處理完成291.5 RISC和CISC 計算機自40年代中葉問

12、世以來,其體系結(jié)構(gòu)的發(fā)展經(jīng)歷了:簡單復雜極其復雜簡單復雜極其復雜 CISC:復雜指令系統(tǒng)計算機 RISC:精簡指令系統(tǒng)計算機 RISC一般性能比CISC高CISCCISC:復雜指令集(:復雜指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)具有大量的指令和尋址方式,指令長度可變具有大量的指令和尋址方式,指令長度可變8/28/2原則:原則:80%80%的程序只使用的程序只使用20%20%的指令的指令大多數(shù)程序只使用少量的指令就能夠運行。大多數(shù)程序只使用少量的指令就能夠運行。RISCRISC:精簡指令集(:精簡

13、指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)只包含最有用的指令,指令長度固定只包含最有用的指令,指令長度固定確保數(shù)據(jù)通道快速執(zhí)行每一條指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使使CPUCPU硬件結(jié)構(gòu)設計變得更為簡單硬件結(jié)構(gòu)設計變得更為簡單312.1 嵌入式片上系統(tǒng)( SoC ) SoC - System on Chip CPU + DSP + USB + TCP/IP + GPRS + GSM + IEEE1394 + BLUETOOCH + SOC的優(yōu)點: 改變內(nèi)部工作電壓,減少功耗 減少芯片對外管腳數(shù)

14、,簡化制造過程 減少外圍驅(qū)動與電路板之間的信號傳遞,提高速度 內(nèi)嵌的線路可以避免外部電路板在信號傳遞時引起的干擾322.2 SOC的設計開發(fā)33SoC 芯片設計中 的IP 模塊 SoC 的設計基礎是IP(Intellectual Property)復用技術(shù)。 已有的IC 電路以模塊的形式在SoC 芯片設計中調(diào)用這些可以被重復使用的IC 模塊就叫做IP 模塊 IP 模塊是一種預先設計好,已經(jīng)過驗證,具有某種確定功能的集成電路、器件或部件。它有3 種不同形式:軟IP 核(soft IP core)、固IP 核(firm IP core)和硬IP 核(hard IP core) 34高速緩存、 MM

15、U 解決方法: 1。 求助于高速緩存來提高內(nèi)存的平均性能。 2。存儲管理單元(MMU)進行地址轉(zhuǎn)換,它在一個小的物理內(nèi)存中提供相對較大的虛擬存儲空間。35高速緩存、 MMU 解決方法: 1。 求助于高速緩存來提高內(nèi)存的平均性能。 2。存儲管理單元(MMU)進行地址轉(zhuǎn)換,它在一個小的物理內(nèi)存中提供相對較大的虛擬存儲空間。36虛擬地址存儲系統(tǒng) 37總線協(xié)議 基本構(gòu)件是四周期握手協(xié)議 : 握手保證當兩個設備想通信時,一個準備好發(fā)送,另一個準備好接收。 握手使用兩根用來進行握手的電線enq(表示查詢)和ack(表示應答)。 在握手期間,有專用的電線用來傳輸數(shù)據(jù)。 38四周期握手描述 1) 設備1升高它

16、的輸出電平來發(fā)查詢信號,它告訴設備2應準備好監(jiān)聽數(shù)據(jù)。2) 當設備2準備好接收數(shù)據(jù)時,它升高它的輸出電平來發(fā)應答信號。這時,設備1和2已準備好發(fā)送或接收。3) 一旦數(shù)據(jù)傳送完畢,設備2降低它的輸出電平表示它已經(jīng)接收完數(shù)據(jù)。4) 看見應答信號變低,設備1降低它的輸出電平。 在握手結(jié)束時,雙方握手信號均為低電平,就像開始握手前一樣。因此,系統(tǒng)回到其初始狀態(tài),為下一次以握手方式傳輸數(shù)據(jù)做準備。 39四周期握手協(xié)議 40內(nèi)存管理機制 靜態(tài)分配系統(tǒng)在啟動前系統(tǒng)在啟動前,所有的任務都獲得了所需要的所,所有的任務都獲得了所需要的所有內(nèi)存,運行過程中將不會有新的內(nèi)存請求。有內(nèi)存,運行過程中將不會有新的內(nèi)存請求

17、。在強實時系統(tǒng)中,減少內(nèi)存分配在時間上可能帶來的在強實時系統(tǒng)中,減少內(nèi)存分配在時間上可能帶來的不確定性。不確定性。不需要操作系統(tǒng)進行專門的內(nèi)存管理操作。不需要操作系統(tǒng)進行專門的內(nèi)存管理操作。系統(tǒng)使用內(nèi)存的效率比較低下,只適合于那些強實時,系統(tǒng)使用內(nèi)存的效率比較低下,只適合于那些強實時,且應用比較簡單,任務數(shù)量可以靜態(tài)確定的系統(tǒng)。且應用比較簡單,任務數(shù)量可以靜態(tài)確定的系統(tǒng)。 內(nèi)存管理機制動態(tài)分配 堆(堆(heap):應用通過分配():應用通過分配(malloc)與釋)與釋放(放(free)操作來使用內(nèi)存。)操作來使用內(nèi)存。堆會帶來碎片堆會帶來碎片:內(nèi)存被逐漸劃分為位于已被使用區(qū)域之間的越來越小內(nèi)

18、存被逐漸劃分為位于已被使用區(qū)域之間的越來越小的空閑區(qū)域。的空閑區(qū)域。垃圾回收垃圾回收:對內(nèi)存堆進行重新排列,把碎片組織成為大的連續(xù)可對內(nèi)存堆進行重新排列,把碎片組織成為大的連續(xù)可用內(nèi)存空間。但垃圾回收的時間長短不確定:不適合用內(nèi)存空間。但垃圾回收的時間長短不確定:不適合于處理實時應用。于處理實時應用。在實時系統(tǒng)中,避免內(nèi)存碎片的出現(xiàn),而不是在在實時系統(tǒng)中,避免內(nèi)存碎片的出現(xiàn),而不是在出現(xiàn)內(nèi)存碎片時進行回收出現(xiàn)內(nèi)存碎片時進行回收。 內(nèi)存管理機制 常用管理方式:常用管理方式: 固定大小存儲區(qū)固定大小存儲區(qū):在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,實現(xiàn)固定大小內(nèi)存

19、塊的分配。實現(xiàn)固定大小內(nèi)存塊的分配。 可變大小存儲區(qū)可變大小存儲區(qū):在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,實現(xiàn)可變大小內(nèi)存塊的分配。實現(xiàn)可變大小內(nèi)存塊的分配。 應用根據(jù)需要從固定大小存儲區(qū)或者可變大應用根據(jù)需要從固定大小存儲區(qū)或者可變大小存儲區(qū)中獲得一塊內(nèi)存空間,用完后將該小存儲區(qū)中獲得一塊內(nèi)存空間,用完后將該內(nèi)存空間釋放回相應的存儲區(qū)。內(nèi)存空間釋放回相應的存儲區(qū)。1 缺少MMU支持的內(nèi)存管理 內(nèi)存管理是操作系統(tǒng)中非常重要的子模塊。 如同普通操作系統(tǒng)一樣,在嵌入式操作系統(tǒng)中,內(nèi)存管理實現(xiàn)的好壞對系統(tǒng)性能有決定性的作用。 1.1 3種內(nèi)存管理模型 操作系統(tǒng)的

20、內(nèi)存管理模型可以分成如下3種:1. 單一程序模型 這是沒有硬件地址轉(zhuǎn)換的內(nèi)存管理模型。 應用程序始終在物理內(nèi)存中的同一地址空間運行,一個時刻只有一個應用程序被加載運行,程序加載器把應用程序加載到內(nèi)存低端,將操作系統(tǒng)加載到高端。 一個應用程序可以對所有的物理內(nèi)存地址進行尋址。 早期的操作系統(tǒng)受限于硬件能力多采用這種模型,現(xiàn)代操作系統(tǒng)中這種內(nèi)存管理方式已經(jīng)不見了。2. 多程序模型 這也是沒有硬件地址轉(zhuǎn)換的內(nèi)存管理模型。 即使沒有硬件地址轉(zhuǎn)換功能,多個程序也可以共享相同的物理地址。 在程序被加載到內(nèi)存的時候,改變程序中尋址指令(load,store,jump)所使用的地址值為當前被加載到的位置。 u

21、Clinux正是使用了這種模型。3. 具有地址轉(zhuǎn)換硬件的內(nèi)存管理模型 應用程序使用的是虛擬地址,CPU實際執(zhí)行程序所使用的是物理地址,從虛擬地址到物理地址的轉(zhuǎn)換需要操作系統(tǒng)和MMU(Memory Management Unit)硬件的參與。 標準Linux以及大多數(shù)現(xiàn)代操作系統(tǒng)都使用這種內(nèi)存管理模型。體系結(jié)構(gòu)API設備管理設備管理中斷驅(qū)動程序中斷驅(qū)動程序串口驅(qū)動程序串口驅(qū)動程序鍵盤驅(qū)動程序鍵盤驅(qū)動程序串口卡串口卡A 硬件抽象硬件抽象串口卡串口卡B 硬件抽象硬件抽象串口串口1串口串口2串口串口4串口串口2串口串口3串口串口1驅(qū)動邏輯層驅(qū)動邏輯層硬件抽象層硬件抽象層設備設備設備管理層設備管理層AP

22、I層層為了有效組織和管理各種不同的設備,可以采用分層的思想,把為了有效組織和管理各種不同的設備,可以采用分層的思想,把I/OI/O系統(tǒng)系統(tǒng)從上到下分為四層,分別為從上到下分為四層,分別為APIAPI、設備管理、驅(qū)動邏輯和硬件抽象。、設備管理、驅(qū)動邏輯和硬件抽象。體系結(jié)構(gòu) 提供硬件的多種使用模式API設備管理設備管理驅(qū)動程序驅(qū)動程序硬件抽象硬件抽象應用程序(用戶程序、操作系統(tǒng)及其組件等)應用程序(用戶程序、操作系統(tǒng)及其組件等)xlanchen2008.3.14Embedded Operating systems52Boot Loader的典型結(jié)構(gòu)框架 由于 Boot Loader 的實現(xiàn)依賴于

23、CPU 體系結(jié)構(gòu),大多數(shù) Boot Loader 都分為 stage1 和 stage2 兩大部分 Stage1 依賴于 CPU 體系結(jié)構(gòu),如設備初始化代碼 通常用匯編語言實現(xiàn),短小精悍 Stage2 通常用C語言 可以實現(xiàn)復雜功能 代碼具有較好的可讀性和可移植性 xlanchen2008.3.14Embedded Operating systems53Boot Loader的stage1 Stage1直接運行在固態(tài)存儲設備上,通常包括以下步驟 硬件設備初始化 為加載 Boot Loader的stage2準備RAM空間 拷貝 Boot Loader的stage2到RAM 空間中 設置好堆棧 跳

24、轉(zhuǎn)到 stage2 的 C 入口點 xlanchen2008.3.14Embedded Operating systems54Boot Loader的stage2通常包括以下步驟1. 初始化本階段要使用到的硬件設備2. 檢測系統(tǒng)內(nèi)存映射(memory map)3. 將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中4. 為內(nèi)核設置啟動參數(shù)5. 調(diào)用內(nèi)核嵌入式Linux的軟件層次 一個嵌入式 Linux 系統(tǒng)從軟件的角度看通常可以分為四個層次: 引導加載程序。包括固化在固件(firmware)中的 boot 代碼(可選)和 Boot Loader 兩大部分 Linux內(nèi)

25、核。特定于嵌入式板子的定制內(nèi)核及內(nèi)核的啟動參數(shù) 文件系統(tǒng)。包括根文件系統(tǒng)和建立于 Flash 內(nèi)存設備之上的文件系統(tǒng)通常用RAM-Disk來作為根文件系統(tǒng) 用戶應用程序。特定于用戶的應用程序xlanchen2008.3.14Embedded Operating systems55引導加載程序 引導加載程序是系統(tǒng)加電后運行的第一段軟件代碼 BIOS的主要任務是 進行硬件檢測和資源分配 將MBR中的OS Boot Loader讀到系統(tǒng)的 RAM 中 將控制權(quán)交給 OS Boot Loader Boot Loader 的主要運行任務是 將內(nèi)核映象從硬盤上讀到 RAM 中 跳轉(zhuǎn)到內(nèi)核的入口點去運行,也

26、即啟動操作系統(tǒng)。 xlanchen2008.3.14Embedded Operating systems56三、linux啟動流程 初始化流程 1 加電或復位 2 BIOS的啟動 3 Boot Loader 4 操作系統(tǒng)初始化1 加電或復位 冷啟動過程開始,中央處理器進入復位狀態(tài),將內(nèi)存中的所有數(shù)據(jù)清零,對內(nèi)存進行校驗,如果沒錯,CS寄存器將置入FFFF,IP寄存器置入0000,這個CS:IP組合指向的是BIOS的入口。系統(tǒng)就是這樣進入BIOS啟動過程的。2 BIOS啟動 上電自檢POST(Power On Self Test) 對系統(tǒng)內(nèi)的硬件設備進行監(jiān)測和連接 最后,BIOS將從軟盤或硬盤上

27、讀入Boot Loader.如果從硬盤啟動,BIOS將讀入該盤的零柱面零磁道1扇區(qū)(MBR),這個扇區(qū)上就放著Boot Loader.2 BIOS啟動 除了啟動程序,BIOS還提供了一組中斷以便于對硬件設備的訪問。我們知道,當鍵盤上的某一鍵被按下,CPU就會產(chǎn)生一個中斷并把這個鍵的信息讀入。 在操作系統(tǒng)沒有被裝入以前(Bootsect.S還沒有被讀入),中斷的響應程序由BIOS提供。3 Boot Loader Boot Loader是一段匯編代碼,存放在MBR中,它的主要作用就是將系統(tǒng)啟動代碼讀入內(nèi)存。3 Boot Loader 因為在啟動過程中,BIOS會把Boot Loader讀入內(nèi)存,并

28、把控制權(quán)交給它。MBR(硬盤啟動)內(nèi)的代碼就是Boot Loader或者它的一部分,為了說明Boot loader的實現(xiàn),先解釋磁盤結(jié)構(gòu)。3 Boot Loader 一個硬盤在DOS文件系統(tǒng)下可被分為四個基本分區(qū),可以把一個基本分區(qū)定義為一個擴展分區(qū),然后再把這個基本分區(qū)分為一個或多個邏輯分區(qū)。 整個硬盤的分區(qū)表存放在硬盤的第一個扇區(qū)(MBR),每個擴展分區(qū)也對應一個分區(qū)表,它存放在該擴展分區(qū)對應的第一個扇區(qū)里。 除主引導扇區(qū)外,每個基本分區(qū)和擴展分區(qū)也有自己的引導扇區(qū),結(jié)構(gòu)與MBR相同,但邏輯分區(qū)的引導扇區(qū)不能用于啟動。3 Boot Loader 如果是硬盤啟動,Boot Loader將查找

29、主分區(qū)表中標記為活動分區(qū)的表項,把該表項對應的分區(qū)的引導扇區(qū)讀入,然后將控制權(quán)交給該扇區(qū)內(nèi)的引導程序。3 Boot Loader 如果計算機上裝有不只一個操作系統(tǒng),僅僅MS-DOS的Boot Loader無法完成這種工作,需要一個可以多重起動的工具,下面介紹Linux下最常用的LILO.3 Boot Loader LILO實際上是一個在Linux環(huán)境下編寫的Boot Loader程序,主要功能是引導Linux操作系統(tǒng)的啟動。 LILO的功能實際上是有幾個程序共同實現(xiàn)的,它們是: (1)Map Installer 這是LILO用于管理啟動文件的程序。它將boot loader寫入引導分區(qū),創(chuàng)建紀

30、錄文件以映射內(nèi)核的啟動。 (2)The boot loader 它負責把Linux內(nèi)核或其他操作系統(tǒng) 的引導分區(qū)讀入內(nèi)存。還提供命令行接口,讓用戶選擇從哪個操作系統(tǒng)啟動和加入啟動參數(shù)。 (3)其他文件:主要包括用于存放Map Installer記錄的map文件和存放LILO配置信息的配置文件。4 進入操作系統(tǒng) Boot Loader 做了這么多工作,一言以蔽之,只是把操作系統(tǒng)的代碼調(diào)入內(nèi)存,所以當它執(zhí)行完后,自然該把控制權(quán)交給操作系統(tǒng),由操作系統(tǒng)的啟動程序來完成剩下的工作。4 進入操作系統(tǒng) 把控制權(quán)交給Setup.S這段程序 進入保護模式,同時把控制權(quán)交給Head.S Head.S調(diào)用/ini

31、t/main.C中的start_kernel函數(shù),啟動程序從start_kernel()函數(shù)繼續(xù)執(zhí)行Boot Loader 的概念 Boot Loader 是在操作系統(tǒng)內(nèi)核運行之前運行的第一段小程序。 初始化硬件設備 建立內(nèi)存空間的映射圖 將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。 加載操作系統(tǒng)內(nèi)核映象到RAM中,并將系統(tǒng)的控制權(quán)傳遞給它 例如:Linuxxlanchen2008.3.14Embedded Operating systems69ICE ICE(In-Circuit Emulator)是一種用于替代目標機上CPU的設備,即在線仿真器。 它比

32、一般的CPU有更多的引出線,能夠?qū)?nèi)部的信號輸出到被控制的目標機。 ICE上的Memory也可以被映射到用戶的程序空間,這樣即使目標機不存在的情形下也可以進行代碼的調(diào)試。邊界掃描技術(shù)(JTAG) JTAG標準測試訪問接口與邊界掃描結(jié)構(gòu)(Standard Test Access Port and Boundary Scan Architecture),已被IEEE1149.1標準所采納,是面向用戶的測試接口。 該接口一般由4個引腳組成: 測試數(shù)據(jù)輸入(TDI) 測試數(shù)據(jù)輸出(TDO) 測試時鐘(TCK) 測試模式選擇引腳(TMS) 異步測試復位引腳(TRST,可選)邊界掃描技術(shù)(JTAG) 優(yōu)點

33、 可以通過邊界掃描操作測試整個板的電氣連接,特別為表面貼元件提供方便 各個引腳信號的采樣,并可強制引腳輸出用以測試外圍芯片 可以軟件下載、執(zhí)行、調(diào)試和控制,為復雜的實時跟蹤調(diào)試提供路徑 可以進行多內(nèi)核和多處理器的板級和芯片級的調(diào)試,通過串接 ,為芯片制造商提供芯片生產(chǎn)、測試的途徑 不占用系統(tǒng)資源,能夠調(diào)試沒有外部總線的芯片,代價非常小 邊界掃描技術(shù)(JTAG) 缺點 通過串口依次傳遞數(shù)據(jù),速度比較慢 只能進行軟件斷點級別的調(diào)試 不能完成實時跟蹤和多種事件觸發(fā)等復雜調(diào)試功能 幾種增強版本 ARM芯片的實時調(diào)試方案(E-TRACE) 背景調(diào)試模式BDM 片上仿真OnCE I/O時間時間內(nèi)聚內(nèi)聚功能

34、功能內(nèi)聚內(nèi)聚時間時間內(nèi)聚內(nèi)聚 搶占式調(diào)度和非搶占式調(diào)度:任務在運行過程中能否被打斷的處理情況。 搶占式調(diào)度:正在運行的任務可能被其他任務所打斷。 非搶占式調(diào)度:一旦任務開始運行,該任務只有在運行完成而主動放棄CPU資源,或是因為等待其他資源被阻塞的情況下才會停止運行。 實時內(nèi)核大都采用了搶占式調(diào)度算法,使關鍵任務能夠打斷非關鍵任務的執(zhí)行,確保關鍵任務的截止時間能夠得到滿足。搶占式和非搶占調(diào)度內(nèi)核的可搶占性 內(nèi)核可搶占與不可搶占:執(zhí)行內(nèi)核提供的系統(tǒng)調(diào)用的過程中,是否可以被中斷打斷。 可搶占內(nèi)核:即使正在執(zhí)行的是內(nèi)核服務函數(shù),也能響應中斷,并且中斷服務程序退出時能進行任務重新調(diào)度: 如果有優(yōu)先級更

35、高的任務就緒,就立即讓高優(yōu)先級任務運行,不要求回到被中斷的任務,將未完成的系統(tǒng)調(diào)用執(zhí)行完。內(nèi)核的可搶占性 不可搶占內(nèi)核:不可搶占內(nèi)核有兩種情況 內(nèi)核服務函數(shù)不能被中斷:系統(tǒng)在執(zhí)行內(nèi)核服務函數(shù)時處于關中斷狀態(tài),不能響應外部可屏蔽中斷,這樣就會在一定程度上延遲中斷響應時間。 能被中斷但是不能進行任務重新調(diào)度。 系統(tǒng)在執(zhí)行內(nèi)核服務函數(shù)時可以響應中斷,不會延遲中斷響應時間; 但是在中斷退出時不進行任務重新調(diào)度。基于優(yōu)先級的可搶占調(diào)度 基于優(yōu)先級的可搶占調(diào)度方式 如果出現(xiàn)具有更高優(yōu)先級的任務處于就緒狀態(tài)時,當前任務將停止運行,把CPU的控制權(quán)交給具有更高優(yōu)先級的任務,使更高優(yōu)先級的任務得到執(zhí)行。 實時內(nèi)

36、核需要確保CPU總是被具有最高優(yōu)先級的就緒任務所控制。 當一個具有比當前正在運行任務的優(yōu)先級更高的任務處于就緒狀態(tài)的時候,實時內(nèi)核應及時進行任務切換,保存當前正在運行任務的上下文,切換到具有更高優(yōu)先級的任務的上下文。平面內(nèi)存模式:平面內(nèi)存模式:應用程序和系統(tǒng)程序能夠?qū)φ麄€內(nèi)存空間進應用程序和系統(tǒng)程序能夠?qū)φ麄€內(nèi)存空間進行訪問。行訪問。平面內(nèi)存模式比較簡單,易于管理,性能也平面內(nèi)存模式比較簡單,易于管理,性能也比較高。比較高。適合于程序簡單、代碼量小和實時性要求比適合于程序簡單、代碼量小和實時性要求比較高的領域。較高的領域。內(nèi)存保護:內(nèi)存保護:應用比較復雜、程序量比較大的情況;應用比較復雜、程序

37、量比較大的情況;防止應用程序破壞操作系統(tǒng)或是其他應用程防止應用程序破壞操作系統(tǒng)或是其他應用程序的代碼和數(shù)據(jù)。序的代碼和數(shù)據(jù)。概述 內(nèi)存保護內(nèi)存保護內(nèi)存保護 內(nèi)存保護可通過硬件提供的MMU(memory management unit)來實現(xiàn)。 目前,大多數(shù)處理器都集成了MMU: 大幅度降低那些通過在處理器外部添加MMU模塊的處理方式所存在的內(nèi)存訪問延遲。 MMU現(xiàn)在大都被設計作為處理器內(nèi)部指令執(zhí)行流水線的一部分,使得使用MMU不會降低系統(tǒng)性能,相反,如果系統(tǒng)軟件不使用MMU,還會導致處理器的性能降低。 在某些情況下,不使能MMU,跳過處理器的相應流水線,可能導致處理器的性能降低80%左右。 內(nèi)

38、存保護 MMU通常具有如下功能: 內(nèi)存映射內(nèi)存映射; 檢查邏輯地址是否在限定的地址范圍限定的地址范圍內(nèi),防止頁面地址越界; 檢查對內(nèi)存頁面的訪問是否違背特權(quán)信息特權(quán)信息,防止越權(quán)操作內(nèi)存頁面; 在必要的時候(頁面地址越界或是頁面操作越權(quán))產(chǎn)生異常異常。 理想情況下 高優(yōu)先級任務就緒后,能夠立即搶占低優(yōu)先級任務而得到執(zhí)行。 但在有多個任務需要使用共享資源的情況下,可能會出現(xiàn)高優(yōu)先級任務被低優(yōu)先級任務阻塞,并等待低優(yōu)先級任務執(zhí)行的現(xiàn)象。 優(yōu)先級反轉(zhuǎn)(priority inversion):高優(yōu)先級任務需要等待低優(yōu)先級任務釋放資源,而低優(yōu)先級任務又正在等待中等優(yōu)先級任務的現(xiàn)象。優(yōu)先級反轉(zhuǎn) 理想情況下

39、 高優(yōu)先級任務就緒后,能夠立即搶占低優(yōu)先級任務而得到執(zhí)行。 但在有多個任務需要使用共享資源的情況下,可能會出現(xiàn)高優(yōu)先級任務被低優(yōu)先級任務阻塞,并等待低優(yōu)先級任務執(zhí)行的現(xiàn)象。 優(yōu)先級反轉(zhuǎn)(priority inversion):高優(yōu)先級任務需要等待低優(yōu)先級任務釋放資源,而低優(yōu)先級任務又正在等待中等優(yōu)先級任務的現(xiàn)象。優(yōu)先級反轉(zhuǎn)優(yōu)先級繼承協(xié)議優(yōu)先級繼承協(xié)議的基本思想是: 當一個任務阻塞了一個或多個高優(yōu)先級任務時,該任務將不使用其原來的優(yōu)先級,而使用被該任務所阻塞的所有任務的最高優(yōu)先級作為其執(zhí)行臨界區(qū)的優(yōu)先級。 當該任務退出臨界區(qū)時,又恢復到其最初的優(yōu)先級。 優(yōu)先級天花板協(xié)議 使用優(yōu)先級天花板協(xié)議的目

40、的在于解決優(yōu)先級繼承協(xié)議中存在的死鎖和阻塞鏈問題。 優(yōu)先級天花板指控制訪問臨界資源的信號量的優(yōu)先級天花板。 信號量的優(yōu)先級天花板為所有使用該信號量的任務的最高優(yōu)先級。 在優(yōu)先級天花板協(xié)議中,如果任務獲得信號量,則在任務執(zhí)行臨界區(qū)的過程中,任務的優(yōu)先級將被抬升到所獲得信號量的優(yōu)先級天花板。 在實際應用中,廣義的中斷通常被分為中斷、自陷和異常(exception)等類別。 中斷是由于中斷是由于CPU外部的原因而改變程序執(zhí)行外部的原因而改變程序執(zhí)行流程的過程,屬于流程的過程,屬于異步事件異步事件,又稱為,又稱為硬件硬件中斷中斷。自陷和異常則為。自陷和異常則為同步事件同步事件; 自陷表示通過處理器所擁

41、有的自陷表示通過處理器所擁有的軟件指令軟件指令、可預期地使處理器正在執(zhí)行的程序的執(zhí)行可預期地使處理器正在執(zhí)行的程序的執(zhí)行流程發(fā)生變化,以執(zhí)行特定的程序。自陷流程發(fā)生變化,以執(zhí)行特定的程序。自陷是是顯式的事件顯式的事件,需要無條件地執(zhí)行;,需要無條件地執(zhí)行; Motorola 68000系列中的系列中的Trap指令指令 ARM中的中的SWI指令指令 Intel 80 x86中的中的INT指令指令 概述 中斷的分類 分類方式 硬件中斷是否可以被屏蔽:硬件中斷是否可以被屏蔽: 可屏蔽中斷可屏蔽中斷和和不可屏蔽中斷不可屏蔽中斷 中斷源:中斷源: 硬件中斷硬件中斷和和軟件中斷軟件中斷 中斷信號的產(chǎn)生:中

42、斷信號的產(chǎn)生: 邊緣觸發(fā)中斷邊緣觸發(fā)中斷和和電平觸發(fā)中斷電平觸發(fā)中斷 中斷服務程序的調(diào)用方式:中斷服務程序的調(diào)用方式: 向量中斷向量中斷、直接中斷直接中斷和和間接中斷間接中斷 向量中斷、直接中斷和間接中斷 向量中斷:通過中斷向量來調(diào)用中斷服務程序。 直接中斷:中斷對應的中斷服務程序的入口地址是一個固定值,當中斷發(fā)生的時候,程序執(zhí)行流程將直接跳轉(zhuǎn)到中斷服務程序的入口地址,執(zhí)行中斷服務程序。 間接中斷:中斷服務程序的入口地址由寄存器提供。 中斷處理的過程 中斷處理的過程分為: 中斷檢測中斷檢測 中斷響應中斷響應 中斷處理中斷處理 中斷檢測 中斷檢測在每條指令結(jié)束時進行,檢測是否有中斷請求或是否滿足

43、異常條件。 為滿足中斷處理的需要,在指令周期中使用了為滿足中斷處理的需要,在指令周期中使用了中斷周期中斷周期。 在中斷周期中,處理器檢查是否有中斷發(fā)生,在中斷周期中,處理器檢查是否有中斷發(fā)生,即是否出現(xiàn)中斷信號。即是否出現(xiàn)中斷信號。 沒有中斷信號:處理器繼續(xù)運行,并通過取指周期沒有中斷信號:處理器繼續(xù)運行,并通過取指周期取當前程序的下一條指令;取當前程序的下一條指令; 有中斷信號:將進入中斷響應,對中斷進行處理。有中斷信號:將進入中斷響應,對中斷進行處理。 取指令取指令執(zhí)行指令執(zhí)行指令檢查中斷檢查中斷處理中斷處理中斷開始開始停止停止取周期取周期執(zhí)行周期執(zhí)行周期中斷周期中斷周期允許中斷允許中斷中

44、斷和指令周期中斷和指令周期 不允許不允許中斷中斷中斷響應 中斷響應是由處理器內(nèi)部硬件完成的中斷序列,而不是由程序執(zhí)行的。 在Intel 80 x86中,中斷響應過程的操作如下: 對可屏蔽中斷,從對可屏蔽中斷,從82598259中斷控制器芯片讀取中斷向量中斷控制器芯片讀取中斷向量號;號; 將標志寄存器將標志寄存器EFLAGEFLAG、CSCS和和IPIP壓棧;壓棧; 對于硬件中斷,復位標志寄存器中的對于硬件中斷,復位標志寄存器中的IFIF和和TFTF位,禁止位,禁止可屏蔽外部中斷和單步異常;可屏蔽外部中斷和單步異常; 根據(jù)中斷向量號,查找中斷向量表,根據(jù)中斷服務程根據(jù)中斷向量號,查找中斷向量表,

45、根據(jù)中斷服務程序的首址轉(zhuǎn)移到中斷服務程序執(zhí)行。序的首址轉(zhuǎn)移到中斷服務程序執(zhí)行。中斷處理 中斷處理:執(zhí)行中斷服務程序。 中斷服務程序用來處理自陷、異常或是中斷。中斷服務程序用來處理自陷、異?;蚴侵袛唷?盡管導致自陷、異常和中斷的事件不同,但大盡管導致自陷、異常和中斷的事件不同,但大都具有相同的中斷服務程序結(jié)構(gòu)。都具有相同的中斷服務程序結(jié)構(gòu)。 中斷處理 中斷服務程序的主要內(nèi)容: 保存上下文:保存中斷服務程序?qū)⒁褂玫谋4嫔舷挛模罕4嬷袛喾粘绦驅(qū)⒁褂玫乃屑拇嫠屑拇嫫鞯膬?nèi)容器的內(nèi)容,以便于在退出中斷服務程序之前進行恢復;,以便于在退出中斷服務程序之前進行恢復; 如果中斷向量被多個設備所共享,為

46、了確定產(chǎn)生該中如果中斷向量被多個設備所共享,為了確定產(chǎn)生該中斷信號的設備,需要斷信號的設備,需要輪詢輪詢這些設備的中斷狀態(tài)寄存器;這些設備的中斷狀態(tài)寄存器; 獲取中斷相關的其他信息;獲取中斷相關的其他信息; 對中斷進行具體的處理;對中斷進行具體的處理; 恢復保存的上下文恢復保存的上下文; 執(zhí)行執(zhí)行中斷返回指令中斷返回指令,使,使CPUCPU的控制返回到被中斷的程序的控制返回到被中斷的程序繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。實時內(nèi)核的中斷管理 中斷服務程序通常包括三個方面的內(nèi)容: 中斷前導:中斷前導: 保存中斷現(xiàn)場,進入中斷處理。保存中斷現(xiàn)場,進入中斷處理。 用戶中斷服務程序:用戶中斷服務程序: 完成對中斷的具體處理。完成對中斷的具體處理。 中斷后續(xù):中斷后續(xù): 恢復中斷現(xiàn)場,退出中斷處理。恢復中斷現(xiàn)場,退出中斷處理。 實時內(nèi)核的中斷管理 如果中斷處理導致系統(tǒng)中出現(xiàn)比被中

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論