嵌入式系統算法綜述_第1頁
嵌入式系統算法綜述_第2頁
嵌入式系統算法綜述_第3頁
嵌入式系統算法綜述_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、嵌入式系統論文專業:通信工程班級:0904班姓名:周晨學號:U200913881嵌入式實時操作系統中實時調度算法綜述率單調算法引言實時調度是指在有限的系統資源下,為一系列任務決定何時運行,并分配任務運行除 CPU之外的資源,以保證其時間約束、時序約束和資源約束得到滿足。一個實時系統可以由 單處理器系統來實現,也可以用多處理器系統來實現。實時調度算法是保障實時系統時限性 和高可靠性的最重要手段之一。兇。,概述對一般的程序來說,大多數是考慮指令執行的邏輯順序,指令何時執行并不重要。而對 實時應用系統的程序就不一樣,當外部某激勵出現時,系統必須以一定的方式和在限定的時 間內響應它,如果已超時,那怕執

2、行結果是正確的,系統也認為是失效的。實時操作系統通 常被分為軟實時操作系統和硬實時操作系統。前者意味著偶爾錯過時限是可以容忍的;后者 意味著執行過程不但必須正確而且必須準時。在實時操作系統中,系統將程序分成許多任務 (或進程),而每個任務的行為都預先可知,或者是有明確的功能,系統根據一定的調度原則, 決定誰可取得執行權,這就是RTOS的核心所在。速率單調算法速率單調算法是一個經典的算法,它是針對那些響應和處理周期性事件的實時任務的。 它事先為每個這樣的實時任務,分配一個與事件頻率成正比的優先級。例如,周期為20ms 的實時任務,優先級為50;而周期為100ms的實時任務,優先級為10。運行時,

3、調度程序總 是調度優先級最高的就緒任務。必要時搶占當前正在運行的任務。根據進程執行周期的長短來決定進程的優先級別,適合 于周期性實時任務.prio fc(l/ T) Jt:系數:進fit先級 T:任務周期實現時,就緒隊列中的所有任務,按優先級Priority排隊,優先級最高的任務排在隊 首。當處于運行態的任務,由于某種原因而掛起時,只要把就緒隊列的首元素,從就緒隊列 中取下,使運行指針pRunTask指向該元素即可。如果是處于其他狀態的任務變為就緒狀態, 而掛起就緒隊列時,則必須對運行任務和就緒隊列首元素的任務進行比較,優先級高的任務 占有CPU。為了區分這兩種方式,定義一個枚舉型變量MODE

4、: Enum MODESUSPEND 一 XIT, READY同時,在內核中設置兩個全局變量sehedulerFlag和sehedulerMode: BOOLEAN SehedulerFlag Enum MODE SchedulerMode;前者確定調度程序是否應該進行調度,后者確定按何種方式進行調度。內核在處理系統調用命令或處理其他中斷的過程中,有些任務的狀態可能發生變化,也 可能沒有發生什么變化。如果發生變化,就需要就行調度,相應的處理函數將把內核中的全 局變量SchedulerFlag置為TRUE;而在調度程序處理完畢后,重新把它置為FALSE。這樣, 調度程序就可以根據sehedule

5、rFlag,確定是否對任務進行實際的調度。當運行的任務被掛起,或者退出運行而引起調度時,把schedulerMode置為susPEND 一 xIT;當某個任務的狀態由其他狀態變為就緒,而引起調度時,把SehedulerMode置為 READY0于是,調度程序Sehedule;的實現,就可說明如下,其程序為: voidScheduler(intPoliey) if(SehedulerFlag=TRUE) if(SehedulerMode=SUSpENDesEXIT) GetRunTask(Poliey);/取就緒隊列第一個元素作為運行任務 EISe Taskswiteh(Policy);/就緒隊

6、列第一個任務和運行任務互相切換 SehedulerFlag=False;其流程圖為:圖 3-1 $cheduler()iift 程圖其中,函數GetRunTask按所規定的策略,取就緒隊列第一個元素作為運行任務。此時, 原運行任務的TCB,在該任務狀態變化時,己插入掛起隊列或靜止隊列。在此情況下, GetRUNTask的實現過程如下,其中,常數SRF表示數率優先策略。VOidGetRunTask(intPolicy)switeh(policy)easeSRF:PRunTask=GetReadyTask(NULL);/取就緒隊列首元素SetTasktstate(PRunTask,RUN);/設置

7、任務狀態Break;當SchedulerMode為READY時,這是某個任務的狀態由其他狀態變為就緒,而引起調度, 這時,任務的TCB已按優先級插入就緒隊列。所以,函數Taskswitch按Poficy所規定的策 略,如果就緒隊列的第一個任務的優先級高于當前運行的任務的優先級,就使就緒隊列的第 一個任務和運行任務互相切換。實現過程示意如下:Taskswiteh(intPolicy)TCB *PTask=GetReadyTask(NULL);switch(poliey)Case SRF:If(pTask PriorityPRunTask Priority)SetTaskstate(PTask, RUN);SetTaskstate(PRunTask, policy);PutReadyTadk(PRunTask,Poliey);/將任務按 Poliey 策略放回就緒隊列PRunTask=PTask:elseputReadyTadk(PTask, Poliey);Break;這個算法

溫馨提示

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

評論

0/150

提交評論