Laufzeitsystem

Im Computerprogrammierung, a Laufzeitsystem oder Laufzeitumgebung ist ein Subsystem, das sowohl im Computer, auf dem ein Programm erstellt wird, als auch in den Computern, auf denen das Programm ausgeführt werden soll, vorhanden ist. Der Name kommt von der Zeit kompilieren und Laufzeit Teilung von kompilierte Sprachen, was in ähnlicher Weise die Computerprozesse unterscheidet, die an der Erstellung eines Programms (Zusammenstellung) und seiner Ausführung in der Zielmaschine (der Laufzeit) beteiligt sind.[1]

Die meisten Programmiersprachen verfügen über eine Form von Laufzeitsystemen, die eine Umgebung bietet, in der Programme ausgeführt werden. Diese Umgebung kann eine Reihe von Problemen enthalten, einschließlich der Management der Anwendung Erinnerung, wie das Programm zugreift Variablen, Mechanismen zum Übergeben von Parametern zwischen Verfahren, Schnittstelle mit dem Betriebssystem, und ansonsten. Das Compiler Stellt Annahmen ab, abhängig vom spezifischen Laufzeitsystem, um den korrekten Code zu generieren. In der Regel ist das Laufzeitsystem für die Einrichtung und Verwaltung der Verantwortung der Laufzeit verantwortlich Stapel und Haufenund kann Funktionen wie z. Müllsammlung, Themen oder andere dynamisch Merkmale in die Sprache.[1]

Überblick

Jede Programmiersprache gibt ein Ausführungsmodell an, und viele implementieren zumindest einen Teil dieses Modells in einem Laufzeitsystem. Eine mögliche Definition des Laufzeitsystemverhaltens ist unter anderem "jedes Verhalten, das nicht direkt auf das Programm selbst zurückzuführen ist". Diese Definition beinhaltet das Einlegen von Parametern in den Stapel vor Funktionsaufrufen, parallele Ausführung verwandter Verhaltensweisen und Festplatten I/o.

Nach dieser Definition hat im Wesentlichen jede Sprache ein Laufzeitsystem, einschließlich kompilierte Sprachen, interpretierte Sprachen, und Eingebettete domänenspezifische Sprachen. Eben API-Nocken eigenständige Ausführungsmodelle, wie z. Phreads (Posix Themen), haben Sie ein Laufzeitsystem, das das Verhalten des Ausführungsmodells implementiert.

Die meisten wissenschaftlichen Arbeiten zu Laufzeitsystemen konzentrieren sich auf die Implementierungsdetails paralleler Laufzeitsysteme. Ein bemerkenswertes Beispiel für ein paralleles Laufzeitsystem ist Cilk, ein beliebtes parallele Programmiermodell.[2] Das Proto-Runtime-Toolkit wurde erstellt, um die Erstellung paralleler Laufzeitsysteme zu vereinfachen.[3]

Zusätzlich zum Verhalten des Ausführungsmodells kann ein Laufzeitsystem auch Unterstützungsdienste wie z. B. durchführen Geben Sie die Überprüfung ein, Debuggen, oder Codegenerierung und Optimierung.[4]

Beziehung zu Laufzeitumgebungen

Das Laufzeitsystem ist auch das Gateway, über das ein laufendes Programm mit dem interagiert Laufzeitumgebung. Die Laufzeitumgebung umfasst nicht nur zugängliche staatliche Werte, sondern auch aktive Einheiten, mit denen das Programm während der Ausführung interagieren kann. Zum Beispiel, Umgebungsvariablen sind Funktionen vieler Betriebssysteme und sind Teil der Laufzeitumgebung; Ein laufendes Programm kann über das Laufzeitsystem auf sie zugreifen. Ebenso sind Hardware -Geräte wie Festplatten oder DVD -Laufwerke aktive Einheiten, mit denen ein Programm über ein Laufzeitsystem interagieren kann.

Eine einzigartige Anwendung einer Laufzeitumgebung ist die Verwendung in einem Betriebssystem, das nur erlaubt es zu laufen. Mit anderen Worten, vom Start bis zum Einschalten ist das gesamte Betriebssystem nur den Anwendungen (n) in dieser Laufzeitumgebung gewidmet. Jeder andere Code, der versucht, auszuführen, oder irgendwelche Fehler in den Anwendungen (en) wird die Laufzeitumgebung brechen. Durch das Brechen der Laufzeitumgebung wird das Betriebssystem abgebaut, die gesamte Verarbeitung gestoppt und einen Neustart erforderlich. Wenn der Start aus schreibgeschütztem Speicher stammt, wird ein extrem sicheres, einfaches Single-Mission-System erstellt.

Beispiele für solche direkt gebündelten Laufzeitsysteme umfassen:

Beispiele

Das Laufzeitsystem der C Sprache ist ein bestimmter Satz von Anweisungen, die vom Compiler in das ausführbare Bild eingefügt wurden. Diese Anweisungen verwalten unter anderem den Prozessstapel, erstellen Platz für lokale Variablen und kopieren die Funktionsaufrufparameter oben im Stapel.

Es gibt oft keine klaren Kriterien, um festzustellen, welche Sprachverhalten Teil des Laufzeitsystems selbst sind und welche durch ein bestimmtes Quellprogramm bestimmt werden können. In C ist beispielsweise das Einrichten des Stapels Teil des Laufzeitsystems. Es wird nicht durch die Semantik eines individuellen Programms bestimmt, da das Verhalten global invariant ist: Es hält alle Hinrichtungen. Dieses systematische Verhalten implementiert die Ausführungsmodell der Sprache im Gegensatz zur Implementierung Semantik des jeweiligen Programms (in dem der Text direkt in Code übersetzt wird, der die Ergebnisse berechnet).

Diese Trennung zwischen der Semantik eines bestimmten Programms und der Laufzeitumgebung spiegelt sich in den verschiedenen Methoden zum Kompilieren eines Programms wider: das Kompilieren von Quellcode zu einem Objektdatei Das enthält alle Funktionen, in denen ein ganzes Programm für eine ausführbare Binärdatei zusammengestellt wird. Die Objektdatei enthält nur Assembly -Code, die für die enthaltenen Funktionen relevant sind, während die ausführbare Binärdatei zusätzlichen Code enthält, die die Laufzeitumgebung implementiert. In der Objektdatei fehlt möglicherweise Informationen aus der Laufzeitumgebung, die von durchgehoben wird Verknüpfung. Andererseits hängt der Code in der Objektdatei immer noch von Annahmen im Laufzeitsystem ab. Beispielsweise kann eine Funktion Parameter aus einem bestimmten Register- oder Stack -Ort lesen, abhängig von der Konvention anrufen verwendet von der Laufzeitumgebung.

Ein weiteres Beispiel ist der Fall einer Verwendung eines Programmierschnittstelle (API) mit einem Laufzeitsystem zu interagieren. Die Anrufe zu dieser API sehen genauso aus wie Anrufe zu einem regulären SoftwarebibliothekIrgendwann während des Aufrufs ändert sich das Ausführungsmodell. Das Laufzeitsystem implementiert ein Ausführungsmodell, das sich von der der Sprache unterscheidet, in der die Bibliothek in Bezug auf die Bibliothek geschrieben ist. Eine Person, die den Code einer normalen Bibliothek liest Verhalten der API -Aufruf nur durch das Wissen, dass die Sprache, in der der Anruf geschrieben wurde System. Beispielsweise ist die Trap -Anweisung eine Methode zum Umschalten von Ausführungsmodellen. Dieser Unterschied unterscheidet ein API-infiziertes Ausführungsmodell wie Pthreads von einer üblichen Softwarebibliothek. Beide Pthreads -Anrufe und Software -Bibliotheksaufrufe werden über eine API aufgerufen, aber das Verhalten von PThreads kann nicht in Bezug auf die Sprache des Anrufs verstanden werden. Pthreads -Anrufe bringen vielmehr ein Außenausführungsmodell, das vom PThreads -Laufzeitsystem implementiert wird (dieses Laufzeitsystem ist häufig der OS -Kernel).

Als extremes Beispiel kann die physische CPU selbst als Implementierung des Laufzeitsystems einer bestimmten Montagesprache angesehen werden. In dieser Ansicht wird das Ausführungsmodell von der physischen CPU- und Speichersysteme implementiert. Als Analogie werden Laufzeitsysteme für Sprachen auf höherer Ebene selbst unter Verwendung einiger anderer Sprachen implementiert. Dies schafft eine Hierarchie von Laufzeitsystemen, wobei die CPU selbst - oder tatsächlich seine Logik am Mikrocode Schicht oder unten-Aktivieren Sie das Laufzeitsystem mit niedrigster Ebene.

Erweiterte Funktionen

Einige kompilierte oder interpretierte Sprachen bieten eine Schnittstelle, mit der Anwendungscode direkt mit dem Laufzeitsystem interagieren kann. Ein Beispiel ist das Faden Klasse in der Java -Sprache. Mit der Klasse können Code (der von einem Thread animiert wird) Dinge wie Start und Stoppen anderer Threads. Normalerweise Kernaspekte des Verhaltens einer Sprache wie z. Aufgabenplanung und Resourcenmanagement sind auf diese Weise nicht zugänglich.

Übergeordnete Verhaltensweisen, die von einem Laufzeitsystem implementiert werden, können Aufgaben wie das Zeichnen von Text auf dem Bildschirm oder das Erstellen einer Internetverbindung enthalten. Es ist oft der Fall, dass Betriebssysteme Stellen Sie auch diese Art von Verhaltensweisen an, und wenn verfügbar, wird das Laufzeitsystem als implementiert Abstraktionsschicht Dies übersetzt die Aufruf des Laufzeitsystems in einen Aufruf des Betriebssystems. Dies verbirgt die Komplexität oder Variationen der von verschiedenen Betriebssystemen angebotenen Dienste. Dies impliziert auch, dass der OS -Kernel selbst als Laufzeitsystem angesehen werden kann und dass der Satz von Betriebssystemen, die OS -Verhaltensweisen aufrufen, als Interaktionen mit einem Laufzeitsystem angesehen werden können.

In der Grenze kann das Laufzeitsystem Dienste wie a anbieten P-Code-Maschine oder virtuelle Maschine, das versteckt sogar die Prozessor Befehlssatz. Dies ist der Ansatz, gefolgt von vielen interpretierte Sprachen wie zum Beispiel Awk, und einige Sprachen mögen Java, die in einige maschinenunabhängige zusammengestellt werden sollen Zwischendarstellung Code (wie z. Bytecode). Diese Anordnung vereinfacht die Aufgabe der Sprachimplementierung und ihre Anpassung an verschiedene Maschinen und verbessert die Effizienz hoch entwickelter Sprachmerkmale wie z. Betrachtung. Es ermöglicht auch, dasselbe Programm ohne expliziten Neukompilienschritt auf jeder Maschine ausgeführt wird, eine Funktion, die seit der Verbreitung von der Verbreitung sehr wichtig geworden ist Weltweites Netz. Um die Ausführung zu beschleunigen, gibt es einige Laufzeitsysteme Just-in-Time-Zusammenstellung zum Maschinencode.

Ein moderner Aspekt von Laufzeitsystemen ist das Verhalten des parallele Ausführungsverhaltens, wie das Verhalten von Mutex -Konstrukten in Phreads und parallele Abschnitt konstruiert in OpenMP. Ein Laufzeitsystem mit einem solchen parallelen Ausführungsverhalten kann sein modularisiert Nach dem Proto-Runtime-Ansatz.

Geschichte

Bemerkenswerte frühe Beispiele für Laufzeitsysteme sind die Dolmetscher für BASIC und Lispeln. Diese Umgebungen enthielten auch a Müllsammler. Weiter ist ein frühes Beispiel für eine Sprache, die in den Zwischendarstellungscode kompiliert werden soll; Sein Laufzeitsystem war eine virtuelle Maschine, die diesen Code interpretierte. Ein weiteres beliebtes, wenn theoretisch, Beispiel ist Donald Knuth's MISCHEN Computer.

Im C Und spätere Sprachen, die die dynamische Speicherzuweisung unterstützten, enthielt das Laufzeitsystem auch eine Bibliothek, die den Speicherpool des Programms verwaltete.

In dem objektorientierte ProgrammiersprachenDas Laufzeitsystem war häufig auch für dynamische Überprüfung und Auflösungsmethodenreferenzen verantwortlich.

Siehe auch

Verweise

  1. ^ a b Aho, Alfred V.; Lam, Monica Sin-Ling; Sethi, Ravi; Ullman, Jeffrey David (2007). Compiler: Prinzipien, Techniken und Werkzeuge (2. Aufl.).Boston, MA, USA: Pearson Ausbildung. p.427. ISBN 978-0-321-48681-3. Der Compiler muss mit dem Betriebssystem und anderen Systemsoftware zusammenarbeiten, um diese Abstraktionen auf der Zielmaschine zu unterstützen.
  2. ^ Blumofe, Robert David; JOERG, CHRISTOPHER F.; Kuszmaul, Bradley C.; Leiserson, Charles E.; Randall, Keith H.; Zhou, Yuli (August 1995). "Cilk: Ein effizientes Multithread -Laufzeitsystem". PPOPP '95: Verfahren des fünften ACM -Sigplan -Symposiums über Prinzipien und Praxis der parallelen Programmierung. Verband für Rechenmaschinen (ACM): 207–216. doi:10.1145/209936.209958. S2CID 221936412. Archiviert vom Original am 2020-02-11. Abgerufen 2020-01-11.
  3. ^ Open Source Research Institute (2011). "Willkommen zur Proto-Runtime-Toolkit-Homepage". Das Proto-Runtime Toolkit (PRT). Archiviert vom Original am 2020-02-11. Abgerufen 2020-01-11.
  4. ^ Appel Andrew Wilson (Mai 1989). "Ein Laufzeitsystem" (PDF). Princeton Universität. Archiviert von das Original (PDF) Am 2013-12-30. Abgerufen 2013-12-30.
  5. ^ "Schauen Sie, was neu in der CP/M Applications Library für das IBM PC ist - Zeitsparungsangebot - erhalten Sie gleichzeitig CP/M kostenlos." (PDF) (Produktflyer). Pacific Grove, Kalifornien, USA: Digital Research, Inc. 1983. Archiviert (PDF) vom Original am 2020-02-11. Abgerufen 2020-02-11. […] Speedstart erleichtert unsere Software. Die gesamte Software in der CP/M -Anwendungsbibliothek hat die neue Speedart -Version der CP/m Betriebssystem eingebettet direkt in die Programmdiskette. Alles, was Sie tun müssen, um diese Anwendungen zu verwenden, ist, die Festplatte in Ihre zu bringen IBM PCSchalten Sie das System ein und Sie sind bereit zu gehen. Dadurch müssen ein separates Betriebssystem geladen, die Datenträger geändert und das Anwendungsprogramm gestartet werden. SpeedStart-Software aus der CP/M-Anwendungsbibliothek auch: […] bietet Ihnen eine kostenlose Laufzeitversion von CP/M […], beseitigt die Notwendigkeit, jedes neue Anwendungsprogramm […] zu installieren Digitale Forschung's leistungsfähiges 16-Bit-Betriebssystem, CP/M-86und die hochmoderne Multitasking Gleichzeitiger CP/M Betriebssystem. […]
  6. ^ "DRI Schiffe 128K -Version von Dr. Logo" (PDF). Mikronotizen - Technische Informationen zu digitalen Forschungsprodukten. Vol. 2, nein. 2. Pacific Grove, CA, USA: Digital Research, Inc. Mai 1984. p. 4. NWS-106-002. Archiviert (PDF) vom Original am 2020-02-11. Abgerufen 2020-02-11. […] Dr. Logo Erschienen zuerst im Herbst 1983 auf dem Einzelhandelsmarkt für die IBM PC und stieg auf die Spitze der Softel Hot List. Die Einzelhandelsveröffentlichung enthielt SpeedStart CP/M, eine gekürzte Version von CP/m das Stiefel automatisch Wenn das System eingeschaltet ist. […] [1]
  7. ^ Digital Research Inc. (Februar 1984). "Einführung von Software für den IBM PC mit einem Bonus von 350 USD!". BYTE (Anzeige). Vol. 9, nein. 2. S. 216–217. Abgerufen 2013-10-22. [2][3]
  8. ^ Digital Research Inc. (1984-02-07). "Einführung von Software für den IBM PC mit einem Bonus von 350 USD!". PC Magazine (Anzeige). Vol. 3, nein. 2. PC Communications Corp. S. 50–51. ISSN 0745-2500. Archiviert von das Original am 2020-02-11. Abgerufen 2020-02-11.
  9. ^ Digital Research Inc. (Dezember 1983). "Einführung von Software für den IBM PC mit einem Bonus von 350 USD!". PC Magazine (Anzeige). Vol. 2, nein. 7. PC Communications Corp. S. 306–307. ISSN 0745-2500. Archiviert von das Original am 2020-02-11. […] Einführung Speedstart -Die exklusive Last-&-Go-Software-System. Die CP/M-Anwendungsbibliothek bietet mehr als nur die beste Markenbrand IBM PC Software im Geschäft. Jede unserer Anwendungen liefert den unübertroffenen Komfort unseres exklusiven SpeedStart-Single-Disk-Systems. Speedstart ist eine spezielle Version der Mächtigen CP/M-86 Betriebssystem, das in jede unserer Software -Datenträger integriert ist. Wenn Sie bereit sind zu arbeiten, laden Sie einfach die Festplatte, schalten Sie Ihren IBM -PC ein und gehen Sie! SpeedStart eliminiert die zeitaufwändige Aufgabe beim Laden einer separaten Betriebsscheibe und dann die "Installation" der Software. Tatsächlich bringt Sie mit dem SpeedStart -System schneller und einfacher als jede andere Software, die heute verfügbar ist, schneller und einfacher. Das Beste von allem ist, es gehört Ihnen ohne zusätzliche Kosten. Darüber hinaus kann SpeedStart umgehen, um Software unter dem IBM PC-Betriebssystem der Zukunft auszuführen-das bemerkenswerte Multitasking Gleichzeitiger CP/M. […]
  10. ^ a b c Krungutter, Thomas; Barnes, Chris J. (2006-06-14) [1999-12-29]. "Gem/4". Edelsteinentwicklung. Archiviert vom Original am 2013-03-16. Abgerufen 2020-01-12. […] das Artline 2 Betriebssystem war Edelstein/4 […] Alle Änderungen an GEM/4 wurden in Zusammenarbeit mit Lee Lorenzen und Don Hiskell vorgenommen, um die Kompatibilität beizubehalten Ventura -Verlag. […]
  11. ^ Elliott, John C. (1999-05-09). "Ein Vergleich zwischen Gem und Viewmax". Seasip.info. Archiviert vom Original am 2016-11-07. Abgerufen 2016-11-07.
  12. ^ Paul, Matthias R. (1997-04-13) [1993]. DRDOS6UN.TXT - ZUSammenfassung der Dokumentierten undokumentierten fähigketten von Dr. DOS 6.0. Mpdostip (auf Deutsch) (60 ed.). Archiviert vom Original am 2016-11-07. Abgerufen 2016-11-07.
  13. ^ Paul, Matthias R. (1997-06-07) [1994]. Nwdos7un.txt - zusammenfassung der dokumentierten undokumentierten fähigketten von novell dos 7. Mpdostip (auf Deutsch) (85 ed.). Archiviert vom Original am 2016-11-07. Abgerufen 2016-11-07.
  14. ^ Georgiev, Luchezar I. (2008-11-02). "Laufzeitversion von 4DOs, BatComp und Batch -Dateiverschlüsselung". Narkive Newsgroup Archiv. Newsgroup:comp.os.msdos.4dos. Archiviert vom Original am 2020-01-11. Abgerufen 2020-01-11.

Weitere Lektüre