(出處:xi_gua_gua)
首先,
RTOS是即時操作系統(Real Time Operating System)
Linux是時分系統(Time-sharing Operating System),不過可以通過配置內核改成實時系統
即時操作系統
英文稱Real Time Operating System,簡稱RTOS。
1.實時操作系統定義
實時操作系統(RTOS)是指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速響應,並控制所有實時任務協調一致運行的操作系統。因而,提供及時響應和高可靠性是其主要特點。
實時操作系統有硬實時和軟實時之分,硬實時要求在規定的時間內必須完成操作,這是在操作系統設計時保證的;軟實時則只要按照任務的優先級,盡可能快地完成操作即可。我們通常使用的操作系統在經過一定改 變之後就可以變成實時操作系統。
實時操作系統是保證在一定時間限制內完成特定功能的操作系統。例如,可以為確保生產線上的機器人能獲取某個物 體而設計一個操作系統。在“硬”實時操作系統中,如果不能在允許時間內完成使物體可達的計算,操作系統將因錯誤結束。在“軟”實時操作系統中,生產線仍然 能繼續工作,但產品的輸出會因產品不能在允許時間內到達而減慢,這使機器人有短暫的不生產現象。
一些實時操作系統是為特定的應用設計的,另一些是通用的。一些通用目的的操作系統稱自己為實時操作系統。但某種程度上,大部分通用目的的操作系統,如微軟的Windows NT或IBM的OS/390有實時系統的特徵。這就是說,即使一個操作系統不是嚴格的實時系統,它們也能解決一部分實時應用問題。
2.實時操作系統的特徵
1)多任務;
2)有線程優先級
3)多種中斷級別
小的嵌入式操作系統經常需要實時操作系統,內核要滿足實時操作系統的要求。
3.實時操作系統的相關概念
(1)基本概念
代碼臨界段 Critical Section:指處理時不可分割的代碼。一旦這部分代碼開始執行則不允許中斷打入;
資源:任何為任務所佔用的實體;
共享資源:可以被一個以上任務使用的資源;
任務 Task:也稱作一個線程 thread,是一個簡單的程序。每個任務被賦予一定的優先級,有它自己的一套CPU寄存器和自己的棧空間。典型地,每個任務都是一個無限的循環,每個任務都處在以下五個狀態下:休眠態,就緒態,運行態,掛起態,被中斷態;
任務切換 Task Switching:將正在運行任務的當前狀態(CPU寄存器中的全部內容)保存在任務自己的棧區,然後把下一個將要運行的任務的當前狀態從該任務的棧中重新裝入CPU的寄存器,並開始下一個任務的運行;
內核 Kernel:負責管理各個任務,為每個任務分配CPU時間,並負責任務之間通訊。分為不可剝奪型內核(Non-Preemptive Kernel)與可剝奪型內核(Preemptive Kernel);
調度 Scheduling:內核的主要職責之一,決定輪到哪個任務運行。一般基於優先級調度法;
(2)關於優先級的問題
任務優先級:分為優先級不可改變的靜態優先級和優先級可改變的動態優先級;
優先級反轉:優先級反轉問題是實時系統中出現最多的問題。共享資源的分配可導致優先級低的任務先運行,優先級高的任務後運行。解決的辦法是使用“優先級繼承”算法來臨時改變任務優先級,以遏制優先級反轉。
(3)互斥 mutex
雖然共享數據區簡化了任務之間的信息交換,但是必須保證每個任務在處理共享共享數據時的排他性。使之滿足互斥條件的一般方法有:關中斷,使用測試並置位指令(TAS),禁止做任務切換,利用信號量。
因為採用實時操作系統的意義就在於能夠及時處理各種突發的事件,即處理各種中斷,因而衡量嵌入式實時操作系統的最主要、最具有代表性的性能指標參數無疑應該是中斷響應時間了。中斷響應時間通常被定義為:
中斷響應時間=中斷延遲時間+保存CPU狀態的時間+該內核的ISR進入函數的執行時間[2]。
中斷延遲時間=MAX(關中斷的最長時間,最長指令時間) + 開始執行ISR的第一條指令的時間[2]。
分時操作系統
英文:Time-sharing Operating System
使一台計算機同時為幾個、幾十個甚至幾百個用戶服務的一種操作系統。把計算機與許多終端用戶連接起來,分時操作系統將系統處理機時間與內存空間按一定的時間間隔,輪流地切換給各終端用戶的程序使用。
由於時間間隔很短,每個用戶的感覺就像他獨占計算機一樣。分時操作系統的特點是可有效增加資源的 使用率。例如UNIX系統就採用剝奪式動態優先的CPU調度,有力地支持分時操作。
產生分時系統是為了滿足用戶需求所形成的一種新型 OS。它與多道批處理系統之間,有著截然不同的性能差別。用戶的需求具體表現在以下幾個方面: 人—機交互 共享主機 便於用戶上機
分時系統的基本思想
時間片 :是把計算機的系統資源(尤其是 CPU時間)進行時間上的分割,每個時間段稱為一個時間片,每個用戶依次輪流使用時間片。
分時技術:把處理機的運行時間分為很短的時間片,按時間片輪流把處理機分給各聯機作業使用。
分時操作系統:是一種聯機的多用戶交互式的操作系統。一般採用時間片輪轉的方式使一台計算機為多個終端服務。對每個用戶能保證足夠快的響應時間,並提供交互會話能力。
設計目標: 對用戶的請求及時響應,並在可能條件下盡量提高系統資源的利用率。
工作方式:
一台主機連接了若干個終端;每個終端有一個用戶在使用;交互式地向系統提出命令請求;系統接受每個用戶的命令;採用時間片輪轉方式處理服務請求;並通過交互方式在終端上向用戶顯示結果;用戶根據上步結果發出下道命令
分時系統實現中的關鍵問題:及時接收。及時處理。
特徵:
交互性:用戶與系統進行人機對話。
多路性:多用戶同時在各自終端上使用同一CPU。
獨立性:用戶可彼此獨立操作,互不干擾,互不混淆。
及時性:用戶在短時間內可得到系統的及時回答。
影響響應時間的因素:終端數目多少、時間片的大小、信息交換量、信息交換速度。
例子:
分時—— 現在流行的PC,服務器都是採用這種運行模式,即把CPU的運行分成若干時間片分別處理不同的運算請求
實時—— 一般用於單片機上,比如電梯的上下控制中,對於按鍵等動作要求進行實時處理
以下對四種實時操作系統(RTOS)特性進行分析和比較。
它們是:Lynx實時系統公司的LynxOS、QNX軟件系統有限公司的QNX以及兩種具有代表性的實時Linux–新墨西哥工學院的RT-Linux和堪薩斯大學的KURT-Linux。
近年來,實時操作系統在多媒體通信、在線事務處理、生產過程控制、交通控制等各個領域得到廣泛的應用,因而越來越引起人們的重視。
1、基本特徵概述
QNX是一個分佈式、嵌入式、可規模擴展的實時操作系統。它遵循POSIX.1、(程序接口)和POSIX.2(Shell和工具)、部分遵循POSIX.1b(實時擴展)。它最早開發於1980年,到現在已相當成熟。
LynxOS是一個分佈式、嵌入式、可規模擴展的實時操作系統,它遵循POSIX.1a、POSIX.1b和POSIX.1c標準。它最早開發於1988年。
RT-Linux是一個嵌入式硬實時操作系統,它部分支持POSIX.1b標準。
KURT-Linux不是為嵌入式應用設計的,不同於硬(hard)實時/軟(soft)實時應用,他們提出”嚴格(firm)”實時應用的概念,如一些多媒體應用和ATM網絡應用,KURT是為這樣一些應用設計的”嚴格的”實時系統。
2、體系結構異同
實時系統的實現多為微內核體系結構,這使得核心小巧而可靠,易於ROM固化,並可模塊化擴展。微內核結構系統中,OS服務模塊在獨立的地址空間 運行,所以,不同模塊的內存錯誤便被隔離開來。但它也有弱點,進程間通信和上下文切換的開銷大大增加。相對於大型集成化內核系統來說,它必須靠更多地進行 系統調用來完成相同的任務。
QNX是一個微內核實時操作系統,其核心僅提供4種服務:進程調度、進程間通信、底層網絡通信和中斷處理,其進程在獨立的地址空間運行。所有其它OS服務,都實現為協作的用戶進程,因此QNX核心非常小巧(QNX4.x大約為12Kb)而且運行速度極快。
LynxOS目前還不是一個微內核結構的操作系統,但它計劃使用所謂的”Galaxy”技術將其從大型集成化內核改造成微內核,這一技術將在 LynxOS 3.0中引入。新的28Kb微內核提供以下服務:核心啟動和停止、底層內存管理、出錯處理、中斷處理、多任務、底層同步和互斥支持。
RT-Linux實現了一個小的實時核心,僅支持底層任務創建、中斷服務例程的裝入、底層任務通信隊列、中斷服務例程(ISR)和Linux進 程。原來的非實時Linux核心作為一個可搶先的任務運行於這個小核心之上,所有的任務都在核心地址空間運行。它不同於微內核和大型內核,屬於實時 EXE(realtime executive)體系結構。其可靠性和可維護性對電信服務系統來說都不夠理想。
KURT-Linux核心包括兩個部分:內核和實時模塊。內核負責實時事件的調度,實時模塊為用戶進程提供特定的實時服務。它不屬於微內核結構。
3、調度策略分析
任務調度策略是直接影響實時性能的因素。儘管調度算法多種多樣,但大多由單調率算法(RM)和最早期限優先算法(EDF)變化而來。前者主要用 於靜態週期任務的調度,後者主要用於動態調度,在不同的系統狀態下兩種算法各有優劣。在商業產品中採用的實際策略常常是各種因素的折中。
QNX 提供POSIX.1b標准進程調度:
32個進程優先級;
搶占式的、基於優先級的正文切換;
可選調度策略:FIFO、輪轉策略、適應性策略。
LynxOS 其調度策略為:
LynxOS支持線程概念,提供256個全局用戶線程優先級;
硬實時優先級調度:在每個優先級上實現了輪轉調度、定量調度和FIFO調度策略;
快速正文切換和阻塞時間短;
搶占式的RTOS核心。
RT-Linux
在操作系統之下實現了一個簡單的實時核心,Linux本身作為一個可搶占的任務在核內運行,優先級最低,隨時會被高優先級任務搶占。
用戶可自行編寫調度程序,它們可實現為可加載的核心模塊;
已實現的調度程序有:基於優先級的搶占式調度和EDF調度;
基於優先級的調度使用”單調率算法”,它直接支持週期任務。
KURT-Linux
可運行在兩種狀態之下:通常狀態和實時狀態。在通常狀態下,所有進程都可以運行,但某些核心服務將帶來中斷屏蔽的不可預期性。實時模式只允許實時進程運行。
支持FIFO調度策略、輪轉調度策略和UNIX分時調度策略;
增加了SCHED-KURT調度策略,這是一種靜態調度策略,使用一個特殊的調度文件記錄預先定義好的待調度進程的參數。
從以上簡略描述可以看出,前三種調度策略實現較規範,特別是兩種商業RTOS,遵循或部分遵循POSIX.1b實時調度標準。
4、操作系統服務比較
4.1 QNX的系統服務:
多種資源管理器,包括各種文件系統和設備管理,支持多個文件系統同時運行,包括提供完全POSIX.1及UNIX語法的POSIX文件系統,支持多種閃存設備的嵌入式文件系統,支持對多種文件服務器(如Windows NT/95、LAN Manager等)的透明訪問的SMB文件系統、DOS文件系統、CDROM文件系統等
設備管理:在進程和終端設備間提供大吞吐量、低開銷接口服務。
圖形/窗口支持:包括QNX Windows、X Window System for QNX、對MS Windows NT/95和X Window系統的遠程圖形連接。
TCP/IP for QNX:
高性能、容錯型QNX網絡–FLEET,使得所有連入網絡的計算機變成一個邏輯上的超級計算機。
透明的分佈式處理。 FLEET網絡處理與消息傳遞和進程管理原語的集成,將本地和網絡IPC統一起來,使得網絡對IPC而言是透明的。
4.2 LynxOS的系統服務:
網絡和通信: 由於使用UNIX/POSIX API,Lynx很適合於數據通信和Internet應用。又由於系統的開放性,網絡軟件很容易移植到Lynx上。同樣,Lynx亦提供關鍵的電話通信協議,使之適用於電信系統的基礎架構、操作和多媒體應用。
TCP/IP協議棧: Lynx自帶優化的TCP/IP協議棧,提供高性能服務,如TCP頭預測、高級路由算法、IP級多址廣播和鏈路級高速緩衝。
Internet工具: 包括,Telnet、Ftp、tftp、PPP、SLIP、實時調度的嵌入式Java虛擬機、嵌入式HTTP server、bootp、ARP/RARP、DNS域名服務、電子郵件、Perl、電話通信協議等。
SVR3流: LynxOS流機制為開發和移植基於流的驅動程序和應用提供了核心支持。
文件系統: 實時的類UNIX層次結構文件系統:連續結構文件、帶緩衝/不帶緩衝、原始分區和原始設備訪問。
基於Motif的圖形用戶接口。
分佈式計算資源: SCMP與VME總線上的多處理結合,PCI橋服務、CompactPCI Hot-swap Services、Lynx/HA-DDS分佈式數據系統。
4.3 Linux的系統服務:
近來,很多基於Linux的實時應用被開發出來,它具有成熟和豐富的資源。
UNIX用戶的開發工具和應用軟件都被移植到Linux上。
TCP/IP網絡協議。
各種Internet客戶/服務端軟件。
X Window。
C/C++、Java等語言編譯器。
上述系統的共同點是都提供了圖形界面、各種網絡支持等必要工具。 QNX是一個更加符合傳統”分佈式”概念的操作系統,目標是把整個局域網變成一 個大的超級計算機,使得網絡的存在對用戶透明,文件系統提供的服務也很豐富。但是,分佈式的程度越高也意味著系統開銷的增大。 LynxOS則著意於提供豐 富的網絡服務,而Linux的最大優勢則是經濟,還可以通過新聞組或mailing
5、系統開放性對比
對於很多大、中型系統來說,大多數軟件都是為UNIX平台編寫的,因此RTOS是否提供POSIX/UNIX API就顯得很重要。
5.1 QNX的開放性
QNX的POSIX兼容性和其提供的UNIX特色的編譯器、調試器、X Window和TCP/IP都是UNIX程序員所熟悉的。
支持多種CPU:AMD ElanSC300/310/400/410、Am386 DE/SE、Cyrix MediaGX、x86處理器(386以上)、Pentium系列、STMicroelectronics 的STPC。
多種總線:CompactPCI、EISA、ISA 、MPE (RadiSys)、STD、STD 32、PC/104、PC/104-Plus、PCI、PCMCIA、VESA、VME。
各種外設:多種SCSI設備、IDE/EIDE驅動器、10M/100M以太網卡、Token Ring網卡、FDDI接口卡、多種PCMCIA設備、閃存、聲卡等等。
5.2 LynxOS的開放性
POSIX.1a、1b、1c及BSD4.4等兼容性,使得遵循POSIX 1003或用於UNIX的程序很容易移植到LynxOS上。
支持多種CPU主板:包括CompactPCI(6U/3U)和標準PCI、VME/Eurobus、PC/104和PC/AT硬件等。
各種外設適配器:10/100BaseT Ethernet、SCSI接口、單/多通道串行控制器、單/雙工並行口、時鐘、計時器、IDE接口、高分辨率顯示適配器等。
5.3 Linux的開放性
用戶可得到UNIX的全部開發工具。
可使用市場上便宜又常見的硬件。
自動引用通知: Rtos比較 - Q: What is the difference between RTOS and the non-OS SDK? - ESP8266 Developer Zone