嵌入式作業系統不知說的是Linux這種通用型作業系統還是RTOS這種專用型的,我說說RTOS方面的。
RTOS多多,不說近年來騰訊阿里力推的TencentOS和AliOS,經典的就有freeRTOS、UC/OSⅢ、RT-thread、RTX等等。說到底解決了實時、穩定、可裁剪、易操作等嵌入式應用場景需要面對的問題。
作業系統的多工和便捷的任務通訊API很友好地為開發者提供了靈活的思路。在這樣的作業系統中,任務是起作用關鍵的部分。每個功能可以說有其對應的任務在執行。任務的概念在裸機上就是由使用者操作的從main開始的第一句到while中反覆執行的這部分程式碼。要知道所有的函式切換都是需要消耗CPU相應暫存器和記憶體空間的。在作業系統裡,任務主要有以下特性:
1. 擁有自己獨立的棧空間。
2. 一定有阻塞任務的API出現來釋放CPU給其他任務執行
之所以用作業系統肯定是有多工的,任務要得到CPU執行權依賴於每個任務都只執行一小段時間,之後交給CPU去分配其他時間給其他任務,所以任務中一定有阻塞任務進行下去的API放開CPU的執行權,不然一直由一個任務佔用著其他任務都被餓死。
3. 有自己單獨的一段佔用CPU執行的時間
同上一點講得,有阻塞API的存在就有該任務相對佔用CPU的一段時間。如果是事件觸發任務執行下去需要規定事件要等待多久後返回,等待的時間就是放開CPU執行權的時間;若此任務沒有阻塞則要規定任務能夠切換出去到再回來執行能過多久。這樣一個任務才是完整的。
嵌入式作業系統不知說的是Linux這種通用型作業系統還是RTOS這種專用型的,我說說RTOS方面的。
RTOS多多,不說近年來騰訊阿里力推的TencentOS和AliOS,經典的就有freeRTOS、UC/OSⅢ、RT-thread、RTX等等。說到底解決了實時、穩定、可裁剪、易操作等嵌入式應用場景需要面對的問題。
作業系統的多工和便捷的任務通訊API很友好地為開發者提供了靈活的思路。在這樣的作業系統中,任務是起作用關鍵的部分。每個功能可以說有其對應的任務在執行。任務的概念在裸機上就是由使用者操作的從main開始的第一句到while中反覆執行的這部分程式碼。要知道所有的函式切換都是需要消耗CPU相應暫存器和記憶體空間的。在作業系統裡,任務主要有以下特性:
1. 擁有自己獨立的棧空間。
每個任務在建立時由使用者分配只屬於它的一塊記憶體空間,只得任務之間的資料訪問互不干擾還能互相傳遞。在多工執行時資料得到良好的保護。2. 一定有阻塞任務的API出現來釋放CPU給其他任務執行
之所以用作業系統肯定是有多工的,任務要得到CPU執行權依賴於每個任務都只執行一小段時間,之後交給CPU去分配其他時間給其他任務,所以任務中一定有阻塞任務進行下去的API放開CPU的執行權,不然一直由一個任務佔用著其他任務都被餓死。
3. 有自己單獨的一段佔用CPU執行的時間
同上一點講得,有阻塞API的存在就有該任務相對佔用CPU的一段時間。如果是事件觸發任務執行下去需要規定事件要等待多久後返回,等待的時間就是放開CPU執行權的時間;若此任務沒有阻塞則要規定任務能夠切換出去到再回來執行能過多久。這樣一個任務才是完整的。