對於實時作業系統(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的時候經常會遇到應用程式無響應的問題。即硬體資源被其他任務占用,本任務得不到立即執行。
我們平常娛樂辦公用的都是非實時的作業系統,那麼什麼時候該使用實時作業系統呢?試想一下,乙個射出的飛彈如果要執行乙個調整姿態的任務,這個時候剛好有其他無關緊要的任務在執行,如果是非實時作業系統,那麼可能會等一會兒然後彈個窗告訴你應用程式無響應(如果它有窗可彈的話),那完了等彈窗出來飛彈都射到外太空去了!毫無疑問這種高優先順序任務片刻都不能等的裝置就必須上實時作業系統,如果你不想你的飛彈射到外太空去的話。
————————————————
淺顯易懂的淺拷貝和深拷貝
打卡 堅持 今日語錄 活得不冷感,一切都悅納 根據對物件屬性的拷貝程度 基本資料類和引用資料類 分為兩種 淺拷貝 1 對於基本資料類 因為基礎資料型別是值傳遞的,所以直接將屬性值賦值給新的物件。基礎物件型別的拷貝,其中乙個物件的值修改,不會影響另外乙個值。棧記憶體 name vala 1當b a複製...
分時作業系統和實時作業系統
1.linux分時作業系統和rtos 實時作業系統 我們知道,相對比vxworks,linux核心屬於非實時作業系統,原因主要是 1 實時任務搶占時間是不可預期的。2 為什麼搶占是不可預期的呢?這涉及到核心中的搶占點知識,其中spin lock鎖,在unlock時是乙個搶占點,但是spinlock本...
分時作業系統和實時作業系統
分時作業系統將系統處理機時間與記憶體空間按一定的時間間隔 劃分時間片 採用輪轉執行方式輪流地切換給各終端使用者的程式使用 例如規定每個作業每次只能執行乙個時間片 由於時間間隔很短,每個使用者就感覺像獨佔全機一樣,這樣就解決了主機共享問題。而對於人機互動,為實現使用者鍵入命令後能對自己的作業及其執行及...