前後臺系統

1.1前後臺程序的概念
前後臺系統,即計算機前後臺系統。在早期的嵌入式系統中沒有操作系統的概念,直接在裸機上寫程序。比如用51單片機基本就沒有操作系統的概念。在這種情況下,通常把嵌入式程序分爲兩部分:前臺程序和後臺程序。
這種系統可稱爲超循環系統(Super-Loops)。應用程序是一個無限的循環,循環中調用相應的函數完成相應的操作,這部分可以看成後臺行爲(background)。中斷服務程序處理異步事件,這部分可以看成前臺行爲(foreground)。後臺也可以叫做任務級。前臺也叫中斷級。時間相關性很強的關鍵操作(Critical operation)一定是靠中斷服務來保證的。因爲中斷服務提供的信息一直要等到後臺程序走到該處理這個信息這一步時才能得到處理,這種系統在處理信息的及時性上,比實際可以做到的要差。這個指標稱作任務級響應時間。最壞情況下的任務級響應時間取決於整個循環的執行時間。因爲循環的執行時間不是常數,程序經過某一特定部分的準確時間也是不能確定的。進而,如果程序修改了,循環的時序也會受到影響。

1.2前後臺程序的優缺點
前後臺系統的優點:一般的單片機系統大多是採用了此種模式編程,優點是簡潔,明瞭,新手的上手速度很快,特別是專注用來做一件事情的時候,一個while循環基本是無敵的。比如實現一個i2c slave ,完全可以用一個while 來模擬實現一個i2c 的slave 控制器。在操作系統上來模擬一個i2c slave 的話,基本不太可能實現,因爲實時系統存在最大關中斷的時間。
前後臺系統的缺點:前後臺系統面臨的一個直接困境是,軟件規模大了,很難管理。處理的模塊一多的話,實時性也根本難以保障。參照下圖舉例:
前後臺系統
假設來了中斷需要處理Task3,如果Task3的處理是最緊迫的,但是當前cpu 只運行到Task1, 這樣的話,必須還要承受Task2的運行時間延遲,才能輪到Task3的處理,當模塊越多的時候很可能情況更糟糕。單個循環要解決此類問題的話,只能在中斷裏面去處理緊急事件,這樣會造成中斷執行太長,造成多層的中斷嵌套,最終可能導致中斷棧空間爆掉。更重要的是:不是所有的中斷都是緊急的重要的,很可能各個要處理的模塊優先級要大於不緊急的中斷處理。這樣造成的後果是不但各個Task間不能相互通訊,而且實時模塊完全得不到處理,在一箇中大型軟件項目中,採用此類方法可以說是一種管理的災難。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章