2016-07-05 lt處理臨界段**,須關中斷,處理完畢後,再開中斷。os_cfg.h中的核心功能函式
os_enter_critical()
os_exit_critical()
osinit()
osstart()
osintenter()
osintexit()
osschedlock() os_sched_lock_en
osschedunlock() os_sched_lock_en
osversion()
呼叫uc/os-ⅱ功能函式時,中斷總應當是開著的。
os_enter_critical 和 os_exit_critical 有3種實現方法。
任務通常是乙個無限的迴圈。
必須給每個任務賦以不同的優先順序。
優先順序可以由功能函式改變。
睡眠態(task dormant):指任務駐留在程式空間,還沒交給uc/os-ⅱ來管理。
就緒態(task ready): 任務一旦建立,這個任務就進入就緒態,準備執行。
執行態(task running):呼叫osstart()可以啟動多工。
等待狀態(task waiting):通過ostimedly() 和ostimedlyhmsm()這兩個函式可以將自身延遲一段時間,這個任務進入等待狀態。
中斷服務態(isr running):被中斷的任務進入中斷服務態,中斷結束之後任務重新排程。
當所以的任務都未執行時,uc/os執行空閒任務ostaskidle()。
在uc/os初始化時,所有的任務控制塊os_tcb都被鏈結成單向空任務鍊錶。
一旦任務建立,乙個任務的控制塊os_tcb被賦值。
在就緒表中可以迅速的計算出進入就緒態的優先順序最高的任務。
uc/os任務排程的執行時間是常數。
任務的contest,其實就是cpu中的全部暫存器,contest-switch就是任務切換。
uc/os假定任務切換是靠中斷級**完成的。
排程器上鎖後中斷可以響應。
排程器上鎖後使用者應用程式不得呼叫可能會使當前任務掛起的系統功能函式。
空閒任務優先順序永遠最低。
空閒任務永遠處於就緒狀態。
借助ostaskidelhook()可以讓系統處於低功耗模式。
通過計算1秒內系統的空閒時間,計算出cpu的佔用率。
ostaskstat()的優先順序為次低優先順序。
中斷返回時檢查是否有更高優先順序的任務需要執行。
uc/os中的週期性訊號源,用於實現時間延時和確認超時。
必須在多工系統啟動以後,也就是在呼叫osstart()之後,再開啟時鐘節拍器。
第三章 核心物件
一 核心物件 1 每個核心物件都是一片兒記憶體 資料結構 由系統核心分配與訪問。2 令牌物件,事件物件,程序物件,訊號量物件,執行緒物件等都是核心物件。3 核心物件有安全限制,在建立之初就需要傳入乙個結構security attributes的安全描述符 4 類似的還有使用者物件和gdi物件等等,它...
第三章 結構表
線性表 零個或多個相同特性的資料元素的有限序列。首先它是乙個序列,元素之間是有順序 的,第乙個元素無前驅,最後乙個元素無後繼,其他的都有且只有乙個前驅和後繼。而所有元素按這種1對1的鄰接關係構成的整體就是線性表。線性表的儲存結構 線性表有順序表和鏈式兩類儲存結 構 一 順序表 順序表就是把線性表中的...
第三章 分支結構
1.關係運算子 表達結果是乙個邏輯值 真 或 假 通常用0表示假,1表示真。2.邏輯運算子 c 提供了 邏輯與 邏輯或 和 邏輯非 三種邏輯運算子。其中,和ii是雙目運算子,而 是單目運算子。3.字元可以按照ascii碼值來比較大小,英文本母有小寫和大寫兩種,例如x a x z 4.例子 程式中 a...