作業系統經常使用的資料結構
1.數組 2.位元影像. 3.結構體 4.鏈表
5.隊列 6.堆棧
數組
1。同一資料類型資料的集合;
2。佔用連續記憶體空間;
3。其中的所有元素名稱都相同,但每個元素都有一個編號;
4。元素名去掉編號(下標),得到的是數組名,數組名是個指標。
特點:1。分類存放;2。檢索速度快且恒定;3。缺點:佔用連續空間大
應用:記錄同類事物的表
位元影像
位元影像是數組的一種特殊應用
應用:登記表
結構體
1。不同資料類型資料的集合;
2。佔用連續記憶體空間;
應用:通訊錄中的一條記錄、工具箱、廚房等等
鏈表
1。同資料類型資料的集合;
2。不佔用連續記憶體空間。
特點:
1。分類存放,但空間上不連續(不需要大量的連續儲存空間);
2。檢索速度慢,且耗費的時間不固定;
應用:存放大量的較大
的表,類似檔案櫃
隊列
按照先進先出的規則群組織的資料結構可以用數組也可以用鏈表來實現應用:主要用於對象的排隊
堆棧:按照先進後出規則群組織的資料結構主要用數組來實現應用:主要用於程式模組的嵌套運行
嵌入式系統和嵌入式作業系統
嵌入式系統:智能化控制能力。
創新模式,設計滿足嵌入式要求的晶片
有時間限制
RTOS完成任務多用的時間在應用設計時就可以預知
嵌入式OS主要提供“微核心”為主,其他視窗系統介面,檔案管理等自己設計或外購。
任務:
程式是靜止的,存在於ROM、硬碟等外部裝置。任務是運動的,存在於記憶體中,有睡眠、就緒、運行、阻塞、掛起等多種狀態。
ucOS允許建立63個任務
核心中最最核心的基本服務就是調度的核心——任務切換
任務:
核心:
函數可重新進入
指一個函數可以被多個任務調用,而不需要擔心在任務切換的過程中,代碼的執行會產生錯誤的結果。
如果函數被多個任務調用,可能產生錯誤的結果,就是不可重新進入函數。
共用資源;
互斥條件:
A和B兩個任務都要訪問計算結果這個共用資源,但是在A寫這個資源的同時,B必須等待,而不能在A寫到一半的時候結束A而讓B來讀,這樣會產生災難性的後果。
這樣的共用資源稱為臨界資源(CriticalResource)。
這種訪問共用資源的排他性就是互斥。
優先順序反轉:
訊號量:
在一個時刻,有些共用資源只可以被一個任務所佔有,而有些可以被至多N個任務所共用。前一種共用資源就好比有一把鑰匙,鑰匙發出去了,得到鑰匙的任務可以訪問共用資源,其他請求該資源的任務必須等得到鑰匙的任務把鑰匙歸還。後者則可以有N把鑰匙,如果N把鑰匙都發完了,第N+1個請求訪問共用資源的任務就必須等待。這些鑰匙就可以用訊號量(semaphore)來表示。
訊號量標誌了共用資源的有效可被訪問數量,於是要獲得共用資源的訪問權,就首先要得到訊號量這把鑰匙。
訊號量三種操作:
1.建立(create)
建立並初始化訊號量,在一個事件塊裡標誌該訊號,記錄該訊號的量值,執行的是給資源配鑰匙的操作。該操作的條件是系統中還有空餘的事件塊。作業系統能處理的事件是有限的,任何的資料結構都不能無限,尤其是在即時系統中。
2.請求(pend)
請求訊號,如果還有鑰匙(訊號量大於0),就去領一把(訊號量--),執行下去;如果沒有,就要把自己阻塞掉,因為不能執行下去就不需要再佔用寶貴的CPU。
3.釋放(post)
訪問資源的操作完成後就把鑰匙交回(訊號量++)。這時,如果有等待該鑰匙的任務就緒,並比當前任務有更高的優先順序,就執行任務調度。否則,原任務在釋放訊號量之後繼續執行。
詳細內容:http://note.youdao.com/share/?id=0ada5d406ffda4f62be7f4df4b628c2a&type=note