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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28、調(diào)用,而不必擔心數(shù)據(jù)的破壞??芍厝胄秃瘮?shù)任何時候都可以被中斷,一段時間以后又可以運行,而相應數(shù)據(jù)不會丟失。可重入型函數(shù)或者只使用局部變量,即變量保存在cpu寄存器中或堆棧中。不可重入型函數(shù) 一個不可重入型函數(shù)的例子int temp;void swap (int *x,int*y)temp=*x;*x=*y;*y=temp;可重入型函數(shù) 一個可重入型函數(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()做字符串的復制。因為參數(shù)保存在堆棧中,故函數(shù)可以被多個任務調(diào)用,不必擔心各任務調(diào)用函數(shù)期間會破壞對方的指針。不可重入型函數(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ù)之前關中斷,調(diào)用后再開中斷用信號量禁止該函數(shù)在使用過程中被再次調(diào)用嵌入式系統(tǒng)典型的調(diào)度

溫馨提示

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

評論

0/150

提交評論