實(shí)時(shí)Linux與其它嵌入式實(shí)時(shí)操作系統(tǒng)的比較
實(shí)時(shí)Linux與其它RTOS的比較
本文對(duì)四種實(shí)時(shí)操作系統(tǒng)(RTOS)特性進(jìn)行分析和比較。它們是:Lynx實(shí)時(shí)系統(tǒng)公司的LynxOS、QNX軟件系統(tǒng)有限公司的QNX以及兩種具有代表性的實(shí)時(shí)Linux——新墨西哥工學(xué)院的RT-Linux和堪薩斯大學(xué)的KURT-Linux.
近年來(lái),實(shí)時(shí)操作系統(tǒng)在多媒體通信、在線事務(wù)處理、生產(chǎn)過程控制、交通控制等各個(gè)領(lǐng)域得到廣泛的應(yīng)用,因而越來(lái)越引起人們的重視。
基本特征概述
*QNX是一個(gè)分布式、嵌入式、可規(guī)模擴(kuò)展的實(shí)時(shí)操作系統(tǒng)。它遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具)、部分遵循POSIX.1b(實(shí)時(shí)擴(kuò)展)。它最早開發(fā)于1980年,到現(xiàn)在已相當(dāng)成熟。
*LynxOS是一個(gè)分布式、嵌入式、可規(guī)模擴(kuò)展的實(shí)時(shí)操作系統(tǒng),它遵循POSIX.1a、POSIX.1b和POSIX.1c標(biāo)準(zhǔn)。它最早開發(fā)于1988年。
*RT-Linux是一個(gè)嵌入式硬實(shí)時(shí)操作系統(tǒng),它部分支持POSIX.1b標(biāo)準(zhǔn)。
*KURT-Linux不是為嵌入式應(yīng)用設(shè)計(jì)的,不同于硬(hard)實(shí)時(shí)/軟(soft)實(shí)時(shí)應(yīng)用,他們提出“嚴(yán)格(firm)”實(shí)時(shí)應(yīng)用的概念,如一些多媒體應(yīng)用和ATM網(wǎng)絡(luò)應(yīng)用,KURT是為這樣一些應(yīng)用設(shè)計(jì)的“嚴(yán)格的”實(shí)時(shí)系統(tǒng)。
體系結(jié)構(gòu)異同
實(shí)時(shí)系統(tǒng)的實(shí)現(xiàn)多為微內(nèi)核體系結(jié)構(gòu),這使得核心小巧而可靠,易于ROM固化,并可模塊化擴(kuò)展。微內(nèi)核結(jié)構(gòu)系統(tǒng)中,OS服務(wù)模塊在獨(dú)立的地址空間運(yùn)行,所以,不同模塊的內(nèi)存錯(cuò)誤便被隔離開來(lái)。但它也有弱點(diǎn),進(jìn)程間通信和上下文切換的開銷大大增加。相對(duì)于大型集成化內(nèi)核系統(tǒng)來(lái)說(shuō),它必須靠更多地進(jìn)行系統(tǒng)調(diào)用來(lái)完成相同的任務(wù)。
*QNX是一個(gè)微內(nèi)核實(shí)時(shí)操作系統(tǒng),其核心僅提供4種服務(wù):進(jìn)程調(diào)度、進(jìn)程間通信、底層網(wǎng)絡(luò)通信和中斷處理,其進(jìn)程在獨(dú)立的地址空間運(yùn)行。所有其它OS服務(wù),都實(shí)現(xiàn)為協(xié)作的用戶進(jìn)程,因此QNX核心非常小巧(QNX4.x大約為12Kb)而且運(yùn)行速度極快。
*LynxOS目前還不是一個(gè)微內(nèi)核結(jié)構(gòu)的操作系統(tǒng),但它計(jì)劃使用所謂的“Galaxy”技術(shù)將其從大型集成化內(nèi)核改造成微內(nèi)核,這一技術(shù)將在LynxOS 3.0中引入。新的28Kb微內(nèi)核提供以下服務(wù):核心啟動(dòng)和停止、底層內(nèi)存管理、出錯(cuò)處理、中斷處理、多任務(wù)、底層同步和互斥支持。
*RT-Linux實(shí)現(xiàn)了一個(gè)小的實(shí)時(shí)核心,僅支持底層任務(wù)創(chuàng)建、中斷服務(wù)例程的裝入、底層任務(wù)通信隊(duì)列、中斷服務(wù)例程(ISR)和Linux進(jìn)程。原來(lái)的非實(shí)時(shí)Linux核心作為一個(gè)可搶先的任務(wù)運(yùn)行于這個(gè)小核心之上,所有的任務(wù)都在核心地址空間運(yùn)行。它不同于微內(nèi)核和大型內(nèi)核,屬于實(shí)時(shí)EXE (realtime executive)體系結(jié)構(gòu)。其可靠性和可維護(hù)性對(duì)電信服務(wù)系統(tǒng)來(lái)說(shuō)都不夠理想。
*KURT-Linux核心包括兩個(gè)部分:內(nèi)核和實(shí)時(shí)模塊。內(nèi)核負(fù)責(zé)實(shí)時(shí)事件的調(diào)度,實(shí)時(shí)模塊為用戶進(jìn)程提供特定的實(shí)時(shí)服務(wù)。它不屬于微內(nèi)核結(jié)構(gòu)。
調(diào)度策略分析
任務(wù)調(diào)度策略是直接影響實(shí)時(shí)性能的因素。盡管調(diào)度算法多種多樣,但大多由單調(diào)率算法(RM)和最早期限優(yōu)先算法(EDF)變化而來(lái)。前者主要用于靜態(tài)周期任務(wù)的調(diào)度,后者主要用于動(dòng)態(tài)調(diào)度,在不同的系統(tǒng)狀態(tài)下兩種算法各有優(yōu)劣。在商業(yè)產(chǎn)品中采用的實(shí)際策略常常是各種因素的折中。
QNX提供POSIX.1b標(biāo)準(zhǔn)進(jìn)程調(diào)度:
*32個(gè)進(jìn)程優(yōu)先級(jí);
*搶占式的、基于優(yōu)先級(jí)的正文切換;
*可選調(diào)度策略:FIFO、輪轉(zhuǎn)策略、適應(yīng)性策略。
LynxOS其調(diào)度策略為:
*LynxOS支持線程概念,提供256個(gè)全局用戶線程優(yōu)先級(jí);
*硬實(shí)時(shí)優(yōu)先級(jí)調(diào)度:在每個(gè)優(yōu)先級(jí)上實(shí)現(xiàn)了輪轉(zhuǎn)調(diào)度、定量調(diào)度和FIFO調(diào)度策略;
*快速正文切換和阻塞時(shí)間短;
*搶占式的RTOS核心。
RT-Linux在操作系統(tǒng)之下實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的實(shí)時(shí)核心,Linux本身作為一個(gè)可搶占的任務(wù)在核內(nèi)運(yùn)行,優(yōu)先級(jí)最低,隨時(shí)會(huì)被高優(yōu)先級(jí)任務(wù)搶占。
*用戶可自行編寫調(diào)度程序,它們可實(shí)現(xiàn)為可加載的核心模塊;
*已實(shí)現(xiàn)的調(diào)度程序有:基于優(yōu)先級(jí)的搶占式調(diào)度和EDF調(diào)度;
*基于優(yōu)先級(jí)的調(diào)度使用“單調(diào)率算法”,它直接支持周期任務(wù)。
KURT-Linux可運(yùn)行在兩種狀態(tài)之下:通常狀態(tài)和實(shí)時(shí)狀態(tài)。在通常狀態(tài)下,所有進(jìn)程都可以運(yùn)行,但某些核心服務(wù)將帶來(lái)中斷屏蔽的不可預(yù)期性。實(shí)時(shí)模式只允許實(shí)時(shí)進(jìn)程運(yùn)行。
*支持FIFO調(diào)度策略、輪轉(zhuǎn)調(diào)度策略和UNIX分時(shí)調(diào)度策略;
*增加了SCHED-KURT調(diào)度策略,這是一種靜態(tài)調(diào)度策略,使用一個(gè)特殊的調(diào)度文件記錄預(yù)先定義好的待調(diào)度進(jìn)程的參數(shù)。
從以上簡(jiǎn)略描述可以看出,前三種調(diào)度策略實(shí)現(xiàn)較規(guī)范,特別是兩種商業(yè)RTOS,遵循或部分遵循POSIX.1b實(shí)時(shí)調(diào)度標(biāo)準(zhǔn)。
評(píng)論