什麼時候該用裸機?什麼時候該用RTOS?

2021-10-19 07:27:09 字數 870 閱讀 2997

今天在某qq群裡看到有人討論這個問題,正巧我也仔細想了一下。以下是我對這個問題的看法

1.rtos的rt這詞就是實時的意思,網上很多歸納總結都說rtos要用在實時性很高的專案,怎麼才算是實時性高呢?

假設我們裸機有下面這個段程式

int main()

}

假設每個函式的處理時間,不考慮中斷,執行一輪迴圈的總共時間為92ms,我們知道裸機執行程式永遠都是按順序來的,不可能剛結束遠端資料處理_proc(),就會去執行餵狗_proc();,想要執行到餵狗就必須乖乖地把其它任務按照順序執行完,再去執行餵狗。

我們把上面這段裸機程式移植到rtos中,以freertos為例:

int main()

遠端資料處理_task的優先順序最高,而且是阻塞等待,為什麼要阻塞,如果不阻塞,那麼cpu會一直執行這個高優先順序的任務,其它任務就執行不了。這裡使用佇列阻塞,即佇列沒有資料,該任務就會阻塞。其它任務的優先順序是一樣的,我們把按照裸機出現的問題放在freertos中,程式執行到lcd_task(相同優先順序的任務採用時間片排程,cpu並不一定是連續5ms都在執行它,時間片大小根據configcpu_clock_hz,configtick_rate_hz這兩個值決定,這裡我們假設1ms,即每個相同優先順序的任務,執行1ms就會切換到下乙個優先順序相同的任務),這時候接收中斷觸發,接收到遠端資料,注意,中斷程式會往佇列中傳送資料。這時候,高優先順序任務遠端資料處理_task就從阻塞態變成了就緒態,由於它是高優先順序的,該任務就會馬上執行,不會像裸機一樣等待72ms。

rtos的實時性就是體現在這裡的。

什麼時候該用MVC,什麼時候該用Webform?

看看微軟的解釋 何時建立 mvc 應用程式 您必須仔細考慮是使 用 asp.net mvc 框架還是使用 asp.net web 窗體模型來實現 web 應用程式。mvc 框架未取代 web 窗體模型 您可以 對 web 應用程式使用任一框架。如果您具有現有的基於 web 窗體的應用程式,則這些應用...

什麼時候該用get請求什麼時候該用post請求

引自 get和post兩種方法都是將資料送到伺服器,但你該用哪一種呢?http標準包含這兩種方法是為了達到不同的目的。post用於建立資源,資源的內容會被編入http請示的內容中。例如,處理訂貨表單 在資料庫中加入新資料行等。當請求無 時 如進行搜尋 便可使用get方法 當請求有 時 如新增資料行 ...

和 什麼時候該用

struts2中有值堆疊和堆疊上下文的概念,你用 可以看出.s標籤中用 可以取出堆疊上下文中的存放的物件.用 可以取出存在值堆疊中的action物件,直接呼叫它的方法.例如你的action如果繼承了actionsupport 那麼在頁面標籤中,用 的方式可以拿出國際化資訊.就不太清楚了.肯定也是拿這...