TapirTapir ist eine neue Programmiersprache zur Vereinfachung der
Systemprogrammierung.
Systemprogrammierung bezeichnet unter anderem die Programmierung
von Netzwerkprotokollen, Betriebssystemen, Middleware- und DSM-
Systemen. Diese Komponenten stellen essentielle Teile eines Systems
dar, da sie Dienste bereitstellen, auf denen andere Applikationen
aufbauen. Das Betriebssystem stellt einer Anwendung z.B. eine
Ausführungsumgebung bereit, die von der konkreten Hardware abstrahiert,
so dass die Applikation eine robuste, Hardware-unabhängige Schnittstelle
nutzen kann. Ein weiteres Beispiel für Systemprogrammierung ist ein
DSM-System. Es simuliert in einem Rechnerbündel mit verteiltem
Speicher einen gemeinsamen Adressraum und verbirgt die
Kommunikation im Rechnerbündel vor der Anwendung.
Im Vergleich zu Anwendungssoftware stellt systemnahe Software völlig
andere Anforderungen an die Programmierung. Die Leistung der einzelnen
Systemkomponenten kann sich auf alle Anwendungen und somit das
gesamte System auswirken. Deshalb muss der erzeugte Maschinen-Code
besonders effizient ausführbar sein. Fehler auf der Systemebene
beeinflussen nicht nur einzelne Anwendungen sondern können ebenfalls
das gesamte System beeinträchtigen. Systemsoftware sollte aus diesem
Grund möglichst (beweisbar) fehlerfrei sein. All diese Anforderungen
haben direkte Auswirkungen auf die verwendbaren Programmiersprachen
und den verwendeten Programmierstil:
Implementierungsdetails vor dem Programmierer. Der Programmierer
benötigt z.B. kein Wissen darüber, wie ein Methodenaufruf konkret
durchgeführt wird. Dieses Wissen ist jedoch bei der Entwicklung von
Systemsoftware erforderlich.
Regel nicht benötigt werden oder sogar unerwünscht sind. Beispielsweise
wird innerhalb eines Betriebssystems keine automatische
Speicherbereinigung oder Ausnahmebehandlung verwendet.
meist von Hochsprachen gefordert wird. Ebenso verzichtet man bei der
Erstellung von Systemsoftware zumeist auf die Benutzung externer
Bibliotheken, da viele Bibliotheken auf die Systemsoftware als Basis
angewiesen sind und somit nicht zur Verfügung stehen.
Tapir ist an existierende Hochsprachen wie C++ und Java angelehnt,
verzichtet aber auf Eigenschaften und Funktionen die ohne Bedeutung für
eine Sprache zur Systemprogrammierung sind. Beispielsweise besitzt
Tapir keine Speicherbereinigung, Ausnahmebehandlung oder
Typumwandlung. Klassen und Objekte können zwar definiert werden, eine
Vererbungsbeziehung zwischen Klassen ist aber nicht erlaubt. Das mit
Tapir spezifizierte Systemprogramm kann mit Model Checking-Techniken
bereits während der Entwicklung auf Fehler überprüft werden. Ein
Übersetzerprototyp und ein Werkzeug zum Model Checking sind bereits
implementiert. Tapir-Code ist leicht verifizierbar, da Programmteile als
Implementierungsdetails markiert werden können, die danach bei der
Verifizierung ignoriert werden. Tapir-Programme können (z.B. auf
Grafikkarten) parallel ausgeführt werden, ohne dass es zu
Verklemmungen oder ähnlichen Fehlern kommt, die üblicherweise bei
paralleler Programmierung auftreten.
Schon während sich Tapir noch in der Entwicklung befindet, wurde es
bereits verwendet, um eine Spezifikation für das DSM-Protokoll von Jackal
zu erarbeiten. Zur Erweiterung des Tapir-Sprachentwurfes wurden RDMA-
basierte DSM-Protokolle evaluiert. Die semantische Analyse von Tapir-
Programmen ist sehr speicherintensiv, da sie auf Model Checking beruht.
Um die Analyse zu beschleunigen, war es erforderlich, eine eigene, auf
sehr große Objektmengen spezialisierte, Virtuelle Maschine für Java zu
entwickeln. Die neu entwickelte, LVM genannte virtuelle Maschine zeigt
wesentlich bessere Laufzeiteigenschaften als übliche Java Virtual
Machine Implementierungen, sobald der verfügbare Hauptspeicher nicht
mehr ausreicht und das Auslagern auf den Hintergrundspeicher notwendig
wird.
| Projektleitung: Prof. Dr. Michael Philippsen
Beteiligte: PD Dr. Ronald Veldema, Dr.-Ing. Michael Klemm
Laufzeit: 1.1.2006 - 31.12.2011
Kontakt: Veldema, Ronald E-Mail: ronald.veldema@fau.de
|