嵌入式系統(tǒng)與軟件4_第1頁
嵌入式系統(tǒng)與軟件4_第2頁
嵌入式系統(tǒng)與軟件4_第3頁
嵌入式系統(tǒng)與軟件4_第4頁
嵌入式系統(tǒng)與軟件4_第5頁
已閱讀5頁,還剩110頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式實時內(nèi)核基礎(chǔ)1嵌入式實時內(nèi)核的關(guān)鍵設(shè)計問題實時性可移植性可剪裁、可配置性可靠性應(yīng)用編程接口2實時性實時性是指實時內(nèi)核應(yīng)該保證系統(tǒng)盡可能快地對外部事件產(chǎn)生響應(yīng)。實時性是實時內(nèi)核最重要的特性之一。實時系統(tǒng)的正確性不僅依賴于系統(tǒng)計算的邏輯結(jié)果,還依賴于產(chǎn)生這些結(jié)果的時間。系統(tǒng)的實時性與硬件、操作系統(tǒng)及程序三方面有關(guān)系。3相關(guān)概念確定性:是指系統(tǒng)對外部事件響應(yīng)的最壞時間是可以預(yù)知的。響應(yīng)性:是指系統(tǒng)在識別外部事件以后,要花多長時間來服務(wù)該事件。響應(yīng)時間:確定性和響應(yīng)性結(jié)合在一起構(gòu)成了系統(tǒng)對外部事件的響應(yīng)時間,對于多任務(wù)實時應(yīng)用來說,可以分兩種情況:中斷響應(yīng)時間和任務(wù)響應(yīng)時間。實時性4實時性內(nèi)核實

2、時性的重要原則:支持多任務(wù);支持強占式多任務(wù);支持任務(wù)的優(yōu)先級調(diào)度;任務(wù)的優(yōu)先級可以繼承;支持可預(yù)測的任務(wù)同步機制;實時內(nèi)核的運行時間可知并可以預(yù)測;系統(tǒng)調(diào)用的確定性。5實時性影響實時性的主要因素調(diào)度算法可搶占式內(nèi)核內(nèi)核的關(guān)中斷時間數(shù)據(jù)結(jié)構(gòu)存儲管理機制資源的有限時間等待優(yōu)先級反轉(zhuǎn)問題的解決中斷處理浮點數(shù)的優(yōu)化處理6可搶占內(nèi)核與不可搶占內(nèi)核 體現(xiàn)在任務(wù)在使用內(nèi)核提供的系統(tǒng)調(diào)用的過程中被中斷打斷的不同處理上??蓳屨純?nèi)核:中斷服務(wù)程序退出時進(jìn)行任務(wù)重調(diào)度,如果有優(yōu)先級更高的任務(wù)就緒,就立即讓高優(yōu)先級任務(wù)運行,不要求必須回到被中斷的任務(wù),將未完成的系統(tǒng)調(diào)用執(zhí)行完不可搶占內(nèi)核:中斷服務(wù)程序退出時,即使有

3、優(yōu)先級更高的任務(wù)就緒也必須回到被中斷的任務(wù),將未完成的系統(tǒng)調(diào)用執(zhí)行完后,才能讓高優(yōu)先級任務(wù)執(zhí)行。 7可移植性可移植性是設(shè)計實時內(nèi)核時需要重點考慮的目標(biāo)之一;嵌入式軟件的移植工作分為異種處理器平臺之間的移植和同種處理器平臺之間的移植;不同處理器平臺間的移植工作集中在任務(wù)切換、中斷控制設(shè)備和時間設(shè)備的驅(qū)動上;同種處理器平臺間的移植工作集中在對芯片級控制寄存器的操作上。8影響內(nèi)核可移植性的因素編程語言:高級語言與匯編語言。體系結(jié)構(gòu):可以將內(nèi)核設(shè)計為三層結(jié)構(gòu):硬件無關(guān)層、硬件抽象層和硬件相關(guān)層。代碼實現(xiàn)的技巧:對不可移植代碼的使用轉(zhuǎn)換成對函數(shù)和宏定義的使用。9可剪裁、可配置性可剪裁表示系統(tǒng)在增加、刪除

4、功能模塊時僅需要做少量的修改或者根本不用修改??杉舨眯砸笙到y(tǒng)中各功能模塊之間盡量不存在耦合關(guān)系。可配置性是針對系統(tǒng)中未被卸裝的模塊,根據(jù)應(yīng)用在數(shù)量、機制、工作空間和堆棧等方面的不同需求,決定系統(tǒng)的規(guī)模、功能以及內(nèi)存分配等。10可靠性可靠性對于實時系統(tǒng)來說通常比非實時系統(tǒng)更為重要。提高可靠性所采用的機制有:異步信號、定時器、優(yōu)先級繼承、優(yōu)先級天花板、異常(出錯)處理、用戶擴(kuò)展和內(nèi)存保護(hù)等。11編程接口每個操作系統(tǒng)提供的系統(tǒng)調(diào)用的功能和種類都不同。一般來說,系統(tǒng)調(diào)用提供得越多,功能越強,越能對應(yīng)用程序的開發(fā)提供高效率的支持,同時也會減少應(yīng)用程序的維護(hù)工作量;相反,系統(tǒng)調(diào)用提供得越少,越單一,應(yīng)用

5、程序越復(fù)雜,可靠性越低。API影響著應(yīng)用參與系統(tǒng)控制的深淺程度。通過實時內(nèi)核提供的API,開發(fā)者可以在應(yīng)用中使用實時內(nèi)核提供的各種功能,達(dá)到對系統(tǒng)硬件資源和軟件資源的合理、充分的使用。提供面向行業(yè)的接口標(biāo)準(zhǔn)是嵌入式實時操作系統(tǒng)的一個發(fā)展趨勢。12嵌入式實時內(nèi)核的主要功能任務(wù)管理中斷管理任務(wù)間的同步與通信管理時間管理對共享資源的互斥管理存儲管理I/O管理出錯管理用戶擴(kuò)展管理電源管理13任務(wù)管理任務(wù)是被調(diào)度執(zhí)行和競爭資源的最基本實體單元;實時內(nèi)核最基本的功能是管理任務(wù)、提供多線程的支持;任務(wù)管理主要包括創(chuàng)建任務(wù)、刪除任務(wù)、改變?nèi)蝿?wù)狀態(tài)和查詢?nèi)蝿?wù)狀態(tài)等功能;任務(wù)管理的核心是任務(wù)調(diào)度,確定一個適合嵌入

6、式應(yīng)用特定要求的任務(wù)調(diào)度算法。14多任務(wù)管理機制的好處相對于前后臺軟件結(jié)構(gòu)而言,多任務(wù)軟件結(jié)構(gòu)的每個任務(wù)規(guī)模較小,每個任務(wù)更容易編碼和調(diào)試,其質(zhì)量也更容易得到保證。不少應(yīng)用本身就是由多個任務(wù)構(gòu)成的,采用多任務(wù)的處理方式是應(yīng)用問題的一個非常自然的解決方式。任務(wù)之間具有較高的獨立性,耦合性小,通過增加新的任務(wù)就能方便地擴(kuò)充系統(tǒng)功能。實時性強,保證緊急事件得到優(yōu)先處理成為可能。15進(jìn)程進(jìn)程的定義主要包括以下內(nèi)容:一個正在執(zhí)行的程序;計算機中正在運行的程序的一個實例;可以分配給處理器,并由處理器執(zhí)行的一個實體;由一個順序的執(zhí)行線程、一個當(dāng)前狀態(tài)和一組相關(guān)的系統(tǒng)資源所刻畫的活動單元。進(jìn)程由代碼、數(shù)據(jù)、堆

7、棧和進(jìn)程控制塊PCB構(gòu)成。16任務(wù) 任務(wù)定義 任務(wù)是一個具有獨立功能的無限循環(huán)的程序段的一次運行活動,是操作系統(tǒng)調(diào)度的單位。具有動態(tài)性、并行性和異步獨立性。動態(tài)性: 任務(wù)狀態(tài)是不斷變化的。任務(wù)狀態(tài)一般分為就緒態(tài)(ready), 運行態(tài)(running), 阻塞態(tài)(wait/suspended)。并行性: 系統(tǒng)中同時存在多個任務(wù),它們宏觀上是同時運行的異步獨立性: 每個任務(wù)各自按相互獨立的不可預(yù)知的速度運行,走走停停。17程序與任務(wù)之間的區(qū)別任務(wù)更能真實地描述并發(fā),而程序不能任務(wù)是由程序和數(shù)據(jù)兩部分組成的程序是靜態(tài)的,任務(wù)是動態(tài)的任務(wù)有生命周期,有誕生有消亡,短暫的;而程序是相對長久的一個程序可

8、對應(yīng)多個任務(wù),反之亦然任務(wù)具有創(chuàng)建其他任務(wù)的功能,而程序沒有18任務(wù)組成代碼(如:Code)數(shù)據(jù)(如:DATA、BSS)堆棧(用戶堆棧、核心堆棧)任務(wù)控制塊TCB任務(wù)標(biāo)識、任務(wù)優(yōu)先級任務(wù)狀態(tài)和控制信息保存CPU的現(xiàn)場任務(wù) 19內(nèi)核代碼多任務(wù)模型內(nèi)核數(shù)據(jù)棧數(shù)據(jù)任務(wù)控制塊棧任務(wù)控制塊棧任務(wù)控制塊代碼代碼代碼數(shù)據(jù)數(shù)據(jù)20任務(wù)參數(shù)任務(wù)的特性可以通過優(yōu)先級、周期、計算時間、就緒時間和截止時間等參數(shù)來進(jìn)行描述。任務(wù)優(yōu)先級表示任務(wù)對應(yīng)工作內(nèi)容在處理上的優(yōu)先程度。優(yōu)先級越高,表明任務(wù)越需要得到優(yōu)先處理。任務(wù)優(yōu)先級分為靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級。靜態(tài)優(yōu)先級表示任務(wù)的優(yōu)先級被確定后,在系統(tǒng)運行過程中將不再發(fā)生變化;動

9、態(tài)優(yōu)先級則意味著在系統(tǒng)的運行過程中,任務(wù)的優(yōu)先級是可以動態(tài)變化的。周期是周期任務(wù)所具有的參數(shù),表示任務(wù)周期性執(zhí)行的間隔時間。任務(wù)的計算時間是指任務(wù)在特定硬件環(huán)境下被完整執(zhí)行所需要的時間,也被稱為任務(wù)的執(zhí)行時間。21任務(wù)參數(shù)任務(wù)的特性可以通過優(yōu)先級、周期、計算時間、就緒時間和截止時間等參數(shù)來進(jìn)行描述。任務(wù)的就緒時間表示任務(wù)具備了在處理器上被執(zhí)行所需要的條件時的時間。任務(wù)的截止時間意味著任務(wù)需要在該時間到來之前被執(zhí)行完成。截止時間可以通過絕對截止時間和相對截止時間兩種方式來表示,相對截止時間為任務(wù)的絕對截止時間減去任務(wù)的就緒時間。22任務(wù)狀態(tài)多任務(wù)系統(tǒng)中任務(wù)參與資源競爭,處理器資源在任務(wù)之間分配,

10、任務(wù)狀態(tài)在不斷的變化不同的內(nèi)核實現(xiàn)對任務(wù)狀態(tài)的定義不盡相同,但是都可以概括為以下三種狀態(tài):執(zhí)行態(tài):當(dāng)前占有CPU的任務(wù)狀態(tài) 就緒態(tài):一旦獲得CPU就能執(zhí)行的任務(wù)狀態(tài) 阻塞態(tài):由于資源條件未滿足,沒有資格競爭CPU的任務(wù)狀態(tài) 任務(wù) 23任務(wù)狀態(tài)就緒執(zhí)行阻塞24任務(wù)任務(wù)的上下文和上下文切換 任務(wù)的上下文記錄了該任務(wù)的執(zhí)行環(huán)境(如,寄存器的內(nèi)容)。針對不同體系結(jié)構(gòu)的處理器,任務(wù)的上下文有不同的定義。 任務(wù)的上下文切換表示當(dāng)前執(zhí)行任務(wù)在將處理器的控制權(quán)交給即將運行的任務(wù)之前,把它的執(zhí)行環(huán)境(該任務(wù)的上下文)保存到相應(yīng)的數(shù)據(jù)結(jié)構(gòu)中,用即將運行任務(wù)的上下文重新布置執(zhí)行環(huán)境。 25任務(wù)管理機制任務(wù)管理用來實

11、現(xiàn)對任務(wù)狀態(tài)的直接控制和訪問,實時內(nèi)核的任務(wù)管理是通過系統(tǒng)調(diào)用來實現(xiàn)的,這些系統(tǒng)調(diào)用主要包括任務(wù)創(chuàng)建、任務(wù)刪除、任務(wù)掛起、任務(wù)喚醒和設(shè)置任務(wù)屬性等內(nèi)容。任務(wù)創(chuàng)建:為任務(wù)分配和初始化相關(guān)的數(shù)據(jù)結(jié)構(gòu)。獲得任務(wù)控制塊TCB;根據(jù)實時內(nèi)核用戶提供的信息初始化TCB;為任務(wù)分配一個可以唯一標(biāo)識任務(wù)的ID;使任務(wù)處于就緒狀態(tài),把任務(wù)放置到就緒隊列;進(jìn)行任務(wù)調(diào)度處理。26任務(wù)刪除:實時內(nèi)核根據(jù)任務(wù)創(chuàng)建時獲得的ID刪除指定的任務(wù)。根據(jù)指定的ID,獲得對應(yīng)任務(wù)的TCB;把任務(wù)的TCB從隊列中取出來,掛入空閑TCB隊列;釋放任務(wù)所占用的資源。任務(wù)掛起:根據(jù)任務(wù)的ID把指定任務(wù)掛起,直到通過喚醒任務(wù)對任務(wù)進(jìn)行解掛。

12、通過任務(wù)掛起,一個任務(wù)可以把自己掛起。根據(jù)指定的ID,獲取對應(yīng)任務(wù)的TCB;把任務(wù)的狀態(tài)變?yōu)榈却隣顟B(tài),并把TCB放置到等待隊列;如果任務(wù)自己掛起自己,則進(jìn)行任務(wù)調(diào)度。任務(wù)管理機制27任務(wù)喚醒:根據(jù)任務(wù)ID解掛指定的任務(wù)。根據(jù)指定的ID,獲得對應(yīng)任務(wù)的TCB;如果任務(wù)在等待其他資源,任務(wù)將仍然處于等待狀態(tài);否則,把任務(wù)的狀態(tài)變?yōu)榫途w狀態(tài),并把TCB放置到就緒隊列;進(jìn)行任務(wù)調(diào)度。任務(wù)睡眠:使當(dāng)前任務(wù)睡眠一段指定的時間,時間到后,任務(wù)又重新回到就緒狀態(tài)。修改任務(wù)狀態(tài),把任務(wù)狀態(tài)變?yōu)榈却隣顟B(tài);把任務(wù)TCB放置到時間等待鏈進(jìn)行任務(wù)調(diào)度。任務(wù)管理機制28關(guān)于任務(wù)擴(kuò)展:以便于應(yīng)用能夠向系統(tǒng)中添加一些關(guān)于任務(wù)

13、的附加操作,為應(yīng)用提供在系統(tǒng)運行的關(guān)鍵點上進(jìn)行干預(yù)的手段。任務(wù)擴(kuò)展的時機:任務(wù)創(chuàng)建時、任務(wù)刪除時、任務(wù)上下文切換時。任務(wù)擴(kuò)展功能可通過任務(wù)擴(kuò)展表或是單獨應(yīng)用編程接口的方式來實現(xiàn)。任務(wù)擴(kuò)展表用來存放實現(xiàn)任務(wù)擴(kuò)展處理的例程,實時內(nèi)核通過查找任務(wù)擴(kuò)展表來獲取擴(kuò)展處理的入口函數(shù)。任務(wù)管理機制29任務(wù)管理機制任務(wù)變量:某些例程可能同時被多個任務(wù)調(diào)用,每個調(diào)用任務(wù)又期望例程中的全局或是靜態(tài)變量提供不同的值。實時內(nèi)核通常提供以下關(guān)于任務(wù)變量的操作:向指定的任務(wù)中添加任務(wù)變量;刪除指定任務(wù)的任務(wù)變量;獲得指定任務(wù)的任務(wù)變量;獲得指定任務(wù)當(dāng)前擁有的任務(wù)變量的數(shù)量;獲得指定任務(wù)的所有任務(wù)變量。30任務(wù)調(diào)度要解決的

14、問題WHAT:按什么原則分配CPU 任務(wù)調(diào)度算法WHEN:何時分配CPU 任務(wù)調(diào)度的時機HOW: 如何分配CPU 任務(wù)調(diào)度過程(任務(wù)的上下文切換)31任務(wù)調(diào)度任務(wù)調(diào)度的概念 任務(wù)調(diào)度的實質(zhì)就是將處理器資源合理分配給適當(dāng)?shù)娜蝿?wù),一方面確保任務(wù)的時間約束能被滿足,另一方面盡量提高處理器資源的利用率。任務(wù)調(diào)度就是從就緒狀態(tài)的任務(wù)中,挑選一個任務(wù)到處理器上運行。操作系統(tǒng)中負(fù)責(zé)任務(wù)調(diào)度的程序稱為任務(wù)調(diào)度程序(scheduler)或任務(wù)調(diào)度器(dispatch)。 32任務(wù)調(diào)度調(diào)度點的位置:中斷服務(wù)程序的結(jié)束位置;任務(wù)因等待資源而處于等待狀態(tài);任務(wù)處于就緒狀態(tài)時。實時內(nèi)核的主要職責(zé)是要確保所有的任務(wù)都能夠

15、滿足任務(wù)的時間約束特性要求。在設(shè)計調(diào)度程序時,要綜合考慮以下因素:CPU的使用率;輸入/輸出設(shè)備的吞吐率;響應(yīng)時間;公平性;截止時間。33任務(wù)調(diào)度算法 內(nèi)核常用的幾種任務(wù)調(diào)度算法基于優(yōu)先級調(diào)度輪轉(zhuǎn)調(diào)度 單調(diào)速率調(diào)度(RM調(diào)度)34優(yōu)先級調(diào)度優(yōu)先級調(diào)度算法優(yōu)先級調(diào)度就是讓高優(yōu)先級的任務(wù)優(yōu)先得到處理的調(diào)度策略 按照正在執(zhí)行的任務(wù)可否被搶占,優(yōu)先級調(diào)度分為:可搶占調(diào)度不可搶占調(diào)度35確定優(yōu)先級的方法靜態(tài)優(yōu)先級法:在任務(wù)創(chuàng)建時指定優(yōu)先數(shù),在任務(wù)運行時優(yōu)先數(shù)不變動態(tài)優(yōu)先級法:在任務(wù)創(chuàng)建時創(chuàng)立一個優(yōu)先級,但在其生命周期內(nèi)優(yōu)先級可以動態(tài)變化。如等待時間長優(yōu)先級可改變優(yōu)先級調(diào)度36不可搶占調(diào)度(non-pre

16、emptive scheduling) 一旦某個任務(wù)占有了處理器就一直運行下去,直到該任務(wù)由于自身的原因自愿放棄處理器,任務(wù)調(diào)度程序才按優(yōu)先級進(jìn)行重調(diào)度,讓其它任務(wù)運行。任務(wù)在運行過程中只能被中斷打斷(搶占)。中斷處理程序即使喚醒了一個更高優(yōu)先級的任務(wù),當(dāng)中斷處理完成后只能返回到被中斷的任務(wù),只有這個任務(wù)放棄了處理器時,更高優(yōu)先級的任務(wù)才能運行。優(yōu)先級調(diào)度37不可搶占調(diào)度任務(wù)1任務(wù)2任務(wù)3優(yōu)先級高低時間任務(wù)2就緒任務(wù)3就緒優(yōu)先級調(diào)度38不可搶占調(diào)度的優(yōu)點- 對共享數(shù)據(jù)的保護(hù)需求較低不可搶占調(diào)度的缺點- 系統(tǒng)的響應(yīng)時間得不到保證 因此,對于實時性要求較高的系統(tǒng)不可選擇這種調(diào)度方式。 優(yōu)先級調(diào)度3

17、9可搶占調(diào)度(preemptive scheduling) 任何時刻都嚴(yán)格按照高優(yōu)先級任務(wù)在處理器上運行的原則進(jìn)行任務(wù)調(diào)度或者說,在處理器上運行的任務(wù)永遠(yuǎn)是就緒任務(wù)中優(yōu)先級最高的任務(wù)當(dāng)優(yōu)先級高的任務(wù)能運行時,保證其執(zhí)行時間,讓其盡快運行完成優(yōu)先級調(diào)度40可搶占調(diào)度如果優(yōu)先級高的任務(wù)因故(如等待事件)暫停運行, 則讓次高優(yōu)先級的任務(wù)運行一旦高優(yōu)先級的任務(wù)又就緒(因等待的事件到來而成為就緒),任務(wù)調(diào)度器迫使原運行任務(wù)馬上讓出處理器給高優(yōu)先級的任務(wù)使用或稱該任務(wù)被搶占。任務(wù)在運行過程中只能被中斷打斷(搶占)由于需要進(jìn)行額外的任務(wù)調(diào)度和任務(wù)切換,因而帶來一定的時間開銷優(yōu)先級調(diào)度41可搶占調(diào)度任務(wù)1任務(wù)

18、2任務(wù)3優(yōu)先級高低時間任務(wù)2就緒任務(wù)3就緒任務(wù)2任務(wù)1優(yōu)先級調(diào)度42輪轉(zhuǎn)調(diào)度 同優(yōu)先級任務(wù)的時間片輪轉(zhuǎn)調(diào)度算法(round-robin)定義是指當(dāng)有兩個或多個就緒任務(wù)具有相同的優(yōu)先級且它們是就緒任務(wù)中優(yōu)先級最高的任務(wù)時,任務(wù)調(diào)度程序按照這組任務(wù)就緒的先后次序調(diào)度第一個任務(wù),讓它運行一段時間運行的這段時間稱為時間片(time slicing)當(dāng)任務(wù)運行完一個時間片后,該任務(wù)即使還沒有停止運行,也必須釋放處理器讓下一個與它相同優(yōu)先級的任務(wù)運行43同優(yōu)先級任務(wù)的時間片輪轉(zhuǎn)調(diào)度算法輪轉(zhuǎn)調(diào)度 釋放處理器的任務(wù)被排到同優(yōu)先級就緒任務(wù)鏈的鏈尾,等待再次運行它使實時系統(tǒng)中優(yōu)先級相同的任務(wù)具有平等的運行權(quán)利 4

19、4時間片的選擇- 采用時間片輪轉(zhuǎn)調(diào)度算法時,任務(wù)的時間片大小要適當(dāng)選擇。- 時間片大小的選擇會影響系統(tǒng)的性能和效率時間片太大,時間片輪轉(zhuǎn)調(diào)度就沒有意義時間片太小,任務(wù)切換過于頻繁,處理器開銷大,真正用于運行應(yīng)用程序的時間將會減小- 不同的內(nèi)核在實現(xiàn)時間片輪轉(zhuǎn)調(diào)度算法上可能有一些差異:有的內(nèi)核允許同優(yōu)先級的各個任務(wù)有不一致的時間片有的內(nèi)核要求相同優(yōu)先級的任務(wù)具有一致的時間片 輪轉(zhuǎn)調(diào)度 45時間片輪轉(zhuǎn)調(diào)度算法任務(wù)1任務(wù)3優(yōu)先級高低時間任務(wù)3就緒任務(wù)2任務(wù)1任務(wù)2任務(wù)2任務(wù)1任務(wù)2輪轉(zhuǎn)調(diào)度 46RM:Rate Monotonic1973年C.L.Liu和J.W.Layland在Journal of

20、ACM ”Scheduling Algorithms for Multiprogramming in a Hard Real-time Environment.”提出,最近得到普及。RM算法的假設(shè)條件:所有任務(wù)都是周期任務(wù);任務(wù)之間不進(jìn)行通信,也不需要同步;任務(wù)可以在任何位置被搶占,不存在臨界區(qū)。單調(diào)速率調(diào)度RM算法 47周期任務(wù)的相關(guān)參數(shù):任務(wù)周期T:指從該任務(wù)的一個實例到下一個實例到達(dá)之間的時間總量任務(wù)的開始時間:任務(wù)達(dá)到開始運行的時刻執(zhí)行時間C:每個發(fā)生的任務(wù)所需要的處理時間總量最后期限D(zhuǎn)eadline:任務(wù)必須完成的時刻處理空閑處理空閑周期1周期2處理任務(wù)P,執(zhí)行時間C任務(wù)P,周期T周

21、期性任務(wù)的時序圖RM算法 48RM算法NotationsTask set = 1, 2, ., mPeriods T1, T2, T3, ., TmComputation times C1, C2, C3, ., Cm1/ Ti = rate of periodic task, i = number of instances of i per unit of timeUtilization of task setU = Si=1, . m Ci/Ti.If U 1, then there is no way to schedule the task set.49It is easy to ve

22、rify that all the instances of tasks can finishby their deadlines :-)1st instance2nd instance3rd instance1st instance2nd instance4th instance5th instance210654321t789100654321t78910Example 1. Consider a set of two tasks, 1, 2Let C1 = 1, C2 = 2, T1 = 2, and T2 = 5.Assign 1 the high priority and 2 the

23、 low priority.Assume that all the tasks start at t = 0. We have the followingexecutions of tasks50Assigning priority differently may make a schedulable taskto be unschedulable!The 1stinstancemisseddeadline!2nd instance3rd instance1st instance2nd instance4thinstance5thinstance421065321t789100654321t7

24、8910Example 2. Consider the same set of two tasks, 1, 2Let C1 = 1, C2 = 2, T1 = 2, and T2 = 5.Assign 1 the low priority and 2 the high priority.Assume that all the tasks start at t = 0. We have the followingexecutions of tasks51Example 3. Consider a set of two tasks, 1, 2Let C1 = 1, C2 = 2.1, T1 = 2

25、, and T2 = 5. U = C1/T1 + C2/T2 = 0.921st instance2nd instance3rd instanceThe 1st instance2nd instance210654321t0654321tThe 1st instance of 2 did not finish before its deadline (5)!Assign 1 the low priority and 2 the high priority.Assign 1 the high priority and 2 the low priority.Even if U 100%,則任務(wù)集

26、不能被調(diào)度; 如果任務(wù)集的利用率U m(21/m - 1),則任務(wù)集一定能被調(diào)度; 如果任務(wù)集的利用率U 69%,則任務(wù)集一定能被調(diào)度; 否則,需要用RM算法實際調(diào)度后確定任務(wù)集能否被調(diào)度。551.00.8280.7790.7560.7430.7340.693123456無窮大n(21/n-1)nRM算法的上限值 56最早截止時間優(yōu)先算法EDFEDF:Earliest Deadline First1973年C.L.Liu和J.W.Layland在Journal of ACM提出;EDF算法動態(tài)優(yōu)先級調(diào)度算法,適合于可搶占式任務(wù)。57最早截止時間優(yōu)先算法EDFEDF算法的假設(shè)條件:所有任務(wù)都是周

27、期任務(wù);每個任務(wù)必須在下一次請求前完成,即任務(wù)周期為任務(wù)的截止時間;每個任務(wù)是獨立的,即一個任務(wù)的請求不依賴于其他任務(wù)的激勵或完成;任務(wù)在每個周期內(nèi)的計算時間都相等;截止時間越短的任務(wù)具有越高的優(yōu)先級;任務(wù)可以在任何位置被搶占,不存在臨界區(qū)。58EDF算法的優(yōu)點:可調(diào)度上限可以達(dá)到100%;EDF算法的缺點:要在系統(tǒng)運行過程中計算和確定任務(wù)的優(yōu)先級,調(diào)度開銷大,不容易實現(xiàn)。最早截止時間優(yōu)先算法EDF59任務(wù)調(diào)度時機 運行任務(wù)因為資源條件不滿足被阻塞時,其它任務(wù)獲取調(diào)度機會;當(dāng)有一個優(yōu)先級更高的任務(wù)就緒(可搶占式)時,調(diào)度此任務(wù);時間片輪轉(zhuǎn)調(diào)度情況下,運行任務(wù)耗盡時間片時,下一個任務(wù)被調(diào)度;中斷

28、服務(wù)結(jié)束,退出服務(wù)程序,如果此時有更高優(yōu)先級的任務(wù)到來(可搶占式)則調(diào)度此高優(yōu)先級任務(wù),否則返回原被中斷任務(wù)。60優(yōu)先級反轉(zhuǎn)問題 優(yōu)先級反轉(zhuǎn)是一種不確定的延遲形式,經(jīng)常出現(xiàn)于存在共享資源的多任務(wù)、可搶占的執(zhí)行體中。當(dāng)高優(yōu)先級任務(wù)企圖訪問已被某低優(yōu)先級任務(wù)占有的共享資源時,就會引起優(yōu)先級反轉(zhuǎn)。高優(yōu)先級任務(wù)必須等待直到低優(yōu)先級任務(wù)釋放它占有的資源。如果該低優(yōu)先級任務(wù)又被一個或多個中等優(yōu)先級任務(wù)阻塞,問題就更加嚴(yán)重。因為低優(yōu)先級任務(wù)得不到執(zhí)行就不能訪問資源、釋放資源。于是,低優(yōu)先級任務(wù)就以一個不確定的時間阻塞高優(yōu)先級的任務(wù),系統(tǒng)的實時性沒有保障。 61任務(wù)A任務(wù)C占有資源D任務(wù)A搶占任務(wù)C任務(wù)B任務(wù)

29、A申請資源D被阻塞優(yōu)先級 高低優(yōu)先級反轉(zhuǎn)問題 62優(yōu)先級繼承 優(yōu)先級繼承是將低優(yōu)先級任務(wù)的優(yōu)先級抬升到等待它所占有的資源的高優(yōu)先級任務(wù)的優(yōu)先級。 每當(dāng)高優(yōu)先級任務(wù)由于等待資源被阻塞,此資源的擁有者的優(yōu)先級將會被抬升。當(dāng)任務(wù)釋放完它所占有的全部二進(jìn)制信號量時,它的優(yōu)先級才恢復(fù)到該任務(wù)創(chuàng)建時的原始優(yōu)先級。63任務(wù)A任務(wù)C任務(wù)A搶占任務(wù)C任務(wù)C任務(wù)A申請資源D被阻塞,任務(wù)C的優(yōu)先級臨時被抬升至A的優(yōu)先級優(yōu)先級 高低任務(wù)AC釋放資源D,A搶占任務(wù)C優(yōu)先級繼承 64優(yōu)先級天花板 優(yōu)先級天花板算法是將申請某資源的任務(wù)的優(yōu)先級抬升到可能訪問該資源的所有任務(wù)中最高優(yōu)先級任務(wù)的優(yōu)先級。這個優(yōu)先級稱為該資源的優(yōu)先

30、級天花板互斥信號量的優(yōu)先級天花板在它被創(chuàng)建時指定65任務(wù)C任務(wù)C的優(yōu)先級被抬高到天花板優(yōu)先級任務(wù)C優(yōu)先級 高低任務(wù)A優(yōu)先級天花板 66優(yōu)先級繼承與優(yōu)先級天花板的比較 優(yōu)先級天花板算法避免了優(yōu)先級繼承算法因為需要若干次改變占有資源的任務(wù)的優(yōu)先級引入的額外開銷,具有較高的效率。優(yōu)先級天花板算法要求在互斥信號量被創(chuàng)建時就確定出可能訪問競爭資源的任務(wù)情況,從而獲得該資源的優(yōu)先級天花板。67兩種算法對任務(wù)優(yōu)先級的改變在一定程度上都會影響應(yīng)用中預(yù)先設(shè)定的任務(wù)流程。對于優(yōu)先級繼承算法,只有在占有資源的低優(yōu)先級任務(wù)阻塞高優(yōu)先級任務(wù)成為事實時才會采取相應(yīng)的措施。對于優(yōu)先級天花板算法則不論這個事實是否發(fā)生都要采取

31、相應(yīng)的措施優(yōu)先級繼承與優(yōu)先級天花板的比較 68所以相對而言,優(yōu)先級繼承對應(yīng)用中任務(wù)流程的影響要小對于這兩種算法都支持的內(nèi)核,應(yīng)用程序選擇哪種算法來解決優(yōu)先級反轉(zhuǎn)問題視實際情況而定。 優(yōu)先級繼承與優(yōu)先級天花板的比較 69中斷管理廣義的中斷分類中斷:由于CPU外部的原因而改變程序執(zhí)行流程的過程,屬于異步事件,又稱為硬件中斷。自陷:表示通過處理器所擁有的軟件指令,可以預(yù)期地使處理器正在執(zhí)行的程序流程發(fā)生變化,以執(zhí)行特定的程序。屬于同步事件。異常:CPU自動產(chǎn)生的自陷,以處理異常事件。屬于同步事件。異常沒有對應(yīng)的處理器指令,當(dāng)異常事件發(fā)生時,處理器也需要無條件地掛起當(dāng)前運行的程序,執(zhí)行特定的處理程序。

32、70中斷的分類 根據(jù)硬件中斷是否可以被屏蔽,分為可屏蔽中斷和不可屏蔽中斷。對于可屏蔽中斷,外部設(shè)備的中斷請求信號一般需要先通過CPU外部的中斷控制器,再與CPU相應(yīng)的引腳相連,可編程中斷控制器可以通過軟件進(jìn)行控制,以禁止或是允許中斷。對于不可屏蔽中斷是在任何時候都不可屏蔽的,這類中斷應(yīng)隨時進(jìn)行響應(yīng)。71中斷的分類從中斷源來說,中斷可以分為硬件中斷和軟件中斷。硬件中斷是由于CPU外部的設(shè)備所產(chǎn)生的中斷,屬于異步事件,可能在程序執(zhí)行的任何位置發(fā)生,發(fā)生中斷的時間通常是不確定的。軟件中斷也稱為同步中斷或者自陷,通過處理器的軟件指令來實現(xiàn),產(chǎn)生中斷的時機是預(yù)知的,可根據(jù)需要在程序中進(jìn)行設(shè)定。軟件中斷的

33、處理程序以同步的方式進(jìn)行執(zhí)行,其處理方式同硬件中斷處理程序類似。軟件中斷是一種非常重要的機制,系統(tǒng)可通過該機制在用戶模式執(zhí)行特權(quán)模式下的操作。軟件中斷也是軟件調(diào)試的一個重要手段。72中斷的分類從中斷信號的產(chǎn)生來看,根據(jù)中斷觸發(fā)的方式,中斷可分為邊緣觸發(fā)中斷和電平觸發(fā)中斷。在邊緣觸發(fā)方式中,中斷線從低變到高或是從高變到低時,中斷信號就被發(fā)送出去,并只有在下一次的從低到高或是從高到低時才會再度觸發(fā)中斷。在電平方式中,硬件中斷線的電平發(fā)生變化時產(chǎn)生中斷信號,并且中斷信號的有效性將持續(xù)保持下去,直到中斷信號被清除。73根據(jù)中斷服務(wù)程序的調(diào)試方式,可以把中斷分為向量中斷、直接中斷、間接中斷。向量中斷是通

34、過中斷向量來調(diào)用中斷服務(wù)程序的方式。在直接中斷調(diào)用方式中,中斷對應(yīng)的中斷服務(wù)程序的入口地址是一個固定值,當(dāng)中斷發(fā)生時,程序執(zhí)行流程將直接跳轉(zhuǎn)到中斷服務(wù)程序的入口地址,執(zhí)行中斷服務(wù)程序。在間接中斷中,中斷服務(wù)程序的入口地址由寄存器提供。中斷的分類74中斷處理過程中斷處理的全過程分為中斷檢測、中斷響應(yīng)和中斷處理三個階段。中斷檢測在每條指令結(jié)束時進(jìn)行,檢測是否有中斷請求或是否滿足異常條件。如果沒有中斷信號,則處理器繼續(xù)運行,并通過取指周期取當(dāng)前程序的下一條指令;如果有中斷信號,將進(jìn)入中斷響應(yīng),對中斷進(jìn)行處理。中斷響應(yīng)是由處理器內(nèi)部硬件完成的中斷序列,而不是由程序執(zhí)行的。中斷處理即執(zhí)行中斷服務(wù)程序,用

35、來處理自陷、異?;蚴侵袛?。75中斷服務(wù)程序的主要內(nèi)容保存中斷服務(wù)程序?qū)⒁褂玫乃屑拇嫫鞯膬?nèi)容,以便于在退出中斷服務(wù)程序之前進(jìn)行恢復(fù);如果中斷向量被多個設(shè)備所共享,為了確定產(chǎn)生該中斷信號的設(shè)備,需要輪詢這些設(shè)備的中斷狀態(tài)寄存器;獲取中斷相關(guān)的其他信息;對中斷進(jìn)行具體的處理;恢復(fù)保存的上下文;執(zhí)行中斷返回指令,使CPU的控制返回到中斷的程序繼續(xù)執(zhí)行。76中斷管理機制對于多個中斷,通??梢圆捎靡韵聝煞N方法進(jìn)行處理。在處理一個中斷的時候,禁止再發(fā)生中斷。這種處理方法又稱為非嵌套的中斷處理方式。在處理中斷的時候?qū)⑵帘嗡衅渌闹袛嗾埱?。定義中斷優(yōu)先級,允許高優(yōu)先級的中斷打斷低優(yōu)先級的處理過程。這種處理

36、方法又稱為嵌套的中斷處理方式。中斷被分為多個優(yōu)先級,中斷服務(wù)程序只屏蔽那些比當(dāng)前中斷優(yōu)先級低或是與當(dāng)前中斷優(yōu)先級相同的中斷,在完成必要的上下文保存后即使能中斷。77任務(wù)間的通信和同步任務(wù)之間的關(guān)系:相互獨立:僅僅是競爭CPU資源。競爭除CPU以外的其他資源(互斥):任務(wù)必須能對共享資源進(jìn)行互斥訪問。同步:協(xié)調(diào)彼此運行的步調(diào)。通信:彼此間傳遞數(shù)據(jù)或信息,以協(xié)同完成某項工作。78任務(wù)間的通信與同步 實時多任務(wù)系統(tǒng)的功能一般要通過若干任務(wù)與若干中斷服務(wù)程序(ISRs)共同完成。任務(wù)與任務(wù)之間、任務(wù)與中斷服務(wù)程序之間必須協(xié)調(diào)動作,互相配合。內(nèi)核一般通過以下機制來完成:信號量(semaphore)和事件

37、(event)滿足同步的需要消息機制(message queue)提供通信的服務(wù)79內(nèi)核一般通過以下機制來完成:有的操作系統(tǒng)內(nèi)核還提供異步信號量機制(signal or asynchronous signal)、管道(pipe)和共享內(nèi)存(shared memory)做為補充方式。另外,對于分布在不同處理器上的任務(wù)還可以通過RPC(Romote Procedure Call)和Socket實現(xiàn)同步和通信。任務(wù)間的通信與同步 80任務(wù)間通信方式直接通信:是指在通信過程中雙方必須明確地知道彼此。一個鏈接僅與一對相互通信的任務(wù)相聯(lián)系;每對任務(wù)之間僅存在一個鏈接;鏈接可以是單向的,也可以是雙向的。間接

38、通信:通信雙方不需要指出消息的來源或去向。只有當(dāng)任務(wù)共享一個公共郵箱時鏈接才建立;一個鏈接可以與多個任務(wù)相聯(lián)系;每對任務(wù)可以使用幾個通信鏈接;鏈接可以是單向或雙向的。81信號量機制 信號量用于實現(xiàn)任務(wù)之間、任務(wù)與中斷服務(wù)程序之間的同步和任務(wù)之間的互斥。作用:控制共享資源的使用權(quán)(滿足互斥條件)標(biāo)志某事件的發(fā)生同步任務(wù)之間、任務(wù)與中斷之間的行為根據(jù)用途,信號量一般分為三種:互斥信號量:用于解決互斥問題,存在優(yōu)先級反轉(zhuǎn)問題二進(jìn)制信號量:用于解決同步問題計數(shù)信號量:用于解決資源計數(shù)問題82信號量基本操作:創(chuàng)建與刪除信號量申請與釋放信號量83消息機制 消息機制在任務(wù)和任務(wù)之間、任務(wù)和中斷服務(wù)程序之間提

39、供消息傳送(通信)機制。 從操作系統(tǒng)觀點看,消息沒有定義格式,所有的消息都是字節(jié)流,沒有特定的含義。從應(yīng)用觀點看,根據(jù)應(yīng)用定義的消息格式,消息被解釋成特定的含義。84一些操作系統(tǒng)內(nèi)核,把消息機制進(jìn)一步分為:郵箱機制:僅能存放單條消息隊列機制:可存放若干消息單向同步與雙向同步 按照接收方是否能同步發(fā)送方,消息機制分為單向同步消息機制和雙向同步消息機制消息機制 85消息隊列基本操作:創(chuàng)建和刪除消息隊列;發(fā)送普通消息;發(fā)送緊急消息;廣播消息;接收消息;取得消息隊列上的未決消息數(shù)目;清空消息隊列;取得消息隊列標(biāo)識符;86事件機制 事件機制用于任務(wù)之間、任務(wù)與ISRs之間的同步,可以提供更復(fù)雜的同步機制

40、 一個事件就是一個標(biāo)志,不具備其它信息往往內(nèi)核會定義若干個事件,稱為事件組等待事件的“與”、“或”操作 :“與”關(guān)系表示等待的幾個事件都要發(fā)生才算等待的結(jié)果發(fā)生了“或”關(guān)系表示等待的幾個事件只要有一個發(fā)生就算等待的結(jié)果發(fā)生了 87事件機制事件的特點:事件之間是相互獨立的;事件不提供數(shù)據(jù)傳輸功能;任務(wù)可以同時等待多個事件;對事件的等待方式有“與”和“或”兩種;事件無隊列,即多次向任務(wù)發(fā)送同一事件,在事件標(biāo)志未被接收處理之前,其效果等同于只發(fā)送一次?;静僮鳎喊l(fā)送事件;接收事件。88異步信號機制 異步信號機制與中斷機制非常相似,所以異步信號又被稱為軟中斷信號,有相應(yīng)的處理程序(ASR)需要處理異步

41、信號的任務(wù)由兩部分組成:一個是與異步信號無關(guān)的任務(wù)主體另一個是ASR。ASR可以看成在任務(wù)切換后(post switch extention)所做的任務(wù)擴(kuò)展。89異步信號機制異步信號與中斷的區(qū)別:一個ASR對應(yīng)于一個任務(wù),而ISR對應(yīng)于一組任務(wù);當(dāng)系統(tǒng)運行時,若外部中斷出現(xiàn)且未被系統(tǒng)屏蔽,則任務(wù)的執(zhí)行被中斷,系統(tǒng)轉(zhuǎn)而執(zhí)行與中斷相關(guān)的服務(wù)例程;當(dāng)一個異步信號被發(fā)送給某任務(wù),該任務(wù)被終止其自身代碼的運行,轉(zhuǎn)而運行與該異步信號相關(guān)的例程,因此異步信號機制也可以稱為軟中斷機制。相同點:具有中斷性;有相應(yīng)的服務(wù)程序;可以屏蔽響應(yīng)。不同點:實質(zhì)不同;處理時機(或響應(yīng)時間)不同;執(zhí)行環(huán)境不同。90異步信號機

42、制異步信號的基本操作安裝異步信號處理例程發(fā)送異步信號91時間管理嵌入式操作系統(tǒng)的時間管理包括時鐘管理和定時器管理;時間分為兩種,絕對時間和相對時間絕對時間就是日歷時間,以年、月、日、時、分、秒的時間格式記錄,時間單位為秒相對時間是相對某一刻經(jīng)過的時間,時間單位為時基時基定義為發(fā)生若干個時鐘中斷的時間長度時鐘中斷的個數(shù)一般取決于時鐘中斷服務(wù)程序中的設(shè)置時基的時間長度 = 時鐘中斷的個數(shù) * 脈沖序列的個數(shù) * 脈沖周期92實時時鐘是實時系統(tǒng)中,不能缺少的,它是實時軟件運行的必不可少的硬件設(shè)施;實時時鐘單純地提供一個規(guī)則的脈沖序列,每個脈沖間隔計數(shù)完成產(chǎn)生一次實時時鐘硬件中斷。時間管理93大多數(shù)嵌

43、入式系統(tǒng)中有兩種時鐘源:RTC(Real Time Clock,實時時鐘):一般靠電池供電,維持日期和時間獨立于OS,為計算機提供一個計時標(biāo)準(zhǔn)定時器(OS時鐘或稱系統(tǒng)時鐘):是硬件系統(tǒng)的定時器的一個由OS控制該定時器的工作開機后才有效時鐘硬件及運作機制94不同的OS,RTC和OS時鐘的關(guān)系不同;RTC和OS時鐘之間的關(guān)系統(tǒng)稱也被稱為OS的時鐘運行機制;一般來說,RTC是OS時鐘的時間基準(zhǔn),OS通過讀取RTC來初始化OS時鐘,此后兩者保持同步運行,共同維持系統(tǒng)時間。OS時鐘一般定義為整數(shù)或長整數(shù),提供給應(yīng)用程序所有和時間有關(guān)的服務(wù)。時鐘硬件及運作機制95時間管理時鐘管理功能有:維護(hù)系統(tǒng)時基,執(zhí)行

44、與系統(tǒng)時基相關(guān)的處理或操作;設(shè)置和取得時間信息;定時器管理功能有:創(chuàng)建、刪除定時器;設(shè)置定時器的觸發(fā)時間;定時器重新開始設(shè)計;終止定時器計時。96對共享資源的互斥管理關(guān)中斷:禁止中斷是最強有力的互斥機制。使用測試并置位指令:設(shè)置一個全局變量,測試該變量為0,則允許該任務(wù)訪問共享資源,反之,拒絕。禁止任務(wù)切換:不允許其他任務(wù)搶占當(dāng)前任務(wù)的執(zhí)行。使用信號量:信號量是提供任務(wù)間通信、同步和互斥的主要手段。97比較項目關(guān)中斷使用測試并置位指令禁止任務(wù)切換使用信號量鎖定范圍互斥粒度最強,鎖定所有外部事件以及與之相關(guān)聯(lián)的任務(wù)或處理過程均得不到執(zhí)行所有使用該指令訪問共享資源的代碼所有的任務(wù)只影響競爭共享資源

45、的任務(wù)對系統(tǒng)響應(yīng)時間的影響如果關(guān)中斷的時間較長,則對系統(tǒng)的響應(yīng)性能有很大影響較小如果禁止切換的時間過長,則影響系統(tǒng)的響應(yīng)性能對系統(tǒng)響應(yīng)性能有一定影響,可能導(dǎo)致優(yōu)先級反轉(zhuǎn)實現(xiàn)時的系統(tǒng)開銷小小小較大注意事項關(guān)中斷時間要盡量短不是所有的處理器都具備這種指令,影響可移植性關(guān)調(diào)度的時間要盡量短需采用一定的策略解決優(yōu)先級反轉(zhuǎn)問題98存儲管理存儲管理是操作系統(tǒng)核心重要的組成部分提供內(nèi)存資源的合理分配和存儲保護(hù)等功能一般操作系統(tǒng)的存儲管理非常復(fù)雜,廣泛使用了虛擬存儲管理虛擬存儲管理就是通過操作系統(tǒng)對內(nèi)存和外存的管理,使應(yīng)用程序獲得比計算機實際內(nèi)存更大的編址空間,使每一個應(yīng)用程序都可以享有一段獨立的虛擬存儲空間

46、。各應(yīng)用程序被分隔在各自的地址空間運行,不致相互干擾,起到存儲保護(hù)的功能。99嵌入式系統(tǒng)中存儲管理的特殊性 嵌入式操作系統(tǒng)的存儲管理通常比較簡單在具體的嵌入式應(yīng)用中,任務(wù)的數(shù)量和各自可能使用的內(nèi)存容量在開發(fā)時就已預(yù)測。對于實時、嵌入式應(yīng)用,如果采用虛擬存儲管理,由于頁交換的時間不可預(yù)測會影響整個系統(tǒng)的確定性。100嵌入式系統(tǒng)中存儲管理的特殊性 嵌入式系統(tǒng)通常不采用虛擬存儲管理,而采用:靜態(tài)內(nèi)存分配動態(tài)內(nèi)存分配,分為: 固定大小內(nèi)存分配:分區(qū)管理 可變大小內(nèi)存分配:堆管理101存儲布局FLASH/EPROM/ROM空間:CODE、常數(shù)、DATARAM空間1:DATA、BSS、StackRAM空間

47、2:Kernel WorkspaceRAM空間3:OS 管理RAM空間4:應(yīng)用管理102分區(qū)管理分區(qū)是一段物理地址連續(xù)的內(nèi)存空間。分區(qū)可以被劃分為多個大小固定的緩沖區(qū),應(yīng)用申請和釋放空間都對緩沖區(qū)進(jìn)行操作。103堆管理堆是一段連續(xù)的、大小可配置的內(nèi)存空間,提供可變內(nèi)存塊的分配, 大小在創(chuàng)建時由應(yīng)用指定。應(yīng)用請求獲得與釋放的內(nèi)存塊稱為Buffer(BUF) 。 BUF的大小要求是頁的倍數(shù),當(dāng)然,若應(yīng)用在請求BUF時,給出的長度不是頁的倍數(shù),系統(tǒng)會自動將其調(diào)整為頁的倍數(shù)。頁也是應(yīng)用在創(chuàng)建Heap時指定的,必須大于等于4并且為4的倍數(shù),是在Heap上進(jìn)行內(nèi)存分配的最小單元。 104內(nèi)存管理在應(yīng)用中可

48、以創(chuàng)建多個分區(qū)和堆,以實現(xiàn)對多個內(nèi)存區(qū)域的管理。對分區(qū)的操作主要有:創(chuàng)建分區(qū);刪除分區(qū);從分區(qū)中申請內(nèi)存塊;將內(nèi)存塊釋放回分區(qū)中。對堆的操作主要有:創(chuàng)建堆;刪除堆;從堆中申請內(nèi)存塊;將內(nèi)存塊釋放回堆中。105內(nèi)存管理為了提高可靠性,有些實時內(nèi)核提供了內(nèi)存保護(hù)的機制,其實現(xiàn)需要用到嵌入式微處理器的MMU功能。MMU提供了一種用于實現(xiàn)程序之間相互隔離、保護(hù)的硬件機制。在一些低端的應(yīng)用中出于成本的考慮,CPU不具備MMU功能且運算速度較慢,存儲空間有限,并且應(yīng)用也很簡單。在一些高端的和安全的高可靠應(yīng)用中,允許投入更多的硬件、軟件成本,CPU的速度非??觳⑶揖邆銶MU功能,內(nèi)存保護(hù)功能對時間性造成的影

49、響也可忽略,因而要求內(nèi)核提供內(nèi)存提供的機制。但是并不是所有的嵌入式實時操作系統(tǒng)都提供了內(nèi)存保護(hù)功能。106I/O管理很多嵌入式實時內(nèi)核都提供了簡單的輸入/輸出管理,提供了結(jié)構(gòu)化訪問設(shè)置的方式。使用I/O管理的應(yīng)用可以在系統(tǒng)配置表中定義設(shè)備驅(qū)動程序表,其中包括了設(shè)備驅(qū)動程序的入口地址。每個設(shè)備驅(qū)動程序包括Initialization(初始化)、Open(打開)、Close(關(guān)閉)、Read(讀)、Write(寫)和Control(控制)等操作。107出錯處理嵌入式系統(tǒng)中出現(xiàn)的錯誤可以分為一般性錯誤和嚴(yán)重性錯誤。一般錯誤不會對系統(tǒng)直接造成致命的影響,其后果可以在一定范圍內(nèi)得到糾正,對這類錯誤的處理由內(nèi)核和應(yīng)用協(xié)作完成。其實質(zhì)是內(nèi)核向應(yīng)用提出錯誤,實際的處理由應(yīng)用完成。嚴(yán)重性錯誤會對系統(tǒng)造成致命性的影響,其后果不可恢復(fù),實時內(nèi)核一般會提供這類錯誤的處理程序,使得系統(tǒng)在出現(xiàn)嚴(yán)重性錯誤后能處于一個確定的狀態(tài)。另外,內(nèi)核提供的任務(wù)重啟動、用戶擴(kuò)展管理、任務(wù)超時處理以及其他的異常處理都是出錯處理的有效手段。108用戶擴(kuò)展管理用戶擴(kuò)展管理向應(yīng)用程序提供了靈活處理擴(kuò)展的機制,在無須或者不可能更改內(nèi)核代碼的情況下,用戶編寫自己的擴(kuò)展例程,內(nèi)核在調(diào)用點調(diào)用這些例程。通過用戶擴(kuò)展程序入口(Hook)和系統(tǒng)配置表可以實現(xiàn)內(nèi)核在功能

溫馨提示

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

評論

0/150

提交評論