Rodos (operating system)

Last updated
Rodos
Rodos-logo.png
Rodos logo
Developer University of Würzburg - Informatics 8
Written in C, C++ and Assembly language
Source model Open source
Repository Rodos on GitLab
PlatformsSee #Supported Architectures
License Apache License Version 2.0
Official website Information & Download

Rodos (Realtime Onboard Dependable Operating System) is a real-time operating system for embedded systems and was designed for application domains demanding high dependability.

Contents

History

Rodos was developed at the German Aerospace Center and has its roots in the operating system BOSS. It is used for the current micro satellite program of the German Aerospace Center. The system runs on the operational satellite TET-1 and will be used for the currently developed satellite BiROS.

Rodos is further enhanced and extended at the German Aerospace Center as well as the department for aerospace information technology at the University of Würzburg.

Features

An important aspect of Rodos is its integrated real time middleware. Developing the control and payload software on the top of a middleware provides the maximum of modularity today. Applications/modules can be developed independently and it is very simple to interchange modules later without worrying about side effects, because all modules are encapsulated as Building Blocks (BB) and can be accessed and they can access other resources only by well defined interfaces.

Rodos was implemented as a software framework in C++ with an object oriented application interface (API). it is organized in layers: The lowest layer (1) is responsible for control of the embedded system hardware (HAL: Hardware abstraction layer). The next layer (2) kernel: administrates the local resources, threads and time. On top of the kernel we have the middleware (layer 3) which enables communication between BBs using a publisher subscriber multicast protocol. And on the top of the middleware the user may implement his applications (layer 4) as a distributed software network of simple BBs. The Building Blocks API on the top of the middleware is a service oriented interface. BBs interact by providing services to other BBs and using services from other BBs.

As mentioned before, the original purpose of Rodos was to control satellites. It was designed as the brain of the Avionic system and introduces for the first time (2001) the NetworkCentric concept. A networkCentric core avionics machine consists of several harmonized components which work together to implement dependable computing in a simple way. In an NetworkCentric system we have a software network of BBs and a hardware Network interconnecting vehicles (radio communication), computers inside of vehicles (buses and point to point links), intelligent devices (attached to buses) and simple devices attached to front end computers. To communicate with (node) external units, including devices and other computing units, each node provides a gateway to the network and around the network's several devices (IO Devs and computing nodes) may be attached to the system. The messages exchange provided by the middleware and gateways is asynchronous, using the publisher-subscriber protocol. No fixed communication paths are established and the system can be reconfigured easily at run-time. For instance, several replicas of the same software can run in different nodes and publish the result using the same topic, without knowing each other. A voter may subscribe to that topic and vote on the correct result. Application can migrate from node to node or even to other vehicles without having to reconfigure the communication system. The core of the middleware distributes messages only locally, but using the integrated gateways to the NetworkCentric network, messages can reach any node and application in the network. The communication in the whole system includes software applications, computing nodes and even IO devices. Publishers make messages public under a given topic. Subscribers (zero, one or more) to a given topic get all messages which are published under this topic. As mentioned before, for this communication there is no difference in which node (computing unit or device) the publisher and subscribers are running and beyond this, they may be any combination of software tasks and hardware devices! To establish a transfer path, both the publisher and the subscriber must share the same topic. A Topic is a pair consisting of a data-type and an integer representing a topic identifier. Both the software middleware and the hardware network switch (called middleware switch), interpret the same publisher/subscriber protocol. [1]

Rodos enables the user to write realtime applications for different architectures in an easy, efficient way. During the development special attention was paid to implement the various features of Rodos in a simple, nevertheless robust way. Unnecessary complexity was avoided to provide the user with a straightforward, clearly arranged system. Rodos supports typical features of realtime operatingsystems, like threads and semaphores.

Among other features Rodos offers: [2]

Examples

Hello World

The common Hello world example program looks like this in Rodos.

#include"rodos.h"classHelloWorld:publicStaticThread<>{voidrun(){PRINTF("Hello World!\n");}}helloworld;

The class Thread is extended by a custom run() procedure, which writes Hello World to the standard output with PRINTF. All Rodos components needed for application development are accessible via the rodos.h header file.

Threads

Rodos uses fair priority controlled preemptive scheduling . The thread with the highest priority is executed while running threads with a lower priority are paused (preemptive multitasking). If there are more than one threads with the same priority, each of them gets a fixed share of computing time and they are executed in turns.

Example:

#include<rodos.h>classHighPriorityThread:publicStaticThread<>{public:HighPriorityThread():StaticThread("HiPriority",25){}voidrun(){while(1){PRINTF("*");suspendCallerUntil(NOW()+1*SECONDS);}}}highprio;classLowPriorityThread:publicStaticThread<>{public:LowPriorityThread():StaticThread("LowPriority",10){}voidrun(){while(1){PRINTF(".");}}}lowprio;

The thread LowPriorityThread constantly writes the character "." and is interrupted every second by the thread HighPriorityThread, which writes the character "*".

Topics

Rodos uses so-called Topics to enable communication between threads and over gateways between different systems. A Topic represents a message of a certain kind. A thread can publish Topics as well as subscribe to a Topic to receive all messages that belong to a type of message. The message system conforms to the publish–subscribe pattern.

Here is a simple example with one publisher and one subscriber, which both use the Topiccounter1 containing only one integer value.

Example:

#include<rodos.h>Topic<long>counter1(-1,"counter1");classMyPublisher:publicStaticThread<>{public:MyPublisher():StaticThread("SenderSimple"){}voidrun(){longcnt=0;TIME_LOOP(3*SECONDS,3*SECONDS){PRINTF("Publish: %ld\n",++cnt);counter1.publish(cnt);}}}publisher;classMySubscriber:publicSubscriberReceiver<long>{public:MySubscriber():SubscriberReceiver<long>(counter1){}voidput(long&data){PRINTF("Received: %ld\n",data);}}subscriber;

The Publisher-Thread post every three seconds an ascending counter value, while the Subscriber-Thread simply displays the received integer value.

Supported architectures

Supported instruction set architectures:

Furthermore, Rodos can run as a guest on a different host operating system.

Related Research Articles

FIFO (computing and electronics) Scheduling algorithm, the first piece of data inserted into a queue is processed first

In computing and in systems theory, FIFO an acronym for first in, first out is a method for organizing the manipulation of a data structure where the oldest (first) entry, or "head" of the queue, is processed first.

OSI model Model of communication of seven abstraction layers

The Open Systems Interconnection model is a conceptual model that describes the universal standard of communication functions of a telecommunication system or computing system, without any regard to the system's underlying internal technology and specific protocol suites. Therefore, the objective is the interoperability of all diverse communication systems containing standard communication protocols, through the encapsulation and de-encapsulation of data, for all networked communication.

The Jakarta Messaging API is a Java application programming interface (API) for message-oriented middleware. It provides generic messaging models, able to handle the producer–consumer problem, that can be used to facilitate the sending and receiving of messages between software systems. Jakarta Messaging is a part of Jakarta EE and was originally defined by a specification developed at Sun Microsystems before being guided by the Java Community Process.

Grid computing is the use of widely distributed computer resources to reach a common goal. A computing grid can be thought of as a distributed system with non-interactive workloads that involve many files. Grid computing is distinguished from conventional high-performance computing systems such as cluster computing in that grid computers have each node set to perform a different task/application. Grid computers also tend to be more heterogeneous and geographically dispersed than cluster computers. Although a single grid can be dedicated to a particular application, commonly a grid is used for a variety of purposes. Grids are often constructed with general-purpose grid middleware software libraries. Grid sizes can be quite large.

Middleware in the context of distributed applications is software that provides services beyond those provided by the operating system to enable the various components of a distributed system to communicate and manage data. Middleware supports and simplifies complex distributed applications. It includes web servers, application servers, messaging and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture.

RTLinux is a hard realtime real-time operating system (RTOS) microkernel that runs the entire Linux operating system as a fully preemptive process. The hard real-time property makes it possible to control robots, data acquisition systems, manufacturing plants, and other time-sensitive instruments and machines from RTLinux applications. The design was patented. Despite the similar name, it is not related to the Real-Time Linux project of the Linux Foundation. which is for soft real-time.

In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functionality.

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.

In software architecture, publish–subscribe is a messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to specific receivers, called subscribers, but instead categorize published messages into classes without knowledge of which subscribers, if any, there may be. Similarly, subscribers express interest in one or more classes and only receive messages that are of interest, without knowledge of which publishers, if any, there are.

The Data Distribution Service (DDS) for real-time systems is an Object Management Group (OMG) machine-to-machine standard that aims to enable dependable, high-performance, interoperable, real-time, scalable data exchanges using a publish–subscribe pattern.

In software architecture, a messaging pattern is an architectural pattern which describes how two different parts of an application, or different systems connect and communicate with each other. There are many aspects to the concept of messaging which can be divided in the following categories: hardware device messaging and software data exchange. Despite the difference in the context, both categories exhibit common traits for data exchange.

Z-Wave Wireless standard for intelligent building networks

Z-Wave is a wireless communications protocol used primarily for home automation. It is a mesh network using low-energy radio waves to communicate from appliance to appliance, allowing for wireless control of residential appliances and other devices, such as lighting control, security systems, thermostats, windows, locks, swimming pools, and garage door openers. Like other protocols and systems aimed at the home and office automation market, a Z-Wave system can be controlled via the Internet from a smart phone, tablet, or computer, and locally through a smart speaker, wireless keyfob, or wall-mounted panel with a Z-Wave gateway or central control device serving as both the hub controller and portal to the outside. Z-Wave provides the application layer interoperability between home control systems of different manufacturers that are a part of its alliance. There is a growing number of interoperable Z-Wave products; over 1,700 in 2017, and over 2,600 by 2019.

An XML appliance is a special-purpose network device used to secure, manage and mediate XML traffic. They are most popularly implemented in service-oriented architectures (SOA) to control XML-based web services traffic, and increasingly in cloud-oriented computing to help enterprises integrate on premises applications with off-premises cloud-hosted applications. XML appliances are also commonly referred to as SOA appliances, SOA gateways, XML gateways, and cloud brokers. Some have also been deployed for more specific applications like Message-oriented middleware. While the originators of the product category deployed exclusively as hardware, today most XML appliances are also available as software gateways and virtual appliances for environments like VMWare.

EtherCAT is an Ethernet-based fieldbus system invented by Beckhoff Automation. The protocol is standardized in IEC 61158 and is suitable for both hard and soft real-time computing requirements in automation technology.

JGroups is a library for reliable one-to-one or one-to-many communication written in the Java language.

An Active message is a messaging object capable of performing processing on its own. It is a lightweight messaging protocol used to optimize network communications with an emphasis on reducing latency by removing software overheads associated with buffering and providing applications with direct user-level access to the network hardware. This contrasts with traditional computer-based messaging systems in which messages are passive entities with no processing power.

Computer cluster Set of computers configured in a distributed computing system

A computer cluster is a set of computers that work together so that they can be viewed as a single system. Unlike grid computers, computer clusters have each node set to perform the same task, controlled and scheduled by software.

MQTT is a lightweight, publish-subscribe network protocol that transports messages between devices. The protocol usually runs over TCP/IP, however, any network protocol that provides ordered, lossless, bi-directional connections can support MQTT. It is designed for connections with remote locations where resource constraints exist or the network bandwidth is limited. The protocol is an open OASIS standard and an ISO recommendation.

Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".

This is a list of the individual topics in Electronics, Mathematics, and Integrated Circuits that together make up the Computer Engineering field. The organization is by topic to create an effective Study Guide for this field. The contents match the full body of topics and detail information expected of a person identifying themselves as a Computer Engineering expert as laid out by the National Council of Examiners for Engineering and Surveying. It is a comprehensive list and superset of the computer engineering topics generally dealt with at any one time.

References