非實時操作系統:Linux/Windows/OSX
1 實時操作系統
實時操作系統,當外界事件和數據產生時,系統能以足夠快的速度予以處理,其處理結果能在規定的時間內控制生產結果或對系統做出響應,并控制所有實時任務協調一致運行的操作系統。
在下圖中右邊的任務優先級("優先級")高于左邊的任務,先看實時操作系統的,當優先級更高的任務2就緒的時候,即便任務1正在運行中,也必須立刻交出CPU的使用權,就跟中斷一樣,先執行任務2,等任務2執行完或者主動掛起(sleep)讓出CPU的時候,任務1才能接著運行。
實時操作系統,一般分為硬實時和軟實時,硬實時指的是在規定的時間內必須完成任務操作,在操作系統設計時保證;
軟實時只要按照任務的優先級,盡可能地完成任務操作即可。
硬實時操作系統
完全滿足在指定時間內完成關鍵行為
硬實時操作系統嚴格規定了限定時間內必須完成任務,否則會導致嚴重后果發生。如在自動駕駛場景下,車輛前置攝像頭模塊,短距長距雷達及助力轉向等模塊需要連續采集處理數據,并通過算法輸出決策行為。其中,系統必須在指定時間內完成對輸入的采集數據完成運算及處理,并完成輸出。
假設方向盤轉角,節氣門等駕駛相關控制信號若無法確保實時性,自動駕駛系統的安全性將無法保證。
常見的硬實時操作系統有VxWorks,ThreadX、FreeRTOS、ucOS。
值得提一句的是,VxWorks是世界范圍內現役航天,航海,飛機,坦克自動化控制部分使用范圍最廣的實時操作系統,包括國內網上熱度最高的幾種軍事設備也同使用了此系統。
軟實時操作系統
大多數情況下在指定時間內完成關鍵行為
軟實時系統對處理事件的時間要求是統計學預期,即使在處理過程中偶發出現了時間偏差,也不會對系統造成致命后果。
如IP電視解碼視頻流數據時,可能會出現數據幀的丟失,但即使了,僅是用戶視覺上的體驗影響,或通過抖動處理,就可以解決圖像上的視覺感知問題。
多任務
系統提供了多任務運行機制,系統內核通過調度讓CPU運行許多外部事件線程,實現任務的并發性。
搶占調度
系統具有繼承的優先級和搶占式內核屬性,在執行某一項任務的時候,若有更高優先級的任務進入可執行態,系統將會立即搶占當前CPU資源,退出低優先級任務,運行高優先級任務。
任務間的通訊和同步
實時系統中,可能存在許多任務作為一個應用的部分執行,系統必須提供這些任務間的通訊機制,有效地共享不可搶占的資源或者臨界區所需要的同步機制。
任務與中斷之間的通信
在真實應用場景中,事件通常作為中斷的方式到來,為了系統調度的穩定、提供有效的排隊和減小中斷服務程序的開銷,通常希望在任務級線程處理相應工作,所以需要任務與中斷之間的通信。
2 非實時操作系統(分時操作系統)
再看看我們的Linux/Windows/OSX這些基于時間片輪轉的操作系統遇到這種問題的時候會怎么樣呢,毫無疑問它們都是非實時的操作系統,CPU是不可搶占的,從上圖可以看到,即便高優先級的任務就緒了,也不能馬上中斷低優先級任務而得到執行,必須要等到低優先級任務主動掛起(sleep)或者時間片結束才能得到執行。
所以我們在使用PC的時候經常會遇到應用程序無響應的問題。即硬件資源被其他任務占用,本任務得不到立即執行。
學習過程中最常見的操作系統是通用操作系統,即Windows、Unix、Linux等,此類系統由分時操作系統發展而來。
分時操作系統的基本設計原則是:盡量縮短系統的平均響應時間并提高系統的吞吐率,在單位時間內為盡可能多的用戶請求提供服務。
因而相比實時操作系統,非實時操作系統更關注系統平均性能,在響應時間上,非實時操作系統注重所有任務的平均響應時間,也就是說,它注重所有任務的平均響應時間而不關心單個任務的響應時間,針對某單個任務,也是注重每次執行的平均響應時間而不關心某次特定執行的響應時間。
Windows作為最常使用的通用操作系統,支持系統管理多用戶多進程的系統資源。
與實時操作系統的內核搶占機制不同的是,分時操作系統內核不可搶占,無論優先級多高的任務,都必須等當前CPU任務完成或當前任務主動退出后才可以執行。
想必都有體會的是,當CPU空閑時,電腦系統運行流暢,但當后臺執行補丁下載或殺毒時,一旦CPU進入高負荷狀態,操作系統就會出現運行卡頓甚至死機的問題。
計算機同時為多個用戶任務服務的操作系統,操作系統以時間片輪詢的機制,將系統處理時間與內存按照一定是時間間隔,輪流執行任務,實現任務的調度和執行。
由于間隔時間很短,每個用戶的任務感覺獨占計算機一樣,保證用戶任務的響應和執行。
交互性
用戶和系統進行人機對話。
多路性
多用戶在各自終端上使用同一個CPU。
獨立性
用戶可以獨立操作,互不干擾,互不混淆。
及時性
用戶在短時間內可以得到系統的及時應答。
兩類操作系統的主要區別在于任務調度處理方式不同,常用的任務調度方式有兩種:基于任務優先級的任務調度方式和基于時間片的任務調度方式:
基于任務優先級的調度方式:一旦內核把資源分配給某進程后,便讓該進程一直執行,直到該進程完成或發生某事件而被阻塞(常見的方式主動調用delay),才再把處理機分配給其他進程,否則高優先級的任務會一直運行。所以這種情況下,如果某個高優先級的任務運行時間過長最好有阻塞機制,來讓出CPU使其他低優先級的任務也有機會運行。
基于時間片的調度方式:這種方式下,所有任務的優先級相同,當內核給該進程分配的時間片結束后,內核會停止正在執行的這個進程,下一個時間片分配給其他進程執行,即便這個任務沒有執行完也沒有主動delay自己。
因此非實時操作系統與實時操作系統相比,最直接的差別:
當內核處于相對消耗狀態時,非實時操作系統處理延時會增加,甚至無法保證最高優先級任務執行的最后時限。
為滿足實時性與可靠性,車輛ECU目前絕大多數模塊都為實時操作系統,近年來Infotainment,Tbox,ADAS部分處理模塊,中央網關及所謂的域控制器也逐步使用了Linux等分時系統來拓展部分功能,并配合相關實時操作系統來組合實現某些車載功能,使得車輛因引入了大數據分析,安全滲透分析等能力后實現了更深程度的智能化。
文章來源:小麥大叔
-
cpu
+關注
關注
68文章
10889瀏覽量
212377 -
Linux
+關注
關注
87文章
11326瀏覽量
209961 -
WINDOWS
+關注
關注
4文章
3553瀏覽量
88985 -
操作系統
+關注
關注
37文章
6859瀏覽量
123499 -
實時操作系統
+關注
關注
1文章
199瀏覽量
30787
原文標題:實時和非實時操作系統有什么區別?
文章出處:【微信號:玩轉嵌入式,微信公眾號:玩轉嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論