10 實時操作系統(RTOS)概述


What/Why RTOS

什麼是操作系統

首先我們來探討一下什麼是實時操作系統?為什麼要用實時操作系統?

操作系統的定義是介於應用層和目標硬件之間提供中間層軟件的一種軟件;它提供出應用層和目標硬件之間的一個抽象層;職責在於去管理分配 CPU 的資源,包括 CPU 、內存和外設等。

對應用層來講,它是去執行應用層對 I/O 設備的操作。並以有效的方式使用 MCU 上所有的硬件資源。

操作系統分為兩種:分時共享/單用戶操作系統

  • MS-DOS
  • MS-Windows
  • Max OS-X
  • UNIX
  • LINUX

實時操作系統

  • QNX
  • VxWorks
  • OSEK/VDX
  • AUTOSAR OS

什麼是實時操作系統

實時操作系統和分時操作系統,它們的區別在哪裡?總結如下圖所示:

為何使用實時操作系統

那為何要使用實時操作系統?總結如下:

  • 最大化使用 CPU
  • 提供良好定義的操作系統相關的功能和行為
  • 調度行為與時間相關,與應用功能分離
  • 硬件與軟件的實現對應用開發者不可見
  • 簡化軟件系統設計
  • 操作系統成為接口(API),而非硬件
  • 支持代碼生成
  • 提供軟件復用、移植的能力

任務調度(周期與搶占式)

接下來分享一下任務調度。

實時操作系統概念模型

首先看一下,如下圖所示:

實時操作系統的定義是:給定輸入下提供相應的響應,並且它必須在指定的期限內執行。如下圖所示為實時操作系統的概念模型,從下圖也可以看出實時操作系統的定義。

上圖中,當一個事件產生時,在一定的 Delay 下,它可以去調用一個 Function,這個 Function 是有一個處理時間。在這個 Function 運行完之後,得到一個回應。並且它可以在一個預期的期限裡面去完成,這就是實時操作系統的一個概念模型。

簡單周期調度

對於這個模型我們會做一些調度。舉個例子說明如下:

我們從最簡單的調度策略來考慮,例如我們有三個功能 ,它要求的運行周期是 5ms、10ms、14ms,評估過它執行時間是 1ms、1.2ms、1.8ms,如下表所示:

一個簡單的調度策略如下圖所示,可以在一個 5ms 的觸發任務中依次調用這三個 Function。

從圖中三個 Function 的執行時間加起來是 4 毫秒,那對於 5ms 調度一次的話,它的 CPU 利用率為 80%。

但實際上,有些任務不需要這麼頻繁調度,假設我們需要將 CPU 利用率控制在 45% 左右。那麼上述簡單的調度明顯不符合我們的性能要求,所以我們需要對其進行優化。

從上圖中可以看出,Func2、Func3 其實不需要 5ms 周期調度,我們可以設置一個單數的 Loop 調度和一個雙數的調度,如下圖所示。

在單數循環下,調度所有的函數,中斷函數由中斷觸發。

在雙數循環下,調度 Func3,滿足 Func3 以 5ms 周期調度的需要。同時調度Func4,由於 Func4 超過時間片 5ms 的調度,所以要將 Func4 拆開成若幹個步驟調用,如下圖所示:

上述調度方式的優勢在於:

1. 原理簡單;2. 可預見行為是怎麼樣的;3. 過載的可能性比較小;

劣勢在於:1. 時間行為設計復雜2. 靈活性差,維護困難。比如說剛才 Func 4 還要自己去拆分,執行的過程就不太靈活。3. 處理器利用率不高效。

基於這種優劣式,我們可以設計一個替代方案:搶占式多任務實時操作系統。該方案的優劣勢如下:

1. 優化 CPU 的利用率;2. 時間行為會變復雜,但是由 RTOS 系統來負責;


未完待續。。。

完整內容觀看方式

1. 掃碼或各大應用商店下載 "搞一下汽車電子"APP2. 圖文板塊直接搜

客服活動

赞(0)