UCOS-II移植ARM的讀書筆記(12.17)

 實時系統概念
1 前後臺系統
   不復雜的小系統通常選擇前後臺系統,應用程序是一個無限循環。在循環中調用相應的函數完成相應的操作,這部分可以看成後臺行爲。中斷服務程序處理異步事件,可以看成前臺行爲。
 
2 代碼的臨界段
    需要在前後關開中斷的代碼,不能被打斷的代碼
 
3 資源
   輸入輸出設備,各種變量,結構,數組
 
4 共享資源
   可以被多個任務使用的資源
 
5多任務
   通過CPU在許多任務之間轉換和調度
 
6任務
  每個任務都是一個無限循環,都可能處於五種狀態之一:休眠,就緒,運行,掛起,被中斷。UCOS中提供各種函數使任務能從一個狀態變爲另一個狀態
  每個任務都有自己的CPU寄存器和棧空間以及TCB任務控制塊
 
7任務切換
  任務切換過程是將正在運行任務的CPU寄存器全部內容保存到任務自己的棧區中,再將下一個要運行的任務的當前狀況從該任務的棧中重新裝入CPU的寄存器,並開始下一個任務的運行
 
8內核
  負責管理各個任務,爲每個任務分配CPU時間,並負責任務間的通信
 
9調度
  決定該輪到哪個任務運行。主要是通過優先級來決定。總是讓處於就緒態的優先級最高的任務先運行。
 
10不可剝奪型內核
  每個任務主動放棄CPU的使用權,放棄的方法可以使用多種函數定時或者定事件的放棄。異步事件還是由中斷服務來處理。中斷處理結束之後還是回到被中斷的那個任務直到該任務主動放棄CPU的使用權。在任務級,不可剝奪型內核允許使用不可重入函數函數不必擔心被重複調用,因爲每個時刻都只有一個任務在運行。當然,該函數不能具有放棄CPU使用權的功能。
 
11可剝奪型內核
  當系統響應時間很重要,就需要使用可剝奪型內核。最高優先級任務一旦就緒,總能得到CPU的使用權。當運行的任務使一個更高優先級的任務進入就緒態,當前任務的CPU使用權就被剝奪或掛起,更高優先級的任務獲得CPU的使用權。如果是中斷服務子程序造成的,中斷完成後被中斷的任務被掛起,執行更高優先級的任務。
  在可剝奪型內核中,要謹慎使用不可重入函數。因爲低優先級的和高優先級的任務有可能都調用該函數。
  總是讓就緒態的高優先級的任務先運行,中斷服務程序可以搶佔CPU
 
12可重入函數
  可重入函數或者只使用局部變量,要麼就是使用全局變量並且對全局變量予以保護。
 
13時間片輪番調度法
  UCOS中各個任務的優先級都是不同的。。不支持時間片輪番調度
 
14任務優先級
  從0開始,越小的優先級越高
 
15靜態優先級
  在執行過程中優先級是不變的
 
16動態優先級
  優先級在運行過程中可以變化
 
17優先級反轉
  避免優先級反轉的方法是使佔有共享資源的任務的優先級升到最高。
 
18任務優先級分配
 
19互斥條件
  滿足互斥條件的一般方法:
  關中斷
  使用測試並置位指令,獲得共享資源時置位,只有爲零纔有權獲得共享資源
  禁止作任務切換:用給任務切換上鎖然後開鎖的方法
  利用信號量:信號量的操作:初始化create 掛起pend 發送post
  UCOS中是等待信號量任務中優先級最高的
 
20死鎖
  死鎖也稱爲抱死指兩個任務無限期地互相等待對方控制着的資源。
 
21同步
  可以單向同步也可以雙向同步
 
22事件標誌
  當某個任務要與多個事件同步時,須使用事件標誌。
 
23任務間通信
  任務間或中斷服務與任務間的通信。有兩種途徑:通過全程變量或者發消息給另一個任務
 
24消息郵箱
  把一則消息放到郵箱,通過內核也可以接收這則消息。
 
25消息隊列
  用於給任務發消息。
 
26中斷
 
27中斷延遲
 
28中斷響應
 
29中斷恢復時間
  對於可剝奪型內核,中斷的恢復要複雜一些。在中斷服務子程序的末尾,要調用一個由實時內核提供的函數。這個函數用於判斷中斷是否脫離了所有嵌套。如果脫離了嵌套就判斷是否中斷讓一個更高優先級的任務進入就緒。
 
30中斷延遲、響應及恢復
 
31中斷處理時間
 
32非屏蔽中斷
 
33時鐘節拍
 
34對存儲器的需求
  使用多任務內核時內核本身需要額外的代碼空間ROM。因爲每個任務都是獨立運行的,必須給每個任務提供單獨的棧空間RAM。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章