實時操作系統和非實時操作系統的區別

轉:https://blog.csdn.net/u013752202/article/details/53649047

對於實時操作系統(RTOS)和非實時操作系統,你能分別列舉出來多少?

實時操作系統:uCOS/VxWorks/RTLinux

非實時操作系統:Linux/Windows/OSX

我也只能列舉出來這麼多了。

重點不在這裏,重點在於他們之間的區別,詳見下圖:

 

 

在上面的圖中右邊的任務優先級高於左邊的任務,先看實時操作系統的,當優先級更高的任務2就緒的時候,即便任務1正在運行中,也必須立刻交出CPU的使用權,就跟中斷一樣,先執行任務2,等任務2執行完或者主動掛起(sleep)讓出CPU的時候,任務1才能接着運行。

uCOS就是這樣的實時操作系統,它是可搶佔性的內核。我曾跟很多同事爭辯過uCOS高優先級任務就緒而低優先級任務正在執行沒有sleep的時候,高優先級任務能否打斷低優先級任務而立即得到執行,遺憾的是很多人仍然堅持必須要sleep才能切換任務,每次我都只能無奈的用實驗來證明這個本來不應該爭辯的東西。

再看看我們的Linux/Windows/OSX這些基於時間片輪轉的操作系統遇到這種問題的時候會怎麼樣呢,毫無疑問它們都是非實時的操作系統,CPU是不可搶佔的,從上圖可以看到,即便高優先級的任務就緒了,也不能馬上中斷低優先級任務而得到執行,必須要等到低優先級任務主動掛起(sleep)或者時間片結束才能得到執行。所以我們在使用PC的時候經常會遇到應用程序無響應的問題。即硬件資源被其他任務佔用,本任務得不到立即執行。

我們平常娛樂辦公用的都是非實時的操作系統,那麼什麼時候該使用實時操作系統呢?試想一下,一個射出的導彈如果要執行一個調整姿態的任務,這個時候剛好有其他無關緊要的任務在執行,如果是非實時操作系統,那麼可能會等一會兒然後彈個窗告訴你應用程序無響應(如果它有窗可彈的話),那完了等彈窗出來導彈都射到外太空去了!毫無疑問這種高優先級任務片刻都不能等的設備就必須上實時操作系統,如果你不想你的導彈射到外太空去的話。
 

 

 

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