<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Rodos_%28Betriebssystem%29</id>
	<title>Rodos (Betriebssystem) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Rodos_%28Betriebssystem%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Rodos_(Betriebssystem)&amp;action=history"/>
	<updated>2026-06-09T17:38:54Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Rodos_(Betriebssystem)&amp;diff=2879935&amp;oldid=prev</id>
		<title>imported&gt;Skranon: /* Weblinks */ link zur Rodos Installation von der Universität Würzburg</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Rodos_(Betriebssystem)&amp;diff=2879935&amp;oldid=prev"/>
		<updated>2026-04-13T20:05:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks: &lt;/span&gt; link zur Rodos Installation von der Universität Würzburg&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Betriebssystem&lt;br /&gt;
| Name          = Rodos&lt;br /&gt;
| Logo          = [[Datei:Rodos-logo.png|Logo des Betriebssystems Rodos]]&lt;br /&gt;
| Entwickler    = [https://www.informatik.uni-wuerzburg.de/ Universität Würzburg - Informatik 8]&lt;br /&gt;
| Lizenz        = [[Apache-Lizenz|Apache-Lizenz Version 2.0]]&lt;br /&gt;
| Sonstiges     = Programmiert in [[C (Programmiersprache)|C]], [[C++]], [[Assemblersprache]]&lt;br /&gt;
| Website       = [https://gitlab.com/rodos/rodos Information &amp;amp; Download (Gitlab)]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rodos&amp;#039;&amp;#039;&amp;#039; (Realtime Onboard Dependable Operating System) ist ein [[Echtzeitbetriebssystem]] für [[Eingebettetes System|eingebettete Systeme]] und wurde für Anwendungen entwickelt, die hohe Anforderungen an die Zuverlässigkeit haben.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Rodos wurde am [[Deutsches Zentrum für Luft- und Raumfahrt|Deutschen Zentrum für Luft- und Raumfahrt (DLR)]] entwickelt und basiert auf dem Betriebssystem [[BOSS (Betriebssystem)|BOSS]]. Es wird unter anderem im [[Kleinsatellit|Mikro-Satellitenprogramm]] des DLR eingesetzt. Prominente Anwendungen umfassen die [[Satellit (Raumfahrt)|Satelliten]] [[TET-1]] und [[BIROS]], die beide erfolgreich im Orbit betrieben werden. Zudem wurde Rodos bei den Kleinsatelliten [[Beesat|BeeSat]] 1 und 2 eingesetzt.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://pts.space/partners/universitat-wurzburg/ |titel=Our Partners: Working together on one shared vision |werk=pts.space |sprache=en |offline=ja |archiv-url=https://web.archive.org/web/20220818223120/https://pts.space/partners/universitat-wurzburg/ |archiv-datum=2022-08-18 |abruf=2024-12-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Weiterentwicklung von Rodos erfolgt aktuell in enger Zusammenarbeit zwischen dem DLR und dem Lehrstuhl Informationstechnik für Luft- und Raumfahrt an der [[Julius-Maximilians-Universität Würzburg]], insbesondere in der Abteilung für [[Luft- und Raumfahrtinformatik]].&lt;br /&gt;
&lt;br /&gt;
== Architektur ==&lt;br /&gt;
Rodos ist als [[Framework]] mit einer mehrschichtigen Architektur aufgebaut. Die unterste Ebene bildet die [[Hardware]]-Schicht, die für die direkte Ansteuerung der Hardware zuständig ist. Darüber liegt die [[Middleware]]-Schicht, die die Kommunikation zwischen verschiedenen Anwendungen und Systemkomponenten ermöglicht. Die oberste Schicht ist die Anwendungsschicht, die die Implementierung spezifischer Anwendungen unterstützt. Das Betriebssystem wurde [[Objektorientierte Programmierung|objektorientiert]] in [[C++]] entwickelt und durch hardwarespezifischen [[C (Programmiersprache)|C-]] und [[Assemblersprache|Assembler-]]Code ergänzt. Ziel der Entwicklung war es, unnötige Komplexität zu vermeiden und ein einfach nutzbares sowie übersichtliches System bereitzustellen.&lt;br /&gt;
&lt;br /&gt;
Das System unterstützt eine Vielzahl von Prozessorarchitekturen, darunter:&lt;br /&gt;
* Mikrocontroller mit ARM7-Architektur&lt;br /&gt;
* [[Atmel]] AVR32&lt;br /&gt;
* STM32 mit 32-bit ARM Cortex-M3&lt;br /&gt;
* [[Xilinx]] PowerPC PPC405&lt;br /&gt;
* Raspberry Pi&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus kann Rodos auch als Gastsystem auf andere Betriebssysteme aufsetzen:&lt;br /&gt;
* Linux&lt;br /&gt;
* FreeRTOS&lt;br /&gt;
* RTEMS&lt;br /&gt;
* Windows&lt;br /&gt;
* TinyOS&lt;br /&gt;
&lt;br /&gt;
== Merkmale ==&lt;br /&gt;
Rodos unterstützt die für Echtzeitsysteme typischen Features wie [[Thread (Informatik)|Threads]] und [[Semaphor (Informatik)|Semaphoren]] und bietet darüber hinaus eine Reihe weiterer entscheidender Funktionen. Dazu gehören ein [[Objektorientierung|objektorientiert]]es [[C++]]-Interface, das die Entwicklung erleichtert, sowie ein schnelles [[Booten]], das insbesondere für zeitkritische Anwendungen von Bedeutung ist. Das System setzt auf prioritätenbasiertes, [[Multitasking#Präemptives Multitasking|präemptives Multitasking]] und ein umfassendes Zeitmanagement, das als zentraler Aspekt des Betriebssystems dient. Zudem ermöglicht Rodos eine Thread-sichere Kommunikation und Synchronisation sowie eine effiziente Verteilung von Ereignissen. Dank dieser Eigenschaften ist es möglich, mit Rodos plattformunabhängige Echtzeitanwendungen zu entwickeln, die sowohl flexibel als auch zuverlässig sind.&lt;br /&gt;
&lt;br /&gt;
Neben der Raumfahrt wird Rodos auch in der Forschung und Entwicklung für autonome Systeme, Robotik und industrielle Automatisierung verwendet. Das Betriebssystem eignet sich ideal für Anwendungen, bei denen eine hohe Fehlertoleranz und Echtzeitfähigkeit erforderlich sind. Rodos ist als Open-Source-Projekt verfügbar, was es Entwicklern und Forschern ermöglicht, das System flexibel anzupassen und weiterzuentwickeln.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Hallo Welt ===&lt;br /&gt;
Das Standard-Beispiel-Programm [[Hallo-Welt-Programm|Hallo Welt]] sieht in Rodos wie folgt aus:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;rodos.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class HelloWorld : public StaticThread&amp;lt;&amp;gt; {&lt;br /&gt;
  void run(){&lt;br /&gt;
    PRINTF(&amp;quot;Hello World!\n&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
} helloworld;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die [[Klasse (Objektorientierung)|Klasse]] Thread wird in Rodos durch eine spezielle run-Methode erweitert. Diese Methode kann die [[Zeichenkette]] „Hello World!“ über die Funktion PRINTF ausgeben. Um eine Rodos-Software zu entwickeln, benötigt der Nutzer lediglich die [[Header-Datei]] rodos.h, die alle notwendigen Bestandteile einbindet.&lt;br /&gt;
&lt;br /&gt;
=== Threads ===&lt;br /&gt;
Rodos verwendet ein &amp;#039;&amp;#039;fair priority controlled preemptive [[Prozess-Scheduler|scheduling]]&amp;#039;&amp;#039;. Dabei wird stets der [[Thread (Informatik)|Thread]] mit der höchsten Priorität ausgeführt, während laufende Threads mit niedrigerer Priorität pausiert werden ([[Multitasking#Präemptives Multitasking|präemptives Multitasking]]). Haben mehrere Threads dieselbe Priorität, werden sie nacheinander in festen Zeitscheiben ausgeführt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;rodos.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class HighPriorityThread: public StaticThread&amp;lt;&amp;gt; {&lt;br /&gt;
public:&lt;br /&gt;
  HighPriorityThread() : StaticThread(&amp;quot;HiPriority&amp;quot;, 25) {&lt;br /&gt;
  }&lt;br /&gt;
  void run() {&lt;br /&gt;
    while(1) {&lt;br /&gt;
      PRINTF(&amp;quot;*&amp;quot;);&lt;br /&gt;
      suspendCallerUntil(NOW() + 1*SECONDS);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
} highprio;&lt;br /&gt;
&lt;br /&gt;
class LowPriorityThread: public StaticThread&amp;lt;&amp;gt; {&lt;br /&gt;
public:&lt;br /&gt;
  LowPriorityThread() : StaticThread(&amp;quot;LowPriority&amp;quot;, 10) {&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void run() {&lt;br /&gt;
    while(1) {&lt;br /&gt;
         PRINTF(&amp;quot;.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
} lowprio;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Thread &amp;#039;&amp;#039;LowPriorityThread&amp;#039;&amp;#039; gibt kontinuierlich das Zeichen „.“ aus, wird jedoch in Sekundenintervallen vom Thread &amp;#039;&amp;#039;HighPriorityThread&amp;#039;&amp;#039; unterbrochen, der das Zeichen „*“ ausgibt.&lt;br /&gt;
&lt;br /&gt;
=== Topics ===&lt;br /&gt;
Für die Kommunikation zwischen verschiedenen Threads oder auch zwischen Systemen über Gateways nutzt Rodos sogenannte &amp;#039;&amp;#039;Topics&amp;#039;&amp;#039;. Ein &amp;#039;&amp;#039;Topic&amp;#039;&amp;#039; stellt eine Nachricht eines bestimmten Typs dar, für deren Empfang sich Threads als Empfänger (&amp;#039;&amp;#039;Subscriber&amp;#039;&amp;#039;) registrieren können. Gleichzeitig können Threads auch als Sender (&amp;#039;&amp;#039;Publisher&amp;#039;&amp;#039;) solcher Nachrichten fungieren. Dieses System ist nach dem [[Beobachter (Entwurfsmuster)|Publisher-Subscriber-Modell]] aufgebaut und ermöglicht eine effiziente und flexible Nachrichtenverarbeitung. Hier ein einfaches Beispiel mit einem &amp;#039;&amp;#039;Publisher&amp;#039;&amp;#039; und einem &amp;#039;&amp;#039;Subscriber&amp;#039;&amp;#039;, die beide das &amp;#039;&amp;#039;Topic&amp;#039;&amp;#039; &amp;#039;&amp;#039;counter1&amp;#039;&amp;#039;, welches nur einen [[Integer (Datentyp)|Long-Integer]] enthält, verwenden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;rodos.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Topic&amp;lt;long&amp;gt;    counter1(-1, &amp;quot;counter1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
class MyPublisher : public StaticThread&amp;lt;&amp;gt; {&lt;br /&gt;
public:&lt;br /&gt;
	MyPublisher() : StaticThread(&amp;quot;SenderSimple&amp;quot;) { }&lt;br /&gt;
&lt;br /&gt;
	void run () {&lt;br /&gt;
		long cnt = 0;&lt;br /&gt;
		TIME_LOOP(3*SECONDS, 3*SECONDS) {&lt;br /&gt;
			PRINTF(&amp;quot;Publish: %ld\n&amp;quot;, ++cnt);&lt;br /&gt;
			counter1.publish(cnt);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
} publisher;&lt;br /&gt;
&lt;br /&gt;
class MySubscriber : public SubscriberReceiver&amp;lt;long&amp;gt; {&lt;br /&gt;
public:&lt;br /&gt;
    MySubscriber() : SubscriberReceiver&amp;lt;long&amp;gt;(counter1) { }&lt;br /&gt;
    void put(long &amp;amp;data) {&lt;br /&gt;
        PRINTF(&amp;quot;Received: %ld\n&amp;quot;, data);&lt;br /&gt;
    }&lt;br /&gt;
}subscriber;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;Publisher-Thread&amp;#039;&amp;#039; sendet in 3-Sekunden-Intervallen einen ansteigenden Zählerstand als Nachricht, während der &amp;#039;&amp;#039;Subscriber-Thread&amp;#039;&amp;#039; den Integer empfängt und den Zählerstand direkt ausgibt.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.informatik.uni-wuerzburg.de/aerospaceinfo/forschung-und-entwicklung-prof-dr-sergio-montenegro/projekte/rodos/ Universität Würzburg – Das RODOS-Framework]&lt;br /&gt;
* [https://www.informatik.uni-wuerzburg.de/aerospaceinfo/main/projekte/rodos/rodos-vm-installation/ RODOS VM Installation]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Echtzeitbetriebssystem]]&lt;br /&gt;
[[Kategorie:Freies Betriebssystem]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Skranon</name></author>
	</entry>
</feed>