Rodos (operační systém) - Rodos (operating system)

Rodos
Logo operačního systému Realtime Rodos
Logo Rodos
VývojářUniverzita ve Würzburgu - Informatika 8
NapsánoC, C ++ a Montážní jazyk
Zdrojový modelOtevřený zdroj
ÚložištěRodos na Gitlabu
PlatformyVidět # Podporované architektury
LicenceLicence Apache verze 2.0
Oficiální webové stránkyInformace a stahování

Rodos (Rčas Ónboard Dependable Óperating System) je a operační systém v reálném čase pro vestavěné systémy a byl navržen pro aplikační domény vyžadující vysokou spolehlivost.

Dějiny

Rodos byl vyvinut na Německé letecké středisko a má své kořeny v operačním systému ŠÉF. Používá se pro proud mikro satelit program Německé letecké středisko. Systém běží na operačním satelitu TET-1 a budou použity pro aktuálně vyvinutý satelit BiROS.

Rodos je dále vylepšen a rozšířen na Německé letecké středisko stejně jako oddělení pro letecké informační technologie na Univerzita ve Würzburgu.

Funkce

Důležitým aspektem Rodosu je jeho integrovaný middleware v reálném čase. Vývoj řídicího a užitečného softwaru na vrcholu middlewaru dnes poskytuje maximální modularitu. Aplikace / moduly lze vyvíjet samostatně a je velmi snadné je později vyměnit bez obav z vedlejších účinků, protože všechny moduly jsou zapouzdřeny jako Building Blocks (BB) a lze k nim přistupovat a k jiným zdrojům mají přístup pouze pomocí dobře definovaných rozhraní.

Rodos byl implementován jako softwarový framework v C ++ s objektově orientovaným aplikačním rozhraním (API). je uspořádán ve vrstvách: Nejnižší vrstva (1) je zodpovědná za řízení hardwaru zabudovaného systému (HAL: Hardware abstraction layer). Další jádro vrstvy (2): spravuje místní zdroje, vlákna a čas. V horní části jádra máme middleware (vrstva 3), který umožňuje komunikaci mezi BB pomocí multicast protokolu vydavatele a předplatitele. A na vrcholu middlewaru může uživatel implementovat své aplikace (vrstva 4) jako distribuovanou softwarovou síť jednoduchých BB. Rozhraní Building Blocks API v horní části middlewaru je rozhraní orientované na služby. Interakce BB poskytováním služeb jiným BB a využíváním služeb z jiných BB.

Jak již bylo zmíněno dříve, původním účelem Rodosu bylo ovládání satelitů. Byl navržen jako mozek systému Avionic a poprvé (2001) představuje koncept NetworkCentric. Stroj avioniky jádra networkCentric se skládá z několika harmonizovaných komponent, které spolupracují na jednoduchém implementování spolehlivých výpočtů. V systému NetworkCentric máme softwarovou síť BB a hardwarovou síť propojující vozidla (rádiová komunikace), počítače uvnitř vozidel (autobusy a spoje point-to-point), inteligentní zařízení (připojené ke sběrnicím) a jednoduchá zařízení připojená k předním počítačům . Ke komunikaci s (uzlovými) externími jednotkami, včetně zařízení a dalších výpočetních jednotek, poskytuje každý uzel bránu do sítě a kolem systému může být připojeno několik zařízení (IO Devs a výpočetní uzly). Výměna zpráv poskytovaná middlewarem a bránami je asynchronní pomocí protokolu vydavatele a předplatitele. Nejsou stanoveny žádné pevné komunikační cesty a systém lze snadno překonfigurovat za běhu. Například několik replik stejného softwaru může běžet v různých uzlech a publikovat výsledek pomocí stejného tématu, aniž by se navzájem znali. Volič se může přihlásit k odběru tohoto tématu a hlasovat o správném výsledku. Aplikace může migrovat z uzlu do uzlu nebo dokonce do jiných vozidel, aniž by bylo nutné překonfigurovat komunikační systém. Jádro middlewaru distribuuje zprávy pouze lokálně, ale pomocí integrovaných bran do sítě NetworkCentric se zprávy mohou dostat do jakéhokoli uzlu a aplikace v síti. Komunikace v celém systému zahrnuje softwarové aplikace, výpočetní uzly a dokonce i IO zařízení. Vydavatelé zveřejňují zprávy v rámci daného tématu jako veřejné. Předplatitelé (nula, jeden nebo více) daného tématu dostanou všechny zprávy, které jsou publikovány v rámci tohoto tématu. Jak již bylo zmíněno dříve, pro tuto komunikaci není rozdíl v tom, který uzel (výpočetní jednotka nebo zařízení) vydavatel a předplatitelé běží, a kromě toho to může být jakákoli kombinace softwarových úkolů a hardwarových zařízení! K vytvoření přenosové cesty musí vydavatel i předplatitel sdílet stejné téma. Téma je dvojice skládající se z datového typu a celého čísla představujícího identifikátor tématu. Softwarový middleware i hardwarový síťový přepínač (tzv. Middleware switch) interpretují stejný protokol vydavatele / předplatitele.[1]

Rodos Témata pro software a hardware

Rodos umožňuje uživateli psát aplikace v reálném čase pro různé architektury snadným a efektivním způsobem. Během vývoje byla věnována zvláštní pozornost implementaci různých funkcí Rodosu jednoduchým, přesto robustním způsobem. Vyvarovali jsme se zbytečné složitosti, abychom uživateli poskytli přímočarý a jasně uspořádaný systém. Rodos podporuje typické vlastnosti operačních systémů v reálném čase, jako vlákna a semafory.

Mezi další funkce, které Rodos nabízí:[2]

Příklady

Ahoj světe

Běžný Ahoj světe ukázkový program vypadá takto v Rodosu.

#zahrnout „rodos.h“třída Ahoj světe : veřejnost StaticThread<> {  prázdnota běh(){    TISK("Ahoj světe! n");  }} Ahoj světe;

Třída Thread je rozšířena o vlastní proceduru run (), která zapíše Hello World na standardní výstup pomocí PRINTF. Všechny komponenty Rodos potřebné pro vývoj aplikace jsou přístupné prostřednictvím hlavičkového souboru rodos.h.

Vlákna

Rodos používá spravedlivé preference preventivní plánování. The vlákno s nejvyšší prioritou se provádí, zatímco běží vlákna s nižší prioritou jsou pozastavena (preventivní multitasking ). Pokud existuje více než jedno vlákno se stejnou prioritou, každý z nich získá pevný podíl výpočetního času a jsou prováděny střídavě.

Příklad:

#zahrnout <rodos.h>třída HighPriorityThread: veřejnost StaticThread<> {veřejnost:  HighPriorityThread() : StaticThread(„HiPriority“, 25) {   }  prázdnota běh() {    zatímco(1) {      TISK("*");      suspendCallerUntil(NYNÍ() + 1*SEKUNDY);    }  }} highprio;třída LowPriorityThread: veřejnost StaticThread<> {veřejnost:  LowPriorityThread() : StaticThread(„LowPriority“, 10) {   }  prázdnota běh() {    zatímco(1) {         TISK(".");     }  }} lowprio;

Vlákno LowPriorityThread neustále píše znak "." a je přerušován každou sekundu vláknem HighPriorityThread, který píše znak „*“.

Témata

Rodos používá tzv Témata umožnit komunikaci mezi vlákny a přes brány mezi různými systémy. A Téma představuje zprávu určitého druhu. Vlákno může publikovat Témata stejně jako se přihlásit k odběru a Téma přijímat všechny zprávy, které patří k typu zprávy. Systém zpráv odpovídá publikovat – odebírat vzor.

Zde je jednoduchý příklad s jedním vydavatelem a jedním předplatitelem, kteří oba používají Téma counter1 obsahující pouze jednu celočíselnou hodnotu.

Příklad:

#zahrnout <rodos.h>Téma<dlouho>    counter1(-1, "counter1");třída MyPublisher : veřejnost StaticThread<> {veřejnost:	MyPublisher() : StaticThread(„SenderSimple“) { }	prázdnota běh () {		dlouho cnt = 0;		TIME_LOOP(3*SEKUNDY, 3*SEKUNDY) {			TISK("Publikovat:% ld n", ++cnt);			counter1.publikovat(cnt);		}	}} vydavatel;třída Můj odběratel : veřejnost SubscriberReceiver<dlouho> {veřejnost:    Můj odběratel() : SubscriberReceiver<dlouho>(counter1) { }    prázdnota dát(dlouho &data) {        TISK("Přijato:% ld n", data);    }       }odběratel;

The Vydavatel-vlákno pošlete každé tři sekundy vzestupnou hodnotu čítače, zatímco Účastnické vlákno jednoduše zobrazí přijatou celočíselnou hodnotu.

Podporované architektury

Podporováno architektury instrukční sady:

Kromě toho může Rodos běžet jako host na jiném hostitelském operačním systému.

Reference

externí odkazy