1. 實時操作系統的特徵
1)高精度計時系統
計時精度是影響實時性的一個重要因素。在實時應用系統中,經常需要精確確定實時地操作某個設備或執行某個任務,或精確的計算一個時間函數。這些不僅依賴於一些硬體提供的時鍾精度,也依賴於實時操作系統實現的高精度計時功能。
2)多級中斷機制
一個實時應用系統通常需要處理多種外部信息或事件,但處理的緊迫程度有輕重緩急之分。有的必須立即作出反應,有的則可以延後處理。因此,需要建立多級中斷嵌套處理機制,以確保對緊迫程度較高的實時事件進行及時響應和處理。
3)實時調度機制
實時操作系統不僅要及時響應實時事件中斷,同時也要及時調度運行實時任務。但是,處理機調度並不能隨心所欲的進行,因為涉及到兩個進程之間的切換,只能在確保「安全切換」的時間點上進行,實時調度機制包括兩個方面,一是在調度策略和演算法上保證優先調度實時任務;二是建立更多「安全切換」時間點,保證及時調度實時任務。
實時操作系統的特點
IEEE 的實時UNIX分委會認為實時操作系統應具備以下的幾點:
1、非同步的事件響應
2、切換時間和中斷延遲時間確定
3、優先順序中斷和調度
4、搶占式調度
2. 操作系統的主要性能指標有哪些
微型計算機的主要性能指標和基本系統配置
(1)微型計算機主要性能指標
字長:CPU能夠同時處理的比特(bit)數目。它直接關繫到計算機的計算精度、功能和速度。字長越長,計算精度越高,處理能力越強。常見的微型機字長有8位、16位、32位。
主頻(時鍾頻率):時鍾脈沖發生器所產生的時鍾信號頻率(MHz)。它在很大程度上決定了計算機的運行速度。
內存容量:內存儲器中能夠存儲信息的總位元組數,一般以KB、MB為單位,反映了內存儲器存儲數據的能力。
運算速度:計算機每秒運算的次數(MIPS
-
每秒百萬條指令)。
系統的可靠性:系統在正常條件下不發生故障或失效的概率。
外設配置:外設是指計算機的輸入、輸出設備以及外存儲器等,其中,顯示器有單色、彩色之分,也有高、中、低解析度之分,,磁碟有軟盤與硬碟之分,軟盤有高密、低密之分。
軟體配置:軟體配置包括操作系統、計算機語言、資料庫管理系統、網路通信軟體、漢字軟體及其他各種應用軟體等。
存取周期:對內存進行一次訪問(存取)操作所需的時間。
3. ucos原理
ucos-ii是一個可剝奪型內核的實時操作系統,以stm32來說,使用系統滴答定時器,定時產生一個時鍾節拍,來推動任務的調度,管理,切換等。
關於系統大概的運行原理
2.當產生一個時鍾節拍時,如果有比當前運行任務優先順序更高的任務就緒,那麼優先順序(「優先順序」為0時優先順序最高)高的任務搶佔CPU,CPU保存現場環境,放入該任務堆棧中。再將優先順序高的任務的堆棧中的現場環境取出來,寫入CPU寄存器中。(CPU中的寄存器暫時還沒有仔細去研究)。當這個任務執行進入延時,或是要等待某個時間或者信號量。那麼它將放棄CPU的使用權,系統會從任務就緒表中,把優先順序最高的且就緒狀態的任務賦予CPU的使用權。至此來推動整個系統,調度所有的任務。
不發生中斷時UCOS系統時間與任務的切換
①.假設當前運行的任務是低優先順序的任務,CPU程序寄存器中存在的一些寄存器都是低優先順序的任務
②當程序運行到檢測到高優先順序的任務進入就緒狀態的時候,此時CPU發送一些命令,把CPU當前的一些程序寄存器的內容復制到低優先順序任務的堆棧中。也就是1過程。
③.此時通過剛剛的就緒表的機制,可以從程序中得到最高優先順序的任務,也就是2過程=
④.最後的過程3就是把剛剛的高優先順序任務的堆棧指針復制到CPU的程序寄存器當中,實現任務的切換。
當有中斷時,UCOS系統的執行原理
當程序正在執行一個中斷服務函數時,發生一個系統滴答中斷,因為系統滴答定時器的優先順序高,所以會中斷這個中斷服務函數執行任務切換。而有些時候,中斷時不能延時的。例如接收數據時,會發生接收錯誤。造成嚴重的後果。
這時,就有下圖中的操作,可以避免。
PendSV異常(我稱它為中斷)編程為最低的優先順序中斷。如果某個中斷正在執行,而系統滴答搶佔了它,那麼這個中斷將懸起一個PendSV中斷,來緩期執行任務切換。
UCOS的任務切換時間可以在os_cfg.h中去設置OS_TICKS_PER_SEC宏UCOS任務數等配置也可以在該文件中去尋找。
UCOS-II主要提供服務
內存管理
多任務管理
外圍資源管理
關於Make 與編譯
書中有講這一塊,所以我也記錄下我的理解
由於我平時都用keil這樣的集成開發環境,之前也有學習過一段時間的linux,但是對編譯,makefile這些理解的還是不是很好。
編輯makefile 來將源文件和包含的頭文件編譯成需要的.obj文件,然後再將這些.obj文件鏈接成,想要生成的程序。關於makefile好像每一種編譯器都有自己的makefile規則和命令,因為以前學習GCC編譯器和現在書上看到的BCC編譯器寫的makefile好像不太一樣。我也沒有去深究。
所以還是集成開發環境好,工具還是怎麼方便怎麼來。需要學習的原理的時候再去理解,實際的應用中用自己寫的Makefile去編譯文件怕是石樂志哦。
UCOS的任務
任務三要素(我理解的)
任務控制塊
OSTaskCreate((void()(void))start_task,
//任務函數
(void*)0,
//傳遞給任務函數的參數
(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],
//任務堆棧的棧頂
(INT8U)START_TASK_PRIO,
//任務的優先順序
主要包含了任務的棧頂地址,
如果處理器的堆棧是高地址向下生長的那麼棧頂地址
4. 為什麼實時操作系統必須支持搶占式任務調度
做嵌入式系統開發有一段時間了,做過用於手機平台的嵌入式Linux,也接觸過用於交換機、媒體網關平台的VxWorks。實際應用後回過頭來看理論,才發現自己理解的膚淺,也發現CSDN上好多同學們都對實時、嵌入式這些概念似懂非懂。畢竟如果不做類似的產品,平時接觸的機會很少,即使做嵌入式產品開發,基本也是只管調用Platform Team封裝好的API。所以,在此總結一下這些概念,加深自己的理解,同時也給新手入門,歡迎大家拍磚,爭取寫個連載,本文先總結一下實時的概念,什麼是真正的實時操作系統?
1. 首先說一下實時的定義及要求:
參見Donal Gillies在Realtime Computing FAQ中提出定義:實時系統指系統的計算正確性不僅取決於計算的邏輯正確性,還取決於產生結果的時間。如果未滿足系統的時間約束,則認為系統失效。
一個實時操作系統面對變化的負載(從最小到最壞的情況)時必須確定性地保證滿足時間要求。請注意,必須要滿足確定性,而不是要求速度足夠快!例如,如果使用足夠強大的CPU,Windows在CPU空閑時可以提供非常短的典型中斷響應。但是,當某些後台任務正在運行時,有時候響應會變得非常漫長,以至於某一個簡單的讀取文件的任務會長時間無響應,甚至直接掛死。這是一個基本的問題:並不是Windows不夠快或效率不夠高,而是因為它不能提供確定性,所以,Windows不是一個實時操作系統。
根據實際應用,可以選擇採用硬實時操作系統或軟實時操作系統。硬實時當然比軟實時好,但是,如果你的公司正在准備開發一款商用軟體,那請你注意了,業界公認比較好的VxWorks(WindRiver開發),會花光你本來就很少的銀子;而軟實時的操作系統,如某些實時Linux,一般是開源免費的,我們公司本來的產品就是基於VxWorks的,現在業界都在Cost Rection,為了響應號召,正在調研如何把平台換成免費的嵌入式實時Linux。同學們,如何選擇,自己考慮吧:-)
硬實時 -代表產品 VxWorks
舉一個經常使用的實例,中高檔汽車中使用的氣囊。當報告車輛碰撞的感測器中斷CPU後,操作系統應快速地分配展開氣囊的任務,並且不允許任何其他非實時處理進行干擾,晚一秒鍾展開氣囊比沒有氣囊的情況更糟糕,這就是一個典型的必須使用硬實時的系統。
硬實時系統指系統要有確保的最壞情況下的服務時間,即對於事件的響應時間的截止期限是無論如何都必須得到滿足。
軟實時 -代表產品軟實時Linux
再舉一個實例,IPTV數字電視機頂盒,需要實時的處理(解碼)視頻流,如果丟失了一個或幾個視頻幀,顯然會造成視頻的品質更差,但是只要做過簡單的抖動處理的系統,丟失幾個視頻幀就不會對整個系統造成不可挽救的影響。
軟實時系統就是那些從統計的角度來說,一個任務能夠得到有確保的處理時間,到達系統的事件也能夠在截止期限到來之前得到處理,但違反截止期限並不會帶來致命的錯誤。
===========================================================
請注意:講到這里,想花點墨水區分一下實時和嵌入式的概念,因為筆者也長時間把這兩者混為一談。實時操作系統的概念上文已經講的很清楚了,主要就是要能確定性的滿足時間要求。嵌入式系統很難下一個定義,有興趣的可以網路一下「嵌入式系統」,一般可以認為是板子或晶元上軟硬體的總和,嵌入式系統一定要對實時任務有很強的支持能力,所以一般嵌入式系統都會採用實時操作系統,根據不同應用,選擇採用硬實時或軟實時。
===========================================================
2. 如何衡量一個實時操作系統的實時性能?
主要有以下兩個重要指標:
指標1、中斷響應時間(可屏蔽中斷)
計算機接收到中斷信號到操作系統作出響應,並完成切換轉入中斷服務程序的時間。對於搶先式內核,要先調用一個特定的函數,該函數通知內核即將進行中斷服務,使得內核可以跟蹤中斷的嵌套。搶先式內核的中斷響應時間由下式給出:
中斷響應時間=關中斷的最長時間+保護CPU內部寄存器的時間+進入中斷服務函數的執行時間+開始執行中斷服務常式(ISR)的第一條指令時間
請注意:中斷響應時間是系統在最壞情況下響應中斷的時間,某系統100次中有99次在50ms之內響應中斷,只有一次響應中斷的時間是250ms,只能認為中斷響應時間是250ms。
指標2、任務切換時間
除為中斷處理提供確定性外,實時處理也需要支持周期性間隔的任務調度。大量控制系統要求周期性采樣與處理。某個特定任務必須按照固定的周期(p)執行,從而確保系統的穩定性。考慮一下汽車的防抱死系統(ABS)。控制系統對車輛的每個車輪的轉速進行采樣(每秒最多20次)並控制每個制動器的壓力(防止它鎖死)。為了保持控制系統的正常工作,感測器的采樣與控制必須按照一定的周期間隔。這意味著必須搶占其他處理,以便ABS任務能按照期望的周期執行。
當多任務內核決定運行另外的任務時,它把正在運行任務的當前狀態(即CPU寄存器中的全部內容)保存到任務自己的棧區之中。然後把下一個將要運行的任務的當前狀態從該任務的棧中重新裝入CPU 的寄存器,並開始下一個任務的運行。這個過程就稱為任務切換。做任務切換所需要的時間取決於CPU有多少寄存器要入棧。CPU 的寄存器越多,額外負荷就越重。
5. 什麼是實時操作系統
實時操作系統,簡稱RTOS(Real Time Operat-
ing System). UNIX是分時系統,定時器的優先順序
最高.以UNIX為基礎,允許對中斷處理的優先順序
做些調整,使系統對外部事件的響應速度保證不大於
某一特定的時間間隔,就構成了實時系統,如Lynx,
OS-9等操作系統.如果操作系統能做到不死機,且
響應速度有保證就可以用於各種控制目的了.
用於控制目的時,多任務是必要的,而多用戶往
往並不需要,尤其是在嵌人式應用中.因此可以將
UNIX多用戶那部分功能去掉,並根據嵌人式應用的
特點,舍棄一部分不必要的功能,以適應嵌人式應用
萬方數據
學習園地 327
中要求佔用內存少的特點,這就是嵌人式多任務實時
操作系統.在這里,"操作"二字已經失去了本來的含
義.
RTOS的開發工具允許用戶針對不同的應用對
象對RTOS的內核進行裁剪,壓縮,以適應各類應
用,並提供應用程序的調試環境.
從理論上講,無論UNIX還是基於UNIX思想
的RTOS,都包含了計算機軟體理論最精華的那一部
分.從實踐上說,它們亦是被無數應用系統證明是完
全成功的.
實時系統是指能在確定的時間內執行其功能並
對外部的非同步事件做出響應的計算機系統.其操作
的正確性不僅依賴於邏輯設計的正確程度,而且跟這
些操作進行的時間有關."在確定的時間內"是這個
定義的核心.也就是說,實時系統是對響應時間有嚴
格要求的.例如,一個視頻播放系統要從CD-ROM
中讀取高壓縮率的數據,並將其解壓縮,送到顯示設
備.解壓縮的工作必須在很短的時間(毫秒級)內完
成,否則會出現畫面的不連續.假設圖像每幀的停留
時間為30ms,那麼該系統必須在這段時間內將下一
幀從CD-ROM中讀出並完成解壓縮.30ms就成為
一個時間限制,每次處理均在30ms內就是實時的,
一萬次處理有一次處理時間大於30ms也不是好的
實時系統.
一個系統具有實時性並不說明該系統的響應和
處理速度非常快;而一個高速系統也未必是實時系
統.特定的實時系統有其具體的時限(或速度)要求,
該時限要求對不同系統千差萬別.高能粒子甄別系
統的甄別處理要求在微秒或納秒級時間內完成;而實
時資料庫查詢系統僅要求在用戶鍵人請求後幾秒內
得到查詢結果.所以設計實時系統之初,應該明確目
標系統的實時要求是秒級的,還是毫秒,微秒級的,避
免盲目追求高速度,造成浪費.
實時系統通常分為硬實時和軟實時系統.前者
意味著存在必須滿足的時間限制,而後者意味著偶爾
超過時間限制是可以容忍的.
實時操作系統是基於計算機的,是管理計算機硬
件資源並提供人機命令或編程介面的系統,它能在固
定的時間內對一個或多個由外設發出的信號做出適
當的反應.與普通(分時)操作系統不同,實時操作系
統強調了系統對外部非同步事件響應時間的確定性,這
已經逐漸接近嵌人式系統的設計思想了.
實時操作系統和分時操作系統的另一個重要區
別在於二者的任務調度方式不同.
常見的分時調度演算法有時間片輪轉調度,優先順序
調度,多重隊列,最短作業優先,保證調度演算法以及彩
票調度演算法.這里不詳細描述這些演算法.
實時調度演算法主要有三種,比較經典的是事件發
生率單調演算法(Liu和Layland, 1993).該演算法事先
為每個任務分配一個與事件發生頻率成正比的優先
級,調度程序總是調度優先順序最高的就緒任務,必要
時將剝奪當前任務的CPU使用權,讓高優先順序的任
務先運行.這種演算法被證明是最優的,也是為大部分
實時內核所採用的調度方式.
另一種流行的實時調度演算法是最早截止優先算
法.當一個事件發生時,對應的任務被加到就緒隊列
中,該隊列按照截止期限排序,截止期限最短的優先
級最高.對周期性事件,截止時間即為事件下次發生
的時間.
第三種演算法首先計算各任務的富裕時間,稱作裕
度(laxity).如果一個任務需要運行200ms,而它必
須在250ms內完成,則其裕度為50ms.該演算法稱為
最少裕度法,即選擇裕度最少的任務.
盡管通過這三種演算法中的任何一個都可以將分
時操作系統轉化為實時操作系統,但實際上,由於前
者的任務切換時間太長,實時性能都比較低,所以實
時系統一般都採用專用的實時操作系統.這些實時
操作系統的主要特徵有:
.規模小,
中斷被屏蔽的時間很短;
中斷處理時間短;
.任務切換很快.
常見的實時操作系統有VxWorks, VRTX/OS,
pSOS+,RTMX,OS/9和Lynx OS等等.
6. linux是實時還是分時操作系統,什麼是實時操作系統,什麼是分時操作系統他們的區別是什麼
Linux是分時操作系統。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。
實時操作系統(RTOS)是指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統做出快速響應,調度一切可利用的資源完成實時任務,並控制所有實時任務協調一致運行的操作系統。提供及時響應和高可靠性是其主要特點。
分時操作系統是使一台計算機採用時間片輪轉的方式同時為幾個、幾十個甚至幾百個用戶服務的一種操作系統。
區別:
1、交互性不同。
實時信息處理系統具有交互性,但僅限於訪問系統中某些特定的專用服務程序。
分時系統能向終端用戶提供數據處理服務、資源共享等服務。
2、可靠性要求不同。
分時系統要求系統可靠。
實時系統則要求系統高度可靠。因為任何差錯都可能帶來巨大的經濟損失甚至無法預料的災難性後果。
3、多路性表現不同。
實時控制系統,其多路性主要表現在經常對多路的現場信息進行採集以及對多個對象或多個執行機構進行控制。
分時系統具有多路性,系統按分時原則為多個終端用戶服務;
(6)實時操作系統任務切換時間擴展閱讀:
基本思想
Linux的基本思想有兩點:
1、一切都是文件;
2、每個軟體都有確定的用途。
其中第一條詳細來講就是系統中的所有都歸結為一個文件,包括命令、硬體和軟體設備、操作系統、進程等等對於操作系統內核而言,都被視為擁有各自特性或類型的文件。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。