概述,維護信息,
概述
提供的主要功能有:
(1)基於 256 級的多優先權、可占先式調度;
(2)信號量(semaphores);
(3)互斥鎖(mutexes);
(4)訊息佇列(message queues);
(5)高精度定時器;
(6)存儲管理;
(7)中斷處理;
(8)節省存儲空間。
從性能上講,OS21提供的任務間切換時間小於2.6us,中斷回響時間最小為1.5us,整個代碼小於30KB,數據小於5KB。
2.OS21與 OS20 的異同點
OS21與OS20 提供的系統服務比較相似,調用的 API 函式名稱也很相似,具體來說包含
下列 API:
(1) Kernel API
(2) Memory and partitions
(3) Tasks and scheduler APIs
(4) Semaphore API
(5) Memory API
(6) Time API
但OS20針對 ST20 CPU 進行開發,OS21 則針對ST40 CPU 進行開發,二者在 BSP 部分存
在較大不同。
核心啟動:OS20提供了兩種方式來啟動核心:手動和自動方式(在編譯時通過添加 -runtime os20實現),OS21通常只使用手動方式來啟動核心。儘管
也可實現自動啟動。
int main(void)
{
kernel_initialize(NULL);
kernel_start();
kernel_timeslice(OS21_TRUE);
...
}
OS21 的時間片功能預設為關閉,要使用時需要手動打開。
任務方面:與 OS20相比,當改變任務的優先權時,該任務在佇列中的位置也發生了變
化。
message_init_queue()
message_init_queue_timeout()
partition_init_fixed()
partition_init_heap()
partition_init_simple()
semaphore_init_fifo()
semaphore_init_fifo_timeout()
semaphore_init_priority()
semaphore_init_priority_timeout()
task_init()
中斷和快取:OS20的中斷和快取 API 與ST20 的中斷快取體系結構緊密相關,其目的是為了完全使用上硬體的特性。在快取的設計上,OS21 遵循了與 OS20 一樣的設計思想,即根據具體晶片設計,每款晶片都有不同的 API,當然也不同於 OS20。而 OS21 提供的中斷則具有通用性,可在不同晶片間移植,這一點不同於 OS20。二維塊數據移動:由於二維塊數據移動嚴格與 ST20 晶片結構相關,OS21已去掉了這方面內容。
時間管理:在 OS21中,時鐘由 64 位的整型osclock_t 表示,而在 OS20 中則為32位的整型類型 clock_t。
3.OS21 作業系統——kernel
為了實現多優先權的任務調度,OS21 使用了一個很小的調度核心,確保當前運行的任
務總是處於最高調度優先權。
維護信息
1) 當前正在運行的是哪一個任務;
2) 當前準備運行的一個任務佇列。當需要作出調度決策時,該核心被調用,總的來說有下列四種情形:
1)低優先權的任務被高優先權的任務占先;
2)當一個任務停止調度,例如當該任務等待的訊息佇列為空時,此時核心會檢查任務佇列,選擇優先權最高的任務投入運行;
3)調度器會周期性地分時檢查當前執行的任務,如果有與該任務同等優先權的任務,則會選擇處於前列的任務投入運行,而備份當前任務狀態;
4)當一個中斷結束,此時沒有其他低優先權的任務運行,核心被調用。
4.OS21 作業系統-存儲管理