裸機系統
裸機系統通常分爲輪詢系統和前後臺系統。
輪詢系統
輪詢系統即在裸機編程時,先初始化相關硬件,然後讓主程序在一個死循環裏面不斷循環,順序地處理各事件。
輪詢系統是一種非常簡單的軟件結構,通常只適用於僅需要順序執行代碼且不需要外部事件來驅動就能完成的事件。
前後臺系統
相比輪詢系統,前後臺系統是在輪詢系統的基礎上加入了中斷系統,外部事件的響應在中斷裏面完成,事件的處理還是回到輪詢系統值完成。
中斷在這裏稱爲前臺,main()函數中的無限循環稱爲後臺。
在順序執行後臺程序時,如果有中斷,那麼中斷會打斷後臺程序的正常執行,轉而執行中斷服務程序,在中斷服務程序中標記事件。雖然事件的響應的處理分開了,但是事件的處理環視在後臺順序執行,但相比輪詢系統,前後臺系統確保了事件不會丟失,再加上中斷具有可嵌套的功能,這樣可以大大提高程序的實時響應能力。
多任務系統
相比前後臺系統,多任務系統的事件響應也是在中斷中完成的,但是事件的處理是在任務中完成的。
相比前後臺系統中後臺順序執行的程序主體,在多任務系統中,這個程序主體分割成一個個獨立的****、無限循環且不能返回的小程序,這個小程序我們稱爲任務。每個任務都是獨立的、互不干擾的,且具備各自的優先級。
區別
模型 | 事件響應 | 事件處理 | 特點 |
---|---|---|---|
輪詢系統 | 主程序 | 主程序 | 輪詢響應事件,輪詢處理事件 |
前後臺系統 | 中斷 | 主程序 | 實時響應事件,輪詢處理事件 |
多任務系統 | 中斷 | 任務 | 實時響應事件,實時處理事件 |