1.大多數嵌入式作業系統主要提供三項服務:
①記憶體的管理分配(主要是動態記憶體的管理),通過作業系統提供的記憶體分配函式和記憶體釋放函式實現。
②多工管理,嵌入式實時作業系統會提供良好的任務排程機制來控制多工,實現實時性。
③外圍裝置管理,這些外圍裝置都是系統中各個任務可能用到的資源。
2.uc/os-ii是由
jean j.labrosse
在1992
年編寫的乙個嵌入式多工實時作業系統,該作業系統是用
c語言和組合語言編寫的,其中絕大部分是
c語言編寫,少部分與處理器密切相關的用組合語言編寫。
uc/os-ii
與處理器相關的**移植時需要修改。
第二章uc/os ii中的任務
一、任務的基本概念
1.uc/os ii中,同大任務分解成的小任務對應的程式實體就叫「任務」,也叫執行緒,是乙個用來解決使用者問題的
c函式和與之關聯的一些資料結構構成的實體.
2.uc/os ii的任務由三部分組成:
①任務的程式**(任務的執行部分)
②任務的堆疊(儲存任務工作環境)
③任務控制塊(用於儲存任務屬性)
3.uc/os ii 的兩種任務分類:
使用者任務:由應用程式設計者編寫的任務,用於解決應用問題.
系統任務:系統提供的任務,為應用程式提供某種服務.
uc/os ii最多可對
64個任務進行管理。
4.任務的狀態
5.使用者任務**
從函式看出函式的引數是void型指標,目的是為了傳遞各種不同型別的引數甚至函式。
在執行os_enter_critical()和
os_exit_critical()
之間的**段時不會響應中斷,這段**稱為臨界段。
6.使用者任務
ostaskcreate()是作業系統
uc/os ii
用於建立任務的函式,
osstart()
是作業系統
uc/os ii
提供的啟動任務的函式,任務啟動後由作業系統管理。
7.系統任務
(1)空閒任務(ostaskidle):每個應用程式都必須使用,為了避免在某個時間段
cpu在沒有使用者任務執行時處於空閒狀態,作業系統提供了乙個空閒任務。
(2)統計任務(ostaskstart):每秒計算一次單位時間內
cpu被使用的時間,用來了解
cpu的利用率,若使用該任務則必須把定義在系統標頭檔案
0s_cfg.h
中的系統配置常數
os_task_start_en置1
,並在建立統計任務前呼叫函式
osstartinit().
8.任務的優先順序
通常乙個應用程式的任務數小於64,
uc/os ii
把任務的優先順序分為
64個級別,數字越大優先順序越低。使用者根據需要在標頭檔案
os_cfg.h
中通過對表示最低優先順序別的常數
os_lowest_prio
賦值說明程式中優先順序別的個數,也就限制了任務數不能超過
os_lowest_prio
+ 1個。
二、任務的堆疊
1.堆疊就是儲存器中滿足「先進後出」原則的連續的儲存空間,每個任務都應配有自己的堆疊,任務堆疊是任務的重要組成部分。
2.任務堆疊的建立:在標頭檔案os_cpu.h中定義了一資料型別
os_stk
,建立堆疊。當呼叫函式
ostaskcreate()
來建立任務時,將用資料型別
os_stk
定義的陣列指標傳給該函式則可將該堆疊與相應的任務聯絡起來。
3.堆疊的增長方向分兩種,向上增長型堆疊和向下增長型堆疊,這隨系統的處理器的不同而有所不同。
4.任務控制塊:用來記錄堆疊的指標、任務的當前狀態、任務的優先級別等一些與任務管理有關的屬性的**。
讀書筆記2
關於this指標 雖然this指標大家已經很熟悉了,但是我這裡討論的關於this指標的問題可能大家還沒注意過 為了說明這個關於this的歸屬問題,我自寫了一段再簡單不過的程式,雖簡單但具體 include class a void aa 我的問題是指標p1是指向b自身嗎?一看程式,大家就知道 不是,...
讀書筆記(2)
沉默的藝術 意識科學基礎理論 量子效應只是用於穩定某種內在自由度極大的基本粒子,然後再用基本粒子的內在屬性產生意識體驗。只能通過呈現乙個系統的 物理 屬性來描述乙個系統。只能通過變成內在屬性配對的其中乙個系統,以直接體驗的方式來獲得這些內在屬性的資訊。定義乙個包含所有系統的系統d,除該系統外無任何系...
讀書筆記2
ripple專注於跨境支付領域,主要為銀行和其他金融機構提供基於區塊鏈協議的外匯 轉賬方案。目前已公布的銀行客戶有3家,並正在和另外80多家銀行深入洽談。ripple主 要通過其開發的interledger協議專案,在保持銀行等金融機構的各自不同的記賬系統的基 礎上,打造乙個全球統一的網路金融傳輸協...