嵌式系統(tǒng)基礎(chǔ)部分-實(shí)時(shí)系統(tǒng)_第1頁
嵌式系統(tǒng)基礎(chǔ)部分-實(shí)時(shí)系統(tǒng)_第2頁
嵌式系統(tǒng)基礎(chǔ)部分-實(shí)時(shí)系統(tǒng)_第3頁
嵌式系統(tǒng)基礎(chǔ)部分-實(shí)時(shí)系統(tǒng)_第4頁
嵌式系統(tǒng)基礎(chǔ)部分-實(shí)時(shí)系統(tǒng)_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)原理與應(yīng)用實(shí)時(shí)系統(tǒng)?嵌入式系統(tǒng)都是實(shí)時(shí)系統(tǒng)嗎?不一定吧!實(shí)時(shí)系統(tǒng)與嵌入式系統(tǒng)嵌入式系統(tǒng)不一定是實(shí)時(shí)系統(tǒng)實(shí)時(shí)系統(tǒng)一般都是嵌入式系統(tǒng)什么是實(shí)時(shí)?龜兔賽跑有熊出沒!不幸被熊發(fā)現(xiàn)!逃跑吧!誰能跑的掉?足夠快!什么是實(shí)時(shí)系統(tǒng)? 實(shí)時(shí)指對(duì)隨機(jī)發(fā)生的外部時(shí)間做出及時(shí)的相應(yīng)并對(duì)其進(jìn)行處理。(所謂事件時(shí)指來自與計(jì)算機(jī)系統(tǒng)相連接的設(shè)備所提出的服務(wù)要求和采集數(shù)據(jù)) 實(shí)時(shí)系統(tǒng)指系統(tǒng)能及時(shí)(或即時(shí))相應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)該事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行。 什么是實(shí)時(shí)系統(tǒng)? 開始截止時(shí)間實(shí)時(shí)系統(tǒng)在某時(shí)間以前必須開始執(zhí)行指定任務(wù); 完成截止時(shí)間實(shí)時(shí)系統(tǒng)在某時(shí)間以前必須完成指定任務(wù)。

2、什么是實(shí)時(shí)系統(tǒng)? ieee(美國電氣電子工程師協(xié)會(huì))實(shí)時(shí)系統(tǒng)為“那些正確性不僅取決于計(jì)算的邏輯結(jié)果,也取決于產(chǎn)生結(jié)果所花費(fèi)的時(shí)間的系統(tǒng)”。實(shí)時(shí)嵌入式系統(tǒng)必須在一個(gè)可預(yù)測可保證的時(shí)間段內(nèi)做出對(duì)外部事件的反應(yīng)。如果沒有達(dá)到上述要求,那么系統(tǒng)就會(huì)做出錯(cuò)誤的操作。什么是實(shí)時(shí)系統(tǒng)? posix standard 1003.1操作系統(tǒng)中實(shí)時(shí)的定義:操作系統(tǒng)有能力在限定響應(yīng)時(shí)間范圍內(nèi),提供滿足需求的服務(wù)。-實(shí)時(shí)系統(tǒng)指標(biāo) 響應(yīng)時(shí)間(response time): 是計(jì)算機(jī)識(shí)別一個(gè)外部事件到作出響應(yīng)的時(shí)間, 生存時(shí)間(survival time): 是數(shù)據(jù)有效等待時(shí)間, 在這段時(shí)間里數(shù)據(jù)是有效的。 吞吐量(th

3、roughput): 是在一給定時(shí)間內(nèi), 系統(tǒng)可以處理的事件總數(shù)。實(shí)時(shí)系統(tǒng)到底有多快? 實(shí)時(shí)系統(tǒng)的響應(yīng)“足夠快”滿足要求即可 實(shí)時(shí)軟件時(shí)限十微秒的時(shí)間內(nèi)對(duì)外部事件做出可靠的響應(yīng) 實(shí)時(shí)系統(tǒng)是最快的嗎?不一定是運(yùn)行速度最快的代碼可預(yù)測性比速度更重要怎么達(dá)到實(shí)時(shí)的要求呢? 充分發(fā)揮硬件的功能 微處理器的中斷機(jī)制 簡單的單線程循環(huán)程序 基于實(shí)時(shí)操作系統(tǒng)的復(fù)雜多線程程序 以硬件的方式實(shí)現(xiàn)軟件嵌入式系統(tǒng)分類 按確定性來分嵌入式系統(tǒng)硬實(shí)時(shí)系統(tǒng)(hard real time)系統(tǒng)對(duì)系統(tǒng)響應(yīng)時(shí)間有嚴(yán)格的要求,如果系統(tǒng)響應(yīng)時(shí)間不能滿足,就要引起系統(tǒng)崩潰或致命的錯(cuò)誤。軟實(shí)時(shí)系統(tǒng)(soft real time)系統(tǒng)對(duì)

4、系統(tǒng)響應(yīng)時(shí)間有要求,但是如果系統(tǒng)響應(yīng)時(shí)間不能滿足,不會(huì)導(dǎo)致系統(tǒng)出現(xiàn)致命的錯(cuò)誤或崩潰。嵌入式系統(tǒng)分類 按確定性來分嵌入式系統(tǒng)嚴(yán)格實(shí)時(shí)系統(tǒng)( firm real-time )系統(tǒng)對(duì)系統(tǒng)響應(yīng)時(shí)間有嚴(yán)格的要求,如果系統(tǒng)響應(yīng)時(shí)間不能滿足,就要導(dǎo)致無法接受的低質(zhì)量服務(wù)。 非實(shí)時(shí)系統(tǒng)( non real-time )系統(tǒng)對(duì)系統(tǒng)響應(yīng)時(shí)間沒有實(shí)時(shí)要求。硬實(shí)時(shí)系統(tǒng)應(yīng)用 汽車 (沃爾沃s80有19臺(tái)計(jì)算機(jī)) 飛機(jī) (jas) 醫(yī)療設(shè)備 空間設(shè)備 (火星探測器) 軍方系統(tǒng) 工業(yè)自動(dòng)化舉例硬實(shí)時(shí)嵌入式系統(tǒng) 交換機(jī)交換機(jī)速度很快,你感覺不到交換機(jī)的交換時(shí)間消耗。當(dāng)你在互聯(lián)網(wǎng)上沖浪時(shí),你訪問一個(gè)網(wǎng)站,需要經(jīng)過無數(shù)次交換過程

5、,如果其中一個(gè)交換機(jī)的交換服務(wù)速度下降,將導(dǎo)致訪問速度的下降,甚至導(dǎo)致網(wǎng)絡(luò)的終端。軟實(shí)時(shí)系統(tǒng)應(yīng)用 軟實(shí)時(shí)系統(tǒng)應(yīng)用 游戲 dvd (mpeg 編碼) 英特網(wǎng)視頻和廣播 通訊web server舉例軟實(shí)時(shí)嵌入式系統(tǒng) pda,手機(jī)pda支持很多應(yīng)用軟件,這些手機(jī)的應(yīng)用軟件的響應(yīng)時(shí)間只要用戶可以接受即可舉例嚴(yán)格實(shí)時(shí)嵌入式系統(tǒng) 打印機(jī)一分鐘可以打印3頁至100頁想像一下,如果打印機(jī)二分鐘只打印一頁,不錯(cuò)打印機(jī)還在工作,但你能忍受嗎? 視頻點(diǎn)播寬帶視頻點(diǎn)播一般可以達(dá)到512k,視頻效果基本可以觀看。如果寬帶視頻速度只能達(dá)到128k,你能忍受嗎?軟實(shí)時(shí) vs 硬實(shí)時(shí)1s100ms10ms1ms100ms10

6、ms1mssofthard激光打印機(jī)tcpip協(xié)議棧自動(dòng)檢票機(jī)大型游戲比較非實(shí)時(shí)系統(tǒng)軟實(shí)時(shí)系統(tǒng)實(shí)時(shí)系統(tǒng)硬實(shí)時(shí)系統(tǒng)嵌入式實(shí)時(shí)系統(tǒng)分類 按軟件結(jié)構(gòu)來分嵌入式實(shí)時(shí)系統(tǒng)單線程程序(single-threaded program)(1)循環(huán)輪詢系統(tǒng)(polling loop)(2)有限狀態(tài)機(jī)(finit state machine)事件驅(qū)動(dòng)系統(tǒng) (event-driven system)(1)前后臺(tái)系統(tǒng)(foreground/background)又叫中斷驅(qū)動(dòng)系統(tǒng)(2)實(shí)時(shí)多任務(wù)系統(tǒng)(multitasking或multi-thread program model)(3)多處理機(jī)系統(tǒng)循環(huán)輪詢系統(tǒng) 優(yōu)點(diǎn):對(duì)

7、于簡單的系統(tǒng)而言,便于編程和理解沒有中斷的機(jī)制,程序運(yùn)行良好,不會(huì)出現(xiàn)隨機(jī)的問題 缺點(diǎn):有限的應(yīng)用領(lǐng)域(由于不可確定性)對(duì)于大量的i/o服務(wù)的應(yīng)用,不容易實(shí)現(xiàn)大的程序不便于調(diào)試 適合于慢速和非??焖俚暮唵蜗到y(tǒng)循環(huán)輪詢系統(tǒng) 最簡單的軟件結(jié)構(gòu)是循環(huán)輪詢,程序依次檢查系統(tǒng)的每一個(gè)輸入條件,一旦條件成立就進(jìn)行相應(yīng)的處理。initialize()while(true) if(condition_1) action_1(); if(condition_2) action_2(); if(condition_n) acition_n();舉例-簡單循環(huán)輪詢系統(tǒng)舉例-復(fù)雜循環(huán)輪詢系統(tǒng)有限狀態(tài)機(jī) 優(yōu)點(diǎn):對(duì)于小的

8、系統(tǒng)而言,便于編程和理解可以快速的執(zhí)行只是通過改變輸出功能來改變機(jī)器的響應(yīng) 缺點(diǎn):有限的應(yīng)用領(lǐng)域不能保證確定性對(duì)于大的應(yīng)用系統(tǒng),難于調(diào)試舉例-簡單有限狀態(tài)機(jī)舉例-復(fù)雜有限狀態(tài)機(jī)事件驅(qū)動(dòng)系統(tǒng) 事件驅(qū)動(dòng)系統(tǒng)是能對(duì)外部事件直接響應(yīng)的系統(tǒng)。是嵌入式實(shí)時(shí)系統(tǒng)的主要形式。前后臺(tái)實(shí)時(shí)多任務(wù)多處理器等 例如,很多基于微處理器的產(chǎn)品采用前后臺(tái)系統(tǒng)設(shè)計(jì),如微波爐、電話機(jī)、玩具等。從省電的角度出發(fā),平時(shí)微處理器處在停機(jī)狀態(tài),所有的事都靠中斷服務(wù)來完成。前后臺(tái)系統(tǒng) 前后臺(tái)系統(tǒng)(foreground/background)中斷服務(wù)程序處理異步事件,這部分可稱為前臺(tái)(foreground),或叫中斷級(jí)應(yīng)用程序是一個(gè)無限的

9、循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可稱為后臺(tái)(background),或叫任務(wù)級(jí) 系統(tǒng)的性能:中斷延遲時(shí)間(interrupt latency time)響應(yīng)時(shí)間(response time)恢復(fù)時(shí)間(recovery time)前后臺(tái)系統(tǒng) 中斷驅(qū)動(dòng)系統(tǒng)的一種后臺(tái)是一個(gè)循環(huán)輪詢系統(tǒng)一直在運(yùn)行。前臺(tái)是由一些中斷處理過程組成的。當(dāng)有一前臺(tái)事件(外部事件)發(fā)生時(shí),引起中斷, 進(jìn)行前臺(tái)處理, 處理完成后又回到后臺(tái)(通常又稱主程序)。中斷中斷1 1中斷中斷2 2主程序主程序中斷中斷1 1中斷中斷1 1中斷中斷2 2前后臺(tái)系統(tǒng)isrisrisrisr時(shí)間后后臺(tái)臺(tái)前臺(tái)前臺(tái)前后臺(tái)系統(tǒng) 需要考慮的

10、是中斷的現(xiàn)場保護(hù)和恢復(fù),中斷嵌套,中斷處理過程與主程序的協(xié)調(diào)(共享資源)問題。 系統(tǒng)的性能:中斷延遲時(shí)間(interrupt latency time)響應(yīng)時(shí)間(response time)恢復(fù)時(shí)間(recovery time) 中斷請(qǐng)求中斷請(qǐng)求 數(shù)據(jù)傳送數(shù)據(jù)傳送 響應(yīng)時(shí)間響應(yīng)時(shí)間 主程序主程序 現(xiàn)場保護(hù)現(xiàn)場保護(hù) 和恢復(fù)和恢復(fù)中斷服務(wù)中斷服務(wù) | | 中斷延遲時(shí)間中斷延遲時(shí)間 恢復(fù)時(shí)間恢復(fù)時(shí)間前后臺(tái)系統(tǒng)實(shí)時(shí)多任務(wù)系統(tǒng) 優(yōu)點(diǎn):將復(fù)雜的系統(tǒng)分解為相對(duì)獨(dú)立的多個(gè)線程, 達(dá)到“分而制之”的目的,從而降低系統(tǒng)的復(fù)雜性。保證系統(tǒng)的實(shí)時(shí)性系統(tǒng)的模塊化好,提高系統(tǒng)的可維護(hù)性。 缺點(diǎn):需要采用一些新的軟件軟件設(shè)

11、計(jì)方法需要增加功能:線程間的協(xié)調(diào),同步和通信功能需要對(duì)每一個(gè)共享資源互斥導(dǎo)致線程間的競爭需要使用rtos,rtos要增加系統(tǒng)的開銷實(shí)時(shí)多任務(wù)系統(tǒng) 實(shí)時(shí)多任務(wù)系統(tǒng)單處理器多任務(wù)系統(tǒng)多處理多任務(wù)系統(tǒng)單處理器多任務(wù)系統(tǒng) 對(duì)于一個(gè)復(fù)雜的嵌入式實(shí)時(shí)系統(tǒng)來說,當(dāng)采用中斷處理程序加一個(gè)后臺(tái)主程序這種軟件結(jié)構(gòu)難以實(shí)時(shí)的、準(zhǔn)確的、可靠的完成時(shí)存在一些互不相關(guān)的過程需要在一個(gè)計(jì)算機(jī)中同時(shí)處理時(shí)需要采用實(shí)時(shí)多任務(wù)系統(tǒng)!需要采用實(shí)時(shí)多任務(wù)系統(tǒng)!單處理器多任務(wù)系統(tǒng) 結(jié)構(gòu)由多個(gè)任務(wù),多個(gè)中斷處理過程,實(shí)時(shí)操作系統(tǒng)組成的有機(jī)的整體。 每個(gè)任務(wù)是順序執(zhí)行的,并行性通過操作系統(tǒng)來完成,任務(wù)間的相互通信和同步也需要操作系統(tǒng)的支持

12、。 流程并發(fā)多任務(wù):后臺(tái)后臺(tái)前臺(tái)前臺(tái) isrstasks單處理器多任務(wù)系統(tǒng)多任務(wù)系統(tǒng)多個(gè)順序執(zhí)行的程序并行運(yùn)行。宏觀上看,所有的程序同時(shí)運(yùn)行,每個(gè)程序運(yùn)行在自己獨(dú)立的cpu上。實(shí)際上,不同的程序是共享同一個(gè)cpu和其它硬件。因此,需要rtos來對(duì)這些共享的設(shè)備和數(shù)據(jù)進(jìn)行管理。每個(gè)程序都被編制成無限循環(huán)的程序,等待特定的輸入,執(zhí)行相應(yīng)的任務(wù)等。這種程序模型將系統(tǒng)分成相對(duì)簡單的,相互合作的模塊。單處理器多任務(wù)系統(tǒng) 優(yōu)點(diǎn)將復(fù)雜的系統(tǒng)分解為相對(duì)獨(dú)立的多個(gè)線程, 達(dá)到“分而制之”的目的,從而降低系統(tǒng)的復(fù)雜性。保證系統(tǒng)的實(shí)時(shí)性。系統(tǒng)的模塊化好,提高系統(tǒng)的可維護(hù)性。 缺點(diǎn)需要采用一些新的軟件設(shè)計(jì)方法。需要增

13、加功能:線程間的協(xié)調(diào),同步和通信功能。需要對(duì)每一個(gè)共享資源互斥。導(dǎo)致線程間的競爭。需要使用rtos,rtos要增加系統(tǒng)的開銷。多處理器多任務(wù)系統(tǒng) 多任務(wù)可運(yùn)行在多個(gè)處理器上,由操作系統(tǒng)統(tǒng)一調(diào)度,處理。 宏觀上看是并發(fā)的,微觀上看也是并發(fā)的。 多處理機(jī)系統(tǒng)分為緊耦合系統(tǒng)(tightly-coupled system)和松耦合系統(tǒng)(loosely-coupled system)兩種。 多處理多任務(wù)系統(tǒng)目前還不成熟。多處理機(jī)系統(tǒng) 緊耦合系統(tǒng)(tightly-coupled system) 多個(gè)處理器通過共享內(nèi)存空間來交換信息(如:smp), 松耦合系統(tǒng)(loosely-coupled system)

14、 多個(gè)處理器通過通訊線路來連接和交換信息。舉例-多處理機(jī)系統(tǒng)舉例-多處理機(jī)系統(tǒng)實(shí)時(shí)系統(tǒng)殺毒軟件inetmon enginevirus parservirus matchingoutput alertvirus signaturesms, email, xml, html12345殺毒引擎架構(gòu)殺毒引擎架構(gòu)實(shí)時(shí)多任務(wù)系統(tǒng) 優(yōu)點(diǎn):將復(fù)雜的系統(tǒng)分解為相對(duì)獨(dú)立的多個(gè)線程, 達(dá)到“分而制之”的目的,從而降低系統(tǒng)的復(fù)雜性。保證系統(tǒng)的實(shí)時(shí)性系統(tǒng)的模塊化好,提高系統(tǒng)的可維護(hù)性。實(shí)時(shí)多任務(wù)系統(tǒng) 缺點(diǎn):需要采用一些新的軟件軟件設(shè)計(jì)方法需要增加功能:線程間的協(xié)調(diào),同步和通信功能需要對(duì)每一個(gè)共享資源互斥導(dǎo)致線程間的競爭

15、需要使用rtos,rtos要增加系統(tǒng)的開銷實(shí)時(shí)系統(tǒng)基本概念任務(wù) 一個(gè)任務(wù),也稱作一個(gè)線程,是一個(gè)簡單的程序,該程序可以認(rèn)為cpu完全只屬該程序自己。實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)過程,包括如何把問題分割成多個(gè)任務(wù),每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分,每個(gè)任務(wù)被賦予一定的優(yōu)先級(jí),有它自己的一套cpu寄存器和自己的??臻g。stackstackstackstatusspprioritystatusspprioritystatussppriorityspmemory cpu task 1task 2task ncpu registers多任務(wù)實(shí)時(shí)任務(wù) 如實(shí)時(shí)系統(tǒng)支持n個(gè)周期實(shí)時(shí)任務(wù)t1, ,tn。ti 可以用 (pi

16、, ci, di)三元組描述 p,周期 c,最壞情況下的執(zhí)行時(shí)間 d,任務(wù)結(jié)束期限 實(shí)時(shí)任務(wù) ti 在周期開始執(zhí)行,消耗ci時(shí)間單元,但必須在di時(shí)間單元后執(zhí)行完畢。如果pi=di, 則三元組中di可以被忽略任務(wù)的分類 按照到達(dá)情況的可預(yù)測性,任務(wù)可以劃分為:周期任務(wù)周期任務(wù)(periodic task)非周期任務(wù)非周期任務(wù) 按照重要程度,可分為:關(guān)鍵任務(wù)關(guān)鍵任務(wù)(critical task)非關(guān)鍵任務(wù)非關(guān)鍵任務(wù)(noncritical task)周期任務(wù)與非周期任務(wù) 周期任務(wù)與非周期任務(wù)周期任務(wù)每隔一個(gè)固定的時(shí)間間隔就會(huì)執(zhí)行一次。舉例:飛行器可能需要每隔100ms獲得一次關(guān)于飛行器的速度、高

17、度和姿態(tài)數(shù)據(jù),控制傳感器獲取這些數(shù)據(jù)就需要通過周期任務(wù)來進(jìn)行。非周期任務(wù)執(zhí)行的間隔時(shí)間則為不確定的。舉例:移動(dòng)通信設(shè)備中的通信任務(wù),該任務(wù)只有在需要進(jìn)行通信的情況下才會(huì)得到執(zhí)行。非周期任務(wù)分為:sporadic task:有最小到達(dá)間隔時(shí)間限制有最小到達(dá)間隔時(shí)間限制aperiodic task:沒有到達(dá)時(shí)間限制沒有到達(dá)時(shí)間限制關(guān)鍵任務(wù)與非關(guān)鍵任務(wù) 關(guān)鍵任務(wù)與非關(guān)鍵任務(wù)關(guān)鍵任務(wù):關(guān)鍵任務(wù):為需要得到及時(shí)執(zhí)行及時(shí)執(zhí)行的任務(wù),否則將出現(xiàn)災(zāi)難性的后果舉例:飛行器中用于處理生命支持系統(tǒng)和穩(wěn)定性控制系統(tǒng)的任務(wù)非關(guān)鍵任務(wù):非關(guān)鍵任務(wù):如果沒有得到及時(shí)執(zhí)行,則不會(huì)產(chǎn)生嚴(yán)重后果 任務(wù)執(zhí)行方式 同步:按照預(yù)定的控

18、制流順序發(fā)生的事件 異步:一般由中斷產(chǎn)生并處理幾個(gè)實(shí)時(shí)操作系統(tǒng)概念 確定性(determinism) 響應(yīng)性(responsiveness) 用戶控制(user control) 可靠性(reliability) 軟失敗操作(fail-soft operation)確定性 實(shí)時(shí)軟件對(duì)于外部事件的響應(yīng)時(shí)間必須是實(shí)時(shí)的、確定的和可以重復(fù)實(shí)現(xiàn)的,不管當(dāng)時(shí)系統(tǒng)內(nèi)部狀態(tài)如何,都是可預(yù)測的。一個(gè)測量操作系統(tǒng)確定性能力的指標(biāo)是從一個(gè)高優(yōu)先級(jí)設(shè)備中斷到達(dá)到開始服務(wù)的最大延遲。在非實(shí)時(shí)操作系統(tǒng)中,這個(gè)延遲可能是幾十到數(shù)百毫秒;在實(shí)時(shí)操作系統(tǒng)中有一個(gè)明確的上界,從幾個(gè)微秒到一毫秒不等。響應(yīng)性 響應(yīng)性是在應(yīng)答中斷后

19、,操作系統(tǒng)服務(wù)中斷時(shí)間。初始化中斷處理和開始執(zhí)行中斷服務(wù)程序(isr)需要的時(shí)間。如果是要求一個(gè)進(jìn)程切換的isr執(zhí)行,那么比在當(dāng)前進(jìn)程上下文中的isr執(zhí)行延遲更長時(shí)間。執(zhí)行isr需要的時(shí)間。這通常依賴于硬件平臺(tái)。中斷嵌套的作用。如果一個(gè)isr可能被另一個(gè)中斷的到達(dá)而中斷,那么它的服務(wù)將被延遲。響應(yīng)時(shí)間 確定性和響應(yīng)性共同構(gòu)成了對(duì)于外部事件的響應(yīng)時(shí)間。 響應(yīng)時(shí)間對(duì)于rtos是至關(guān)重要的,由于系統(tǒng)必須滿足系統(tǒng)外部個(gè)人、設(shè)備或者數(shù)據(jù)流的定時(shí)要求。中斷開始中斷結(jié)束中斷請(qǐng)求確定性響應(yīng)性響應(yīng)時(shí)間初始化開始執(zhí)行執(zhí)行非占先式內(nèi)核中斷的性能指標(biāo)占先式內(nèi)核中斷的性能指標(biāo)用戶控制 在一個(gè)典型的非實(shí)時(shí)操作系統(tǒng)中,用戶

20、或者不能控制操作系統(tǒng)的調(diào)度功能,或者只能提供粗略的指導(dǎo),如將用戶編組進(jìn)入多于一個(gè)優(yōu)先級(jí)的類別。 在rtos中,允許用戶精細(xì)控制任務(wù)優(yōu)先級(jí)是基本功能。用戶應(yīng)該能夠區(qū)分硬實(shí)時(shí)任務(wù)和軟實(shí)時(shí)任務(wù),并在每個(gè)類別中指定相對(duì)的優(yōu)先級(jí)。一個(gè)rtos也能夠指定這類特征,如分頁或者進(jìn)程切換,哪些進(jìn)程必須總是駐留在主存中,使用哪個(gè)磁盤傳輸算法,在各種優(yōu)先級(jí)類別中的進(jìn)程有哪些權(quán)利,等等??煽啃?在非實(shí)時(shí)系統(tǒng)中一個(gè)瞬時(shí)錯(cuò)誤可以簡單地通過重新引導(dǎo)系統(tǒng)來解決 在多處理機(jī)非實(shí)時(shí)系統(tǒng)中一個(gè)處理機(jī)的失敗可能在修復(fù)或代替該處理機(jī)之前造成服務(wù)級(jí)別的降低。 但是,實(shí)時(shí)系統(tǒng)需要實(shí)時(shí)響應(yīng)和控制事件,性能的喪失或降低可能造成災(zāi)難性的后果。軟

21、失敗操作 軟失敗操作是指這樣一個(gè)特征,系統(tǒng)能夠以這樣一種方式失敗,它能夠盡可能地保留能力和數(shù)據(jù)。一個(gè)典型的傳統(tǒng)unix系統(tǒng),當(dāng)它檢測到內(nèi)核數(shù)據(jù)的誤用,在系統(tǒng)控制臺(tái)上發(fā)出失敗消息,將內(nèi)存內(nèi)容倒到磁盤用于以后的失敗分析,同時(shí)終止系統(tǒng)的執(zhí)行。與此相反,rtos將試圖或者糾正這個(gè)問題或者最小化它的影響,同時(shí)繼續(xù)運(yùn)行。典型情況下,系統(tǒng)通告用戶或者用戶進(jìn)程,它將試圖進(jìn)行糾正動(dòng)作,然后繼續(xù)操作,或許此時(shí)降低了服務(wù)級(jí)別。 js代碼的臨界段 代碼的臨界段也稱為臨界區(qū),指處理時(shí)不可分割的代碼。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入。為確保臨界段代碼的執(zhí)行,在進(jìn)入臨界段之前要關(guān)中斷,而臨界段代碼執(zhí)行完以后要立

22、即開中斷。 資源與共享 任何為任務(wù)所占用的實(shí)體都可稱為資源。資源可以是輸入輸出設(shè)備,例如打印機(jī)、鍵盤、顯示器,資源也可以是一個(gè)變量,一個(gè)結(jié)構(gòu)或一個(gè)數(shù)組等。 可以被一個(gè)以上任務(wù)使用的資源叫做共享資源。為了防止數(shù)據(jù)被破壞,每個(gè)任務(wù)在與共享資源打交道時(shí),必須獨(dú)占該資源。 利用信號(hào)量管理臨界資源任務(wù)任務(wù)信號(hào)量臨界資源 操作方法使用臨界資源前,得到信號(hào)量使用臨界資源使用完后,釋放信號(hào)量任務(wù)上下文 任務(wù)上下文任務(wù)上下文是指一個(gè)未運(yùn)行的任務(wù)的狀態(tài),如堆棧指針、計(jì)數(shù)器、內(nèi)存字段和通用寄存器等。多任務(wù) 多任務(wù)運(yùn)行的實(shí)現(xiàn)實(shí)際上是靠cpu(中央處理單元)在許多任務(wù)之間轉(zhuǎn)換、調(diào)度。cpu只有一個(gè),輪番服務(wù)于一系列任務(wù)

23、中的某一個(gè)。 多任務(wù)運(yùn)行很像前后臺(tái)系統(tǒng),但后臺(tái)任務(wù)有多個(gè)。多任務(wù)運(yùn)行使cpu的利用率得到最大的發(fā)揮,并使應(yīng)用程序模塊化。 在實(shí)時(shí)應(yīng)用中,多任務(wù)化的最大特點(diǎn)是,開發(fā)人員可以將很復(fù)雜的應(yīng)用程序?qū)哟位J褂枚嗳蝿?wù),應(yīng)用程序?qū)⒏菀自O(shè)計(jì)與維護(hù)。 任務(wù)的狀態(tài)休眠態(tài)相當(dāng)于該任務(wù)駐留在內(nèi)存中,但并不被多任務(wù)內(nèi)核所調(diào)度。 就緒意味著該任務(wù)已經(jīng)準(zhǔn)備好,可以運(yùn)行了,但由于該任務(wù)的優(yōu)先級(jí)比正在運(yùn)行的任務(wù)的優(yōu)先級(jí)低,還暫時(shí)不能運(yùn)行。 運(yùn)行態(tài)的任務(wù)是指該任務(wù)掌握了cpu的控制權(quán),正在運(yùn)行中。 掛起狀態(tài)也可以叫做等待(waiting)事件態(tài),指該任務(wù)在等待,等待某一事件的發(fā)生,(例如等待某外設(shè)的i/o操作,等待某共享資源

24、由暫不能使用變成能使用,等待定時(shí)脈沖的到來或等待超時(shí)信號(hào)的到來以結(jié)束目前的等待,等等)。發(fā)生中斷時(shí),cpu 提供相應(yīng)的中斷服務(wù),原來正在運(yùn)行的任務(wù)暫不能運(yùn)行,就進(jìn)入了中斷狀態(tài)。 等待休眠就緒運(yùn)行中斷任務(wù)切換 任務(wù)切換(context switch or task switch)當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài)(context),即cpu寄存器中的全部內(nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀況保存區(qū)(tasks context storage area),也就是任務(wù)自己的棧區(qū)之中。入棧工作完成以后,就是把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀況從該任務(wù)的棧中重新裝入cpu的寄存器,并

25、開始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過程叫做任務(wù)切換。任務(wù)切換過程增加了應(yīng)用程序的額外負(fù)荷。cpu的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時(shí)間取決于cpu有多少寄存器要入棧。實(shí)時(shí)內(nèi)核的性能不應(yīng)該以每秒鐘能做多少次任務(wù)切換來評(píng)價(jià)。內(nèi)核(kernel) 多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說為每個(gè)任務(wù)分配cpu時(shí)間,并且負(fù)責(zé)任務(wù)之間的通訊。 內(nèi)核提供的基本服務(wù)是任務(wù)切換。之所以使用實(shí)時(shí)內(nèi)核可以大大簡化應(yīng)用系統(tǒng)的設(shè)計(jì),是因?yàn)閷?shí)時(shí)內(nèi)核允許將應(yīng)用分成若干個(gè)任務(wù),由實(shí)時(shí)內(nèi)核來管理它們。 內(nèi)核本身也增加了應(yīng)用程序的額外負(fù)荷,代碼空間增加rom的用量,內(nèi)核本身的數(shù)據(jù)結(jié)構(gòu)增加了ram的用量。但更主要的是,

26、每個(gè)任務(wù)要有自己的??臻g,這一塊吃起內(nèi)存來是相當(dāng)厲害的。 內(nèi)核本身對(duì)cpu的占用時(shí)間一般在2到5個(gè)百分點(diǎn)之間。 單片機(jī)一般不能運(yùn)行實(shí)時(shí)內(nèi)核,因?yàn)閱纹瑱C(jī)的ram很有限。通過提供必不可缺少 的系統(tǒng)服務(wù),諸如信號(hào)量管理,郵箱、消息隊(duì)列、延時(shí)等,實(shí)時(shí)內(nèi)核使得cpu的利用更為有效。 調(diào)度(scheduler) 調(diào)度就是要決定該輪到哪個(gè)任務(wù)運(yùn)行了。 多數(shù)實(shí)時(shí)內(nèi)核是基于優(yōu)先級(jí)調(diào)度法的。每個(gè)任務(wù)根據(jù)其重要程度的不同被賦予一定的優(yōu)先級(jí)。 基于優(yōu)先級(jí)的調(diào)度法,指cpu總是讓處在就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。 究竟何時(shí)讓高優(yōu)先級(jí)任務(wù)掌握cpu的使用權(quán),有兩種不同的情況,這要看用的是什么類型的內(nèi)核,是不可剝奪型的還

27、是可剝奪型內(nèi)核。 調(diào)度延遲 調(diào)度延遲是指當(dāng)一個(gè)事件從引起更高優(yōu)先級(jí)的任務(wù)就緒到這個(gè)任務(wù)開始運(yùn)行之間的時(shí)間。 簡而言之,是一個(gè)任務(wù)被觸發(fā)后,由就緒到開始運(yùn)行的時(shí)間。區(qū)別應(yīng)用內(nèi)核插入中斷應(yīng)用內(nèi)核isr內(nèi)核isr退出isr中斷任務(wù)響應(yīng)中斷延時(shí)時(shí)間重新安排延時(shí)時(shí)間任務(wù)搶占式內(nèi)核非搶占式內(nèi)核區(qū)別可重入性(reentrancy) 可重入型函數(shù)可以被一個(gè)以上的任務(wù)調(diào)用而不必?fù)?dān)心數(shù)據(jù)的破壞。 可重入型函數(shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)數(shù)據(jù)不會(huì)丟失。 可重入型函數(shù)只使用局部變量,即變量保存在cpu寄存器中或堆棧中。如使用全局變量,則要對(duì)全局變量予以保護(hù)。 可重入型函數(shù) 可以被一個(gè)以上的任務(wù)

28、調(diào)用,而不必?fù)?dān)心數(shù)據(jù)的破壞??芍厝胄秃瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)數(shù)據(jù)不會(huì)丟失??芍厝胄秃瘮?shù)或者只使用局部變量,即變量保存在cpu寄存器中或堆棧中。不可重入型函數(shù) 一個(gè)不可重入型函數(shù)的例子int temp;void swap (int *x,int*y)temp=*x;*x=*y;*y=temp;可重入型函數(shù) 一個(gè)可重入型函數(shù)的例子void swap (int *x,int*y)int temp;temp=*x;*x=*y;*y=temp;可重入型函數(shù) void strcpy(char *dest, char *src) while (*dest+ = *src+)

29、; *dest = nul;函數(shù)strcpy()做字符串的復(fù)制。因?yàn)閰?shù)保存在堆棧中,故函數(shù)可以被多個(gè)任務(wù)調(diào)用,不必?fù)?dān)心各任務(wù)調(diào)用函數(shù)期間會(huì)破壞對(duì)方的指針。不可重入型函數(shù) int temp;void swap(int *x, int *y) temp = *x; *x = *y; *y = temp;task 1task 2while (1) x = 1;y = 2;swap (&x, &y); temp = *x;*x = *y;*y = temp; while (1) z = 1;t = 2;swap (&z, &t); temp = *z;*z = *t;*t = temp; 不可重入函數(shù)被中斷破壞如何使函數(shù)具有可重入性 使swap()函數(shù)具有可重入性的條件:把temp定義為局部變量調(diào)用swap()函數(shù)之前關(guān)中斷,調(diào)用后再開中斷用信號(hào)量禁止該函數(shù)在使用過程中被再次調(diào)用嵌入式系統(tǒng)典型的調(diào)度

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論