RTX51 Tiny是基於Timesharing的RTOS,與系統中斷不同,它以非搶佔式的任務切換。所以在一個任務被執行時不能對其進行中斷,除非該任務主動放棄CPU的資源,中斷才可以打斷當前的任務,中斷完成後把CPU的控制權再交還該被中斷的任務。任務切換有兩種情況,一種是當前任務主動讓出CPU資源;另一種情況是在當前任務的時間片已經用完的情況下,進行任務切換。CPU執行時間被分成若干個時間片,RTX51 TINY為每個任務分配一個時間片。時間片是通過對變量INT_CLOCK與TIMESHARING兩個參數的設置來確定的。系統內定INT_CLOCK為10000、TIMESHARING為5,如果晶振頻率為11.059 2 MHz,則最大的時間片為(1/11.0592Mhz)×10000×5=4.52ms。

RTX51 TINY的任務切換共有 TASKSWITCHING 和SWITCHINGNOW兩個入口,前者供定時器Timer0的中斷服務程序,後者供系統函數os_delete和os_wait使用。相應地也有兩個不同的出口,分別是恢復保護現場和清除狀態標誌位。系統首先將當前任務置為「TIMEOUT」狀態,等待下一次時間片循環,然後找到下一個處於「READY」狀態的任務,通過堆棧管理,將自由堆棧空間分配給該任務,使其成為當前任務。清除使該任務進入「READY」或「TIMEOUT」狀態的相關位後,執行該任務。

arrow
arrow
    全站熱搜

    傑克鼠 發表在 痞客邦 留言(1) 人氣()