1. 程式人生 > >實時作業系統與通用作業系統的比較

實時作業系統與通用作業系統的比較

嵌入式實時系統中採用的作業系統我們稱為嵌入式實時作業系統,它既是嵌入式作業系統,又是實時作業系統。作為一種嵌入式作業系統,它具有嵌入式軟體共有的可裁剪、低資源佔用、低功耗等特點;而作為一種實時作業系統(本文對實時作業系統特性的討論僅限於強實時作業系統,下面提到的實時作業系統也均指強實時作業系統),它與通用作業系統(如Windows、Unix、Linux等)相比有很大的差別,下面我們將通過比較這兩種作業系統之間的差別來逐步描述實時作業系統的主要特點。     
    
我們在日常工作學習環境中接觸最多的是通用作業系統,通用作業系統是由分時作業系統發展而來,大部分都支援多使用者和多程序,負責管理眾多的程序併為它們分配系統資源。分時作業系統的基本設計原則是:儘量縮短系統的平均響應時間並提高系統的吞吐率,在單位時間內為儘可能多的使用者請求提供服務。由此可以看出,分時作業系統注重平均表現效能,不注重個體表現效能。如對於整個系統來說,注重所有任務的平均響應時間而不關心單個任務的響應時間,對於某個單個任務來說,注重每次執行的平均響應時間而不關心某次特定執行的響應時間。通用作業系統中採用的很多策略和技巧都體現出了這種設計原則,如虛存管理機制中由於採用了LRU等頁替換演算法,使得大部分的訪存需求能夠快速地通過實體記憶體完成,只有很小一部分的訪存需求需要通過調頁完成,但從總體上來看,平均訪存時間與不採用虛存技術相比沒有很大的提高,同時又獲得了虛空間可以遠大於實體記憶體容量等好處,因此虛存技術在通用作業系統中得到了十分廣泛的應用。類似的例子還有很多,如Unix檔案系統中檔案存放位置的間接索引查詢機制等,甚至硬體設計中的Cache技術以及CPU的動態分支預測技術等也都體現出了這種設計原則。由此可見,這種注重平均表現,即統計型表現特性的設計原則的影響是十分深遠的。     
    
實時作業系統,即RTOS(Real-TIme operating system),是指當外界事件或資料產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致執行的作業系統。對於實時作業系統,前面我們已經提到,它除了要滿足應用的功能需求以外,更重要的是還要滿足應用提出的實時性要求,而組成一個應用的眾多實時任務對於實時性的要求是各不相同的,此外實時任務之間可能還會有一些複雜的關聯和同步關係,如執行順序限制、共享資源的互斥訪問要求等,這就為系統實時性的保證帶來了很大的困難。因此,實時作業系統所遵循的最重要的設計原則是:採用各種演算法和策略,始終保證系統行為的可預測性(predictability)。可預測性是指在系統執行的任何時刻,在任何情況下,實時作業系統的資源調配策略都能為爭奪資源(包括CPU、記憶體、網路頻寬等)的多個實時任務合理地分配資源,使每個實時任務的實時性要求都能得到滿足。與通用作業系統不同,實時作業系統注重的不是系統的平均表現,而是要求每個實時任務在最壞情況下都要滿足其實時性要求,也就是說,實時作業系統注重的是個體表現,更準確地講是個體最壞情況表現。舉例來說,如果實時作業系統採用標準的虛存技術,則一個實時任務執行的最壞情況是每次訪存都需要調頁,如此累計起來的該任務在最壞情況下的執行時間是不可預測的,因此該任務的實時性無法得到保證。從而可以看出在通用作業系統中廣泛採用的虛存技術在實時作業系統中不宜直接採用。     
    
由於實時作業系統與通用作業系統的基本設計原則差別很大,因此在很多資源排程策略的選擇上以及作業系統實現的方法上兩者都具有較大的差異,這些差異主要體現在以下幾點:     
    
(1)任務排程策略:
    
    
通用作業系統中的任務排程策略一般採用基於優先順序的搶先式排程策略,對於優先順序相同的程序則採用時間片輪轉排程方式,使用者程序可以通過系統呼叫動態地調整自己的優先順序,作業系統也可根據情況調整某些程序的優先順序。     
    
實時作業系統中的任務排程策略目前使用最廣泛的主要可分為兩種,一種是靜態表驅動方式,另一種是固定優先順序搶先式排程方式。     
    
靜態表驅動方式是指在系統執行前工程師根據各任務的實時要求用手工的方式或在輔助工具的幫助下生成一張任務的執行時間表,這張時間表與列車的執行時刻表類似,指明瞭各任務的起始執行時間以及執行長度,執行時間表一旦生成就不再變化了,在執行時排程器只需根據這張表在指定的時刻啟動相應的任務即可。靜態表驅動方式的主要優點是:     
    
一、執行時間表是在系統執行前生成的,因此可以採用較複雜的搜尋演算法找到較優的排程方案;  
二、執行時排程器開銷較小;     
三、系統具有非常好的可預測性,實時性驗證也比較方便;     
    
這種方式主要缺點是不靈活,需求一旦發生變化,就要重新生成整個執行時間表。     
由於具有非常好的可預測性,這種方式主要用於航空航天、軍事等對系統的實時性要求十分嚴格的領域。     
    
固定優先順序搶先式排程方式則與通用作業系統中採用的基於優先順序的排程方式基本類似,但在固定優先順序搶先式排程方式中,程序的優先順序是固定不變的,並且該優先順序是在執行前通過某種優先順序分配策略(如Rate-Monotonic、Deadline-Monotonic等)來指定的。這種方式的優缺點與靜態表驅動方式的優缺點正好完全相反,它主要應用於一些較簡單、較獨立的嵌入式系統,但隨著排程理論的不斷成熟和完善,這種方式也會逐漸在一些對實時性要求十分嚴格的領域中得到應用。目前市場上大部分的實時作業系統採用的都是這種排程方式。     
    
(2)記憶體管理:
    
    
關於虛存管理機制我們在上面已經進行了一些討論。為解決虛存給系統帶來的不可預測性,實時作業系統一般採用如下兩種方式:       
    
一、在原有虛存管理機制的基礎上增加頁面鎖功能,使用者可將關鍵頁面鎖定在記憶體中,從而不會被swap程式將該頁面交換出記憶體。這種方式的優點是既得到了虛存管理機制為軟體開發帶來的好處,又提高了系統的可預測性。缺點是由於TLB等機制的設計也是按照注重平均表現的原則進行的,因此係統的可預測性並不能完全得到保障;     
    
二、採用靜態記憶體劃分的方式,為每個實時任務劃分固定的記憶體區域。這種方式的優點是系統具有較好的可預測性,缺點是靈活性不夠好,任務對儲存器的需求一旦有變化就需要重新對記憶體進行劃分,此外虛存管理機制所帶來的好處也喪失了。     
    
目前市場上的實時作業系統一般都採用第一種管理方式。     
    
(3) 中斷處理:     

    
在通用作業系統中,大部分外部中斷都是開啟的,中斷處理一般由裝置驅動程式來完成。由於通用作業系統中的使用者程序一般都沒有實時性要求,而中斷處理程式直接跟硬體裝置互動,可能有實時性要求,因此中斷處理程式的優先順序被設定為高於任何使用者程序。     
    
但對於實時作業系統採用上述的中斷處理機制是不合適的。首先,外部中斷是環境向實時作業系統進行的輸入,它的頻度是與環境變化的速率相關的,而與實時作業系統無關。如果外部中斷產生的頻度不可預測,則一個實時任務在執行時被中斷處理程式阻塞的時間開銷也是不可預測的,從而使任務的實時性得不到保證;如果外部中斷產生的頻度是可預測的,一旦某外部中斷產生的頻度超出其預測值(如硬體故障產生的虛假中斷訊號或預測值本身有誤)就可能會破壞整個系統的可預測性。其次,實時作業系統中的各使用者程序一般都有實時性要求,因此中斷處理程式優先順序高於所有使用者程序的優先順序分配方式是不合適的。     
    
一種較適合實時作業系統的中斷處理方式為:除時鐘中斷外,遮蔽所有其它中斷,中斷處理程式變為週期性的輪詢操作,這些操作由核心態的裝置驅動程式或由使用者態的裝置支援庫來完成。採用這種方式的主要好處是充分保證了系統的可預測性,主要缺點是對環境變化的響應可能不如上述中斷處理方式快,另外輪詢操作在一定程度上降低了CPU的有效利用率。另一種可行的方式是:對於採用輪詢方式無法滿足需求的外部事件,採用中斷方式,其它時間仍然採用輪詢方式。但此時中斷處理程式與所以其它任務一樣擁有優先順序,排程器根據優先順序對處於就緒態的任務和中斷處理程式統一進行處理器排程。這種方式使外部事件的響應速度加快,並避免了上述中斷方式帶來第二個問題,但第一個問題仍然存在。     
    
此外為提高時鐘中斷響應時間的可預測性,實時作業系統應儘可能少地遮蔽中斷。     
    
(4)共享資源的互斥訪問:   
    
通用作業系統一般採用訊號量機制來解決共享資源的互斥訪問問題。      
對於實時作業系統,如果任務排程採用靜態表驅動方式,共享資源的互斥訪問問題在生成執行時間表時已經考慮到了,在執行時無需再考慮。如果任務排程採用基於優先順序的方式,則傳統的訊號量機制在系統執行時很容易造成優先順序倒置問題(Priority   Inversion),即當一個高優先順序任務通過訊號量機制訪問共享資源時,該訊號量已被一低優先順序任務佔有,而這個低優先順序任務在訪問共享資源時可能又被其它一些中等優先順序的任務搶先,因此造成高優先順序任務被許多具有較低優先順序的任務阻塞,實時性難以得到保證。因此在實時作業系統中,往往對傳統的訊號量機制進行了一些擴充套件,引入瞭如優先順序繼承協議(Priority   Inheritance   Protocol)、優先順序頂置協議(Priority   Ceiling   Protocol)以及Stack   Resource   Policy等機制,較好地解決了優先順序倒置的問題。     
    
(5)系統呼叫以及系統內部操作的時間開銷:     
    
程序通過系統呼叫得到作業系統提供的服務,作業系統通過內部操作(如上下文切換等)來完成一些內部管理工作。為保證系統的可預測性,實時作業系統中的所有系統呼叫以及系統內部操作的時間開銷都應是有界的,並且該界限是一個具體的量化數值。而在通用作業系統中對這些時間開銷則未做如此限制。     
    
(6)系統的可重入性:     
    
在通用作業系統中,核心態系統呼叫往往是不可重入的,當一低優先順序任務呼叫核心態系統呼叫時,在該時間段內到達的高優先順序任務必須等到低優先順序的系統呼叫完成才能獲得CPU,這就降低了系統的可預測性。因此,實時作業系統中的核心態系統呼叫往往設計為可重入的。     
    
(7)輔助工具:

實時作業系統額外提供了一些輔助工具,如實時任務在最壞情況下的執行時間估算工具、系統的實時性驗證工具等,可幫助工程師進行系統的實時性驗證工作。

相關推薦

實時作業系統通用作業系統比較

嵌入式實時系統中採用的作業系統我們稱為嵌入式實時作業系統,它既是嵌入式作業系統,又是實時作業系統。作為一種嵌入式作業系統,它具有嵌入式軟體共有的可裁剪、低資源佔用、低功耗等特點;而作為一種實時作業系統(本文對實時作業系統特性的討論僅限於強實時作業系統,下面提到的實時作業系統也均指強實時作業系統),它與通用作業

實時作業系統通用作業系統的一些比較

我們在日常工作學習環境中接觸最多的是通用作業系統,通用作業系統是由分時作業系統發展而來,大部分都支援多使用者和多程序,負責管理眾多的程序併為它們分配系統資源。分時作業系統的基本設計原則是:儘量縮短系統的平均響應時間並提高系統的吞吐率,在單位時間內為儘可能多的使用者請求提供服務。由此可以看出,分時作業系統注重平

理解實時作業系統裸機的區別-----Free RTOS 簡介

前面一篇文章介紹了一些命名規範之類的基礎知識,但是我覺得還缺少一定前言知識,就是裸機和作業系統有什麼區別,為什麼我們需要學freertos,因為招聘要求?那麼為什麼招聘網又會有這個要求呢?所以我們為什麼要去學習這個實時作業系統呢? 早期嵌入式開發沒有嵌入式作業系統的概念 ,直接操作裸機,在裸機上寫

【轉載】linux作業系統應用程式的main函式

來源:https://blog.csdn.net/h542723151/article/details/52154871   這幾天一直在糾結: main函式是程式的入口,一個程式啟動後,經過bootloader的初始化就該經main函式進入C語言的世界,但是linux中每個應用程式的開始都是

pythonlinux作業系統之間的聯絡

利用python操縱linux import os #返回作業系統型別,值為posix,是linux作業系統,值為nt,是window作業系統 print os.name #返回作業系統的詳細資訊 print os.uname() #系統的環境變數 print os.envi

在虛擬機器上安裝linux時客戶機作業系統安裝的映象

自己使用的真實電腦(系統)就是主機,你新建一臺新的虛擬機器就被成為一個客戶機(你再新建另一個虛擬機器,它也是客戶機),即主系統與子系統的關係。   通過虛擬機器軟體,你可以在一臺物理計算機上模擬出二臺或多臺虛擬的計算機,這些虛擬機器完全就像真正的計算機那樣進行工

中興新支點電信級伺服器作業系統騰訊雲相容性認證

近日,廣東中興新支點技術有限公司與騰訊雲端計算(北京)有限責任公司對中興新支點電信級伺服器作業系統[NewStart CGSL]V4和騰訊雲平臺TStack5.10適配性進行嚴格的聯合測試驗證,得出以下結論:中興新支點電信級伺服器作業系統[NewStart CGSL]V4和騰

作業系統c語言

以下是根據看書後的理解做的總結: 最早,unix是使用匯編編寫,但是非常簡單。後來覺得彙編,換種機器又得重新用另外一種機器彙編重寫,太麻煩。於是想設計一種通用的語言,到各種機器上都能執行 當時發明了b語言,但是b語言並不成功(據說是很多缺陷,缺乏資料結構),後來者在此基礎上改進,發明了c語言。使用c

32位作業系統64位作業系統的區別

//.......................................................................... 在Win7下:32位系統和64位系統的區別有:

jvm原理、啟動時間、編譯器&作業系統關係

JDK : Java Development ToolKit(Java開發工具包)。JDK是整個JAVA的核心,包括了Java執行環境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基礎的類庫(即Java API 包括rt.jar)。最主流的J

作業系統計算機組織基本知識(一)

    作業系統是作為計算機硬體和計算機使用者之間的中介的程式。作業系統的目的是為使用者提供方便且有效地執行程式的環境。作業系統是管理計算機硬體的軟體,硬體必須提供合適的機制來保證計算機系統的正確性,以及確保系統不受使用者程式干擾正常執行。作業系統龐大而複雜,因此它必須被分塊

淺談32位和64位作業系統記憶體的關係

比如說有這樣一個場景,你在書房裡面看書 你代表–支援32位的CPU和64位的CPU 書桌代表–記憶體 書架代表–硬碟 你從書架取出32本書放在書桌上面,書桌只能同時鋪開放32本書,你可以同時看這32本書獲取資訊,看完以後,你將這32本書放到書架,然後

作業系統多核處理器

這篇文章解答了我心中的疑問,那就是作業系統會自動排程cpu資源來處理多程序,多執行緒的併發。      早在上世紀90年代末,就有眾多業界人士呼籲用CMP(單晶片多處理器)技術來替代複雜性較高的單執行緒CPU。IBM、惠普、Sun等高階伺服器廠商,更是相繼推出了多核伺服器CPU。不過,由於伺服器價格高、應

linux常用命令(三)檔案作業系統磁碟管理

1.df -h  檢視磁碟容量 2.du -h  檢視目錄容量 3.du -h -d  檢視目錄深度 du -h -d 0 ~  檢視一級目錄資訊 du -h -d 1 ~檢視二級目錄資訊 4.du

深度 | ICCV研討會:實時SLAM的未來以及深度學習SLAM的比較(附論文和PPT)

選自 Computer Vison Blog 作者:Tomasz Malisiewicz 機器之心編譯 參與:吳攀、杜夏德 深度學習、計算機視覺和演算法正在塑造人工智慧的未來。 上一屆「國際計算機視覺大會(ICCV:International Con

尷尬的國產國外作業系統對比:面對現實這麼難嗎?

近日小編髮現,有一條名為“實力比拼:國產系統PK國外系統”的視訊經網友的爆料後在微博上刷屏了,視

IBM主機系統作業系統導論期末複習知識點總結

Unit 1 Mainframe Introduction 1.主機的最典型特性——RAS Reliability 可靠性 Availability 可用性 Serviceability 可服務 2.主機的發展歷史 s系列 s/36

android手機之-------64位作業系統 64位處理器

//////////一、引  言:64位相關概覽 1. 理論上,64 位處理器搭配64位系統執行64位軟體,執行效率將成倍提升,這也將是未來的發展趨勢。 但就目前來看,基於32位指令開發的應用仍是壓倒性優勢,所以指望64位處理器能有明顯的進步還得過一段時間才行。 2. 當64位處理器執行在64位系統下時,可以

ARM處理器的7種工作模式--linux作業系統ARM的工作模式

一、ARM處理器的7種工作模式使用者模式(USR):正常程式執行模式,不能直接切換到其他模式系統模式(SYS):執行作業系統的特權任務,與使用者模式類似,但具有可以直接切換到其他模式等特權快中斷模式(FIQ):支援高速資料傳輸及通道處理,FIQ異常響應時進入此模式中斷模式(I

CCTV2 一次無語的國產國外作業系統對比

(點選上方藍字,快速關注我們)轉自:cnBeta在嚴謹的測試對比中,如果存在多種變數因素影響,團