1. 程式人生 > >ucosiii文件結構及內核對象概念

ucosiii文件結構及內核對象概念

硬件 避免 內存管理 我們 體會 內核 底層 出口 span

  ucosiii的定義:可升級,可固化的,基於優先級的實時內核。

  下面先來看看ucosiii的文件結構圖:這個圖從下至上就是從底層到上層的一個結構,總的來說就是三層:CPU的配置與移植,內核服務,功能裁剪及應用任務。當然這個圖是盜的秉火對應手冊裏的。既然別人做了這麽好的總結,我們就多看看。

技術分享圖片

  下面我們就先看看ucosiii內核的幾個對象,一般內核的對象們都是用線性鏈表作為數據結構,來方便管理和提高管理效率。

任務

  由os_tcb控制,在ucosiii理論上可以創建無數個任務,等到後面再說這句話,從用戶的角度看,任務可以分為以下5種狀態。

技術分享圖片

  下面我們再看看從任務管理的角度的

9種狀態。

技術分享圖片

技術分享圖片

軟件定時器

  它跟硬件定時器一樣,主要用於定時,只不過它理論上是可以創建無數個定時器,但精度不及硬件定時器,內核定義的對象是os_tmr

多值信號量

  管理資源:比如某賓館的總房間數看作信號量,每住一個客人,信號量就減1,當信號量為0,就住不下客人了,每一個客人退房,信號量就加1

  標誌事件的發生:就是標誌某個事件是否發生了,然後把情況通知任務。

互斥信號量

  保護共享資源,避免資源正在被重寫的時候被其他任務讀取,再ucos中一般指的就是二值信號量(10),具體內容後面的隨筆會具體分析。

消息隊列

  是由多個消息串聯起來的機制,任務會從它的出口端獲取消息,他可比信號量攜帶更豐富的信息。

任務信號量

  其作用與多值信號量一樣,只是它只能給一個特定的任務使用,也就是說它已經成為任務的一個屬性,但又能接受其他任務發來的任務信號量

任務消息隊列

  它與消息隊列的區別,與多值信號量和任務信號量的區別一樣。

事件標誌組

  用於標誌若幹個事件是否發生的組合,比如鍵盤的組合鍵。

內存管理

  主要作用就是盡量減少內存在不斷分配和釋放的過程中造成的內存碎片;它的方法就是一次性開辟一大塊連續內存空間,然後再平均分成小的內存塊,需要使用時就申請一個內存塊,用完了再釋放回去,由此實現內存的循環利用。

  以上的只是對ucos作一個大概的認識,至少清楚了它的文件結構和幾個重要的內核對象,接下來就會在實際操作中,深入體會這些概念。

ucosiii文件結構及內核對象概念