1. 程式人生 > >實時作業系統和分時作業系統的區別

實時作業系統和分時作業系統的區別

轉自:http://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的時候經常會遇到應用程式無響應的問題。即硬體資源被其他任務佔用,本任務得不到立即執行。

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