午夜网站国产欧美_加勒比视频亚洲无码_91亚洲人人在字幕国产_18禁止美女爆乳免费网站_被消防员c哭高h野外糙汉动漫_午夜精品视频在线无码_gogowww人体大胆裸体午液_2021自拍偷区亚洲综合第一页_国产欧美一区二区精品性色超碰_99國產精品無碼

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

嵌入式開發(fā),究竟何時需要用RTOS

發(fā)布時間:2023-12-18 14:36:36

如今,高性能處理器和通用操作系統(tǒng)實時升級的速度,似乎再次引發(fā)了嵌入式系統(tǒng)是否仍需要RTOS的討論。答案沒有改變:在相對低端的處理器上只有真正的RTOS能提供一些保障,也就意味著,這些OS可以留在嵌入式環(huán)境中。

■ 究竟何時需要實時操作系統(tǒng)?

大多數嵌入式項目是否仍需要實時操作系統(tǒng)?考慮到當今高性能處理器的速度以及適用于Linux,Windows和其他通用操作系統(tǒng)(GPOS)的實時補丁的可用性,這是一個很好的問題。

答案在于嵌入式設備的本質。這些設備通常以數千,甚至數百萬桃這種規(guī)模下生產,即使每套硬件成本降低1美元,也能為制造商節(jié)省一筆小財富。換言之,這些設備無法負擔數百萬赫茲處理器的成本(更不用說散熱了)。

例如,在汽車遠程信息處理市場,典型的32位處理器的運行頻率約為600兆赫,遠低于臺式機和服務器中常見的處理器。在這樣的環(huán)境中,設計用于從低端硬件中提取極其快速、可預測的響應時間的實時操作系統(tǒng)有巨大的經濟優(yōu)勢。

除了節(jié)省成本外,實時操作系統(tǒng)提供的服務使許多計算問題更容易解決,特別是當多個活動競爭一個系統(tǒng)的資源時。例如,考慮一個用戶期望(或需要)立即響應輸入的系統(tǒng)。使用實時操作系統(tǒng),開發(fā)人員可以保證由用戶發(fā)起的操作將優(yōu)先于其他系統(tǒng)活動執(zhí)行,除非必須首先執(zhí)行更重要的活動(例如,有助于保護用戶安全的操作)。

還要考慮一個必須滿足服務質量(QoS)要求的系統(tǒng),例如顯示實時視頻的設備。如果設備的內容交付的任何部分都依賴于軟件,那么它會以用戶認為不可接受的速度體驗掉幀,設備是不可靠的。然而,通過實時操作系統(tǒng),開發(fā)人員可以精確地控制軟件進程的執(zhí)行順序,并確保以適當和一致的速率進行回放。

■ 實時操作系統(tǒng)不公平

在嵌入式行業(yè)中,對實時“硬”時間的需求仍然很普遍。問題是:實時操作系統(tǒng)有什么是GPOS沒有的?而且,對于某些GPOS來說,現(xiàn)在的實時擴展有多有用?他們能提供一個合理的實時操作系統(tǒng)性能嗎?

讓我們從任務調度開始。在GPOS中,調度程序通常使用“公平”策略將線程和進程分派到CPU。這樣的策略可以實現(xiàn)桌面和服務器應用程序所需的高整體吞吐量,但不能保證高優(yōu)先級、時間緊迫的線程優(yōu)先于低優(yōu)先級的線程執(zhí)行。

例如,GPOS可能會降低分配給高優(yōu)先級線程的優(yōu)先級,或者為了保證系統(tǒng)中其他線程的公平性而動態(tài)調整線程的優(yōu)先級。因此,高優(yōu)先級線程可能被低優(yōu)先級線程搶占。此外大多數GPOS具有無界的調度延遲:系統(tǒng)中的線程越多,GPOS調度一個執(zhí)行線程所需的時間就越長,這些因素中的任何一個都可能導致高優(yōu)先級線程錯過最后期限,即使是在高速CPU上。

此外,高優(yōu)先級線程可以不間斷地運行,直到它完成它需要做的事情,當然,除非它被一個更高優(yōu)先級的線程搶占。這種方法被稱為基于優(yōu)先級的搶占式調度,允許高優(yōu)先級線程滿足其最后期限,即使許多其他線程正在爭奪CPU時間。

■ 搶占式內核

在大多數GPOS中,os內核是不可搶占的。因此,高優(yōu)先級用戶線程永遠不能搶占內核調用,而是必須等待整個調用完成—即使調用是由系統(tǒng)中優(yōu)先級最低的進程調用的。此外,當驅動程序或其他系統(tǒng)服務(通常在內核調用中執(zhí)行)代表客戶端線程執(zhí)行exe剪切時,所有優(yōu)先級信息通常都會丟失。這種行為會導致不可預知的延遲,并阻止關鍵活動按時完成。

另一方面,在實時操作系統(tǒng)中,內核操作是可搶占的。與在GPOS中一樣,在時間窗口中可能不會發(fā)生搶占,在設計良好的實時操作系統(tǒng)中,這些窗口非常短,通常是數百納秒的順序。此外,實時操作系統(tǒng)對搶占延遲和中斷禁用的時間設置了一個上限;這個上限允許開發(fā)人員確定最壞情況下的延遲。

為了實現(xiàn)一致的可預測性和關鍵活動的及時完成這一目標,實時操作系統(tǒng)內核必須盡可能簡單優(yōu)雅。實現(xiàn)這種簡單性的最佳方法是設計一個內核,該內核只包含具有短執(zhí)行路徑的服務。通過從內核中排除工作密集型操作(例如進程加載)并將其分配給外部進程或線程,實時操作系統(tǒng)設計器可以幫助確保通過內核的最長不可搶占代碼路徑上存在上限。

在一些GPOS中,內核增加了一定程度的搶占性。然而,不可能發(fā)生搶占的時間間隔仍然比典型實時操作系統(tǒng)中的時間間隔長得多;任何此類搶占時間間隔的長度將取決于GPOS內核中任何模塊(例如,網絡)的最長關鍵部分。此外,一個可搶占的GPOS內核不會處理其他可能造成無限延遲的條件,例如,當客戶端調用驅動程序或其他系統(tǒng)服務時發(fā)生的優(yōu)先級信息丟失。

■ 避免優(yōu)先級反轉

在GPOS中,甚至在實時操作系統(tǒng)中,低優(yōu)先級線程可能無意中阻止高優(yōu)先級線程訪問cpu,這種情況稱為優(yōu)先級反轉。當發(fā)生無限優(yōu)先級反轉時,可能會錯過關鍵的最后期限,從而導致從異常系統(tǒng)行為到徹底失敗的結果。不幸的是,在系統(tǒng)設計過程中,優(yōu)先級反轉常常被忽略。優(yōu)先級反轉的例子很多,其中包括1997年7月火星探險者項目。

一般來說,當兩個不同優(yōu)先級的任務共享一個資源,而高優(yōu)先級的任務無法從低優(yōu)先級的任務獲得資源時,就會發(fā)生優(yōu)先級反轉。為了防止這種情況超過有限的時間間隔,實時操作系統(tǒng)可以提供GPOS中不可用的機制選擇,包括優(yōu)先級繼承和優(yōu)先級上限模擬。我們不可能公正地對待這兩種機制,所以讓我們關注一個優(yōu)先級繼承的例子。.

首先,我們必須考慮任務同步如何導致阻塞,以及阻塞如何反過來導致優(yōu)先級反轉。假設兩個任務正在運行,任務1和任務2,并且任務1具有更高的優(yōu)先級。如果任務1已準備好執(zhí)行,但必須等待任務2完成活動,則會阻塞。此阻塞可能是由于同步造成的;例如,任務1和任務2共享由鎖或信號量控制的資源,而任務1正在等待任務2解鎖該資源。或者,可能是因為任務1正在請求任務2當前使用的服務。

阻塞允許任務2運行,直到發(fā)生任務1正在等待的條件(例如,任務2解鎖兩個任務共享的資源)。此時,任務1開始執(zhí)行。任務1必須等待的總時間稱為阻塞因子。如果任務1要滿足其任何時間限制,則此阻塞因子不能隨任何參數(例如線程數或系統(tǒng)輸入)而變化。換句話說,阻塞因子必須是有界的。

現(xiàn)在讓我們介紹第三個任務,任務 3,它的優(yōu)先級高于任務 2,但低于任務 1(參見圖1)。如果任務3在任務2執(zhí)行時準備好運行,則它將搶占任務2,并且任務2將無法再次運行,直到任務3阻塞或完成。當然,這個新任務會增加任務1的阻塞因子;也就是說,它會進一步延遲任務1的執(zhí)行。搶占引入的總延遲是一個優(yōu)先級反轉。


圖1  任務1正在等待任務2完成一個活動,這時任務3搶占了任務2。此新任務進一步延遲任務1的執(zhí)行
實際上,多個任務可以通過這種方式搶占任務2,從而產生一種稱為鏈阻塞的效果在這種情況下,任務2可能會被無限期搶占,從而產生無限的優(yōu)先級反轉,并導致任務1無法滿足其任何最后期限。
這就是優(yōu)先級繼承的來源。如果我們返回到我們的場景,并使任務2在同步期間以任務1的優(yōu)先級運行,那么任務3將無法搶占任務2,從而避免產生優(yōu)先級反轉(參見圖2)。

圖2 任務2繼承任務1的較高優(yōu)先級,從而防止任務3搶占任務2。任務3不再延遲任務1的執(zhí)行。


■ 分區(qū)調度器

對于許多系統(tǒng),保證資源可用性是至關重要的。如果一個關鍵的子系統(tǒng)被剝奪了,比如說,CPU周期,那么這個子系統(tǒng)提供的服務對于用戶來說就變得不可用了。例如,在拒絕服務(DoS)攻擊中,惡意用戶可以用需要高優(yōu)先級進程處理的請求轟炸系統(tǒng)。這個進程可能會使CPU超載,使其他進程的CPU周期中斷,從而使系統(tǒng)對用戶不可用。

安全漏洞并不是進程饑餓的唯一原因。在許多情況下,向系統(tǒng)添加軟件功能會將系統(tǒng)推向“崩潰的邊緣”,并使現(xiàn)有的應用程序占用大量CPU時間。及時運行的應用程序或服務不再按預期或要求作出響應。從歷史上看,解決這個問題的唯一辦法要么是改造硬件,要么是重新編碼(或重新設計)軟件——兩者都是不受歡迎的選擇。為了解決這些問題,系統(tǒng)設計人員需要一個分區(qū)方案,通過硬件或軟件強制執(zhí)行CPU運算,以防止進程或線程獨占其他進程或線程所需的CPU周期。由于實時操作系統(tǒng)已經提供了對CPU、內存和其他計算資源的集中訪問,所以實時操作系統(tǒng)是執(zhí)行CPU分區(qū)運算的最佳選擇。

有些實時操作系統(tǒng)提供一個固定的分區(qū)調度器。使用此調度器,系統(tǒng)設計人員可以將任務劃分為組或分區(qū),并為每個分區(qū)分配一定百分比的CPU時間。使用這種方法,任何給定分區(qū)中的任務消耗的CPU時間都不會超過分區(qū)靜態(tài)定義的百分比。例如,假設一個分區(qū)分配了30%的CPU。如果該分區(qū)中的進程隨后成為拒絕服務攻擊的目標,那么它消耗的CPU時間將不超過30%。這個分配的限制允許其他分區(qū)保持其可用性;例如,它可以確保用戶界面(例如遠程終端)保持可訪問性。因此,操作員可以訪問系統(tǒng)并解決問題,而不必按下復位開關。 

然而,這種方法有一個問題。因為調度算法是固定的,所以一個分區(qū)永遠不能使用分配給其他分區(qū)的CPU周期,即使這些分區(qū)沒有使用它們分配的周期。這種方法會浪費CPU周期,并阻止系統(tǒng)處理峰值需求。因此,系統(tǒng)設計者必須使用更昂貴的處理器,容忍更慢的系統(tǒng),或者限制系統(tǒng)能夠支持的功能數量。


■ 自適應分區(qū)

另一種分區(qū)方案稱為自適應分區(qū),它通過提供更動態(tài)的調度算法來解決靜態(tài)分區(qū)的缺點。與靜態(tài)分區(qū)一樣,自適應分區(qū)允許系統(tǒng)設計人員為一個進程或一組進程保留CPU周期。因此,設計人員可以保證一個子系統(tǒng)或分區(qū)上的負載不會影響其他子系統(tǒng)的可用性。但是,與靜態(tài)方法不同,自適應分區(qū)可以動態(tài)地將CPU周期從不繁忙的分區(qū)重新分配給可以從額外處理時間分區(qū)預算中受益的分區(qū),只有在CPU完全加載時才強制執(zhí)行。因此,系統(tǒng)可以處理峰值調度應用程序不需要改變它們的調度行為。此外,設計人員可以動態(tài)地重新配置分區(qū),以優(yōu)化系統(tǒng)的性能。參加牛喀學城汽車操作系統(tǒng)技術培訓,學習更多實用技術。掃描文末二維碼報名。

■ “雙重”內核
包括Linux、Windows和各種風格的unix在內的GPOS通常缺乏迄今為止討論的實時機制。為了填補這個空白,GPOS供應商開發(fā)了大量的實時擴展和補丁。例如,有一種雙內核方法,在這種方法中,GPOS作為一個任務運行在一個專用的實時內核之上(參見圖4)。因此,這些任務可以在GPOS需要執(zhí)行時搶占它們,并且僅在GPOS完成工作時才將CPU交給它們。
上一篇:一款提高嵌入式代碼質量的工具
下一篇: 嵌入式系統(tǒng)行業(yè)發(fā)展現(xiàn)狀及前景分析2023

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄