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