27 Stimmen

Welche Sprachen werden für die Programmierung von Echtzeitsystemen verwendet?

Ich habe keine nützlichen Informationen über Programmiersprachen für Echtzeitsysteme gefunden. Alles, was ich fand, war Echtzeitsysteme und Programmiersprachen: Ada 95, Echtzeit-Java und Echtzeit-C/POSIX ( einige pdf hier ), in dem es um Erweiterungen von Java und C für Echtzeitsysteme zu gehen scheint (ich habe das Buch nicht zum Lesen). Außerdem wurde das Buch 2001 veröffentlicht, und die Informationen könnten inzwischen veraltet sein.

Ich bin mir also nicht sicher, ob diese Sprachen in der realen Welt verwendet werden, oder ob Echtzeitsysteme in der realen Welt in anderen Sprachen, wie DSLs, erstellt werden.

Wenn die zweite Option auf Sie zutrifft, was sind die herausragenden Merkmale der von Ihnen verwendeten Sprache?

25voto

Keugyeol Punkte 2256

Ich bin Ingenieur für Avionik-Software. Ich konnte an mehreren Entwicklungsprojekten teilnehmen. Die Sprachen, die ich bei diesen Projekten verwendet habe, sind: C, C++, und Echtzeit-Java.

C ist großartig. C++ ist nicht so schlecht, aber C/C++ erfordern strenge Kodierungsstandards für die Sicherheitsüberlegungen wie DO-178B.

Ich denke, dass Echtzeit-Java der richtige Weg ist, aber ich sehe noch nicht viele Anwendungen für die Avionik.

Der koreanische Jet-Trainer T-50 wird über einen Missionscomputer verfügen, auf dem eine RT-Java-Anwendung läuft, die die HUD- und MFD-Anzeigen sowie alle missionskritischen Funktionen bedient.

22voto

andersoj Punkte 21576

Für die Echtzeitspezifikation für Java gibt es inzwischen mehrere kommerzielle Implementierungen:

Diese Produkte reichen von der Kompilierung in nativen Code (Aonix) über J2ME (aicas, apogee) bis hin zu vollständigem J2SE (Sun, IBM). Die meisten, wenn nicht sogar alle, wurden bisher nur in einer kleinen Anzahl von sicherheits- oder unternehmenskritischen Systemen eingesetzt, aber die Dynamik nimmt zu. Beispiele hierfür sind Modernisierung des Weltraumüberwachungsradars der Eglin AFB und die Verwendung von RTSJ durch die US-Marine in der DDG-1000/Zumwalt Zerstörer . Sun behauptet auch den Einsatz im Bereich der Verarbeitung von Finanztransaktionen.

Wenn Sie an RTSJ interessiert sind, empfehle ich Ihnen Peter Dibble's Programmierung von Echtzeit-Plattformen oder Professor Wellings' Gleichzeitige und Echtzeit-Programmierung in Java .

In diesem Zusammenhang wird auch an einem sicherheitskritischen Profil für die Programmiersprache Java gearbeitet, das als Teilmenge von RTSJ erstellt wird. Außerdem hat sich eine Expertengruppe gebildet, um eine verteilte RTSJ DRTSJ zu erforschen, aber die Arbeit ist ins Stocken geraten.

12voto

Pete Kirkham Punkte 47746

Das Buch behandelt die Verwendung von Ada 95, das Java Real-Time System und Echtzeit-POSIX-Erweiterungen (programmiert in C). Keine dieser Sprachen ist direkt eine domänenspezifische Sprache.

Ada 95 ist eine Programmiersprache, die in den späten 90er Jahren weit verbreitet war und (AFAIK) immer noch häufig für die Echtzeitprogrammierung in der Verteidigungs- und Luftfahrtindustrie verwendet wird. Es gibt mindestens eine DSL, die auf Ada aufbaut - SparkAda - das ist ein System von Anmerkungen, die Systemmerkmale für ein Programmverifikationstool beschreiben.

Dieses Interview vom 6. April 2006 zeigt einige der Klassen und Änderungen der virtuellen Maschine, die das Java Real-Time System ausmachen. Es werden keine domänenspezifischen Spracherweiterungen erwähnt. Ich bin noch nicht auf die Verwendung von Java in Echtzeitsystemen gestoßen, aber ich habe mich auch nicht mit der Art von Systemen befasst, bei denen ich dies erwarten würde (ich arbeite in der Luft- und Raumfahrtsimulation, wo C++, Fortran und gelegentlich Ada für Echtzeitsysteme in der Schleife verwendet werden).

POSIX-Echtzeit ist eine Reihe von Erweiterungen der POSIX-Betriebssystemfunktionen. Als Erweiterungen des Betriebssystems erfordern sie keine besonderen Anforderungen an die Sprache. Abgesehen davon fällt mir eine C-basierte DSL zur Beschreibung von eingebetteten Systemen ein - SystemC - aber ich habe keine Ahnung, ob es auch für die Erstellung der eingebetteten Systeme verwendet wird.

Nicht erwähnt wird in dem Buch Matlab das sich in den letzten Jahren von einem Simulationswerkzeug zu einem modellbasierten Entwicklungssystem für Echtzeitsysteme entwickelt hat. Matlab/Simulink ist im Grunde eine DSL für lineare Programmierung, Zustandsautomaten und Algorithmen. Matlab kann generieren C ou HDL für Echtzeit- und eingebettete Systeme. Es ist sehr selten, dass eine Echtzeit-Stelle in der Avionik-, EW- oder anderen Verteidigungsindustrie ausgeschrieben wird, für die keine Matlab-Erfahrung erforderlich ist. (Ich arbeite nicht für Matlab, aber man kann gar nicht genug betonen, wie allgegenwärtig es in der Branche ist).

7voto

grover Punkte 2225

Echtzeitanwendungen können in fast jeder Sprache erstellt werden. Die Umgebung (Betriebssystem, Laufzeit und Laufzeitbibliotheken) muss jedoch den Echtzeitanforderungen genügen. In den meisten Fällen bedeutet Echtzeit, dass es immer eine deterministische Zeit gibt, in der etwas passiert. Die deterministische Zeit ist in der Regel ein sehr kleiner Zeitwert im Bereich von Mikrosekunden/Millisekunden.

Echtzeitsysteme hängen ausschließlich von diesem Kriterium ab, da die Spezifikationen in der Regel etwas wie "Alle x (Zeitspanne) (etwas tun | etwas überprüfen)" besagen. Dies ist in der Regel der Fall, wenn das System mit externen Sensoren verbunden ist und lebensrettende oder lebensbedrohende Systeme steuert.

Ich arbeitete an einem Auto-Navigations- und Infotainmentsystem, das größtenteils in C/C++ entwickelt wurde, mit einem Betriebssystem, das speziell konfiguriert wurde, um die Echtzeitanforderungen für die Navigation und Medienwiedergabe zu erfüllen.

Aber es geht nicht nur um Echtzeitsysteme: In der Regel wird die Auswahl der Algorithmen im gesamten System so getroffen, dass sie deterministische Laufzeiten gemäß der Big-O-Notation haben, meist mit linearer oder konstanter Zeit. Alles andere gilt als nicht-deterministisch und ist daher für Echtzeitsysteme nicht brauchbar.

6voto

Eddie Punkte 52504

Alle Echtzeitsysteme, mit denen ich gearbeitet habe, waren überwiegend in C mit ein paar Bits Assembler geschrieben, oder hauptsächlich in Assembler mit ein paar Bits C. (Je nachdem, ob wir von den 90ern und darüber hinaus oder den 80ern sprechen). Einige der Echtzeitsysteme, mit denen ich gearbeitet habe, haben jedoch - nicht gerade DSLs - spezielle, selbst entwickelte Codegeneratoren verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X