Ausführung (Computer) - Execution (computing)

Ausführung in der Computer- und Softwaretechnik ist der Prozess, bei dem ein Computer oder eine virtuelle Maschine die Anweisungen eines Computerprogramms liest und darauf reagiert . Jede Anweisung eines Programms ist eine Beschreibung einer bestimmten Aktion, die ausgeführt werden muss, um ein bestimmtes Problem zu lösen. Die Ausführung beinhaltet, dass für jeden Befehl wiederholt einem 'Fetch-Decode-Execute'-Zyklus gefolgt wird. Da die ausführende Maschine den Anweisungen folgt, werden in Übereinstimmung mit der Semantik dieser Anweisungen spezifische Effekte erzeugt .

Programme für einen Computer können in einem Stapelprozess ohne menschliche Interaktion ausgeführt werden, oder ein Benutzer kann Befehle in einer interaktiven Sitzung eines Interpreters eingeben . In diesem Fall sind die "Befehle" einfach Programmanweisungen, deren Ausführung verkettet ist.

Der Begriff Lauf wird fast synonym verwendet. Eine verwandte Bedeutung von "ausführen" und "ausführen" bezieht sich auf die spezifische Aktion eines Benutzers, die ein Programm startet (oder startet oder aufruft ), wie in "Bitte die Anwendung ausführen".

Verfahren

Vor der Ausführung muss zuerst ein Programm geschrieben werden. Dies wird im Allgemeinen in getan Quellcode , die dann bei kompiliert wird die Kompilierung (und statisch bei verknüpften Link Zeit ) , um eine ausführbare Datei zu erzeugen. Diese ausführbare Datei wird dann meistens von einem Betriebssystem aufgerufen, das das Programm in den Speicher lädt ( Ladezeit ), möglicherweise eine dynamische Verknüpfung durchführt und dann die Ausführung beginnt, indem es die Steuerung zum Einstiegspunkt des Programms bewegt ; alle diese Schritte hängen von der binären Anwendungsschnittstelle des Betriebssystems ab. An diesem Punkt beginnt die Ausführung und das Programm tritt in die Laufzeit ein . Das Programm läuft dann bis zum Ende, entweder normale Beendigung oder ein Absturz .

Ausführbar

Ausführbarer Code , eine ausführbare Datei oder ein ausführbares Programm , manchmal einfach als ausführbar oder binär bezeichnet , ist eine Liste von Anweisungen und Daten , die einen Computer veranlassen " angezeigte Aufgaben gemäß codierten Anweisungen auszuführen " im Gegensatz zu einer Datendatei die von einem Programm interpretiert ( geparst ) werden müssen, um sinnvoll zu sein.

Die genaue Auslegung hängt von der Verwendung ab. "Anweisungen" werden traditionell als Maschinencode- Anweisungen für eine physische CPU verstanden . In manchen Kontexten kann auch eine Datei mit Skriptanweisungen (wie Bytecode ) als ausführbar angesehen werden.

Kontext der Ausführung

Der Kontext, in dem die Ausführung stattfindet, ist entscheidend. Nur sehr wenige Programme werden auf einem nackten Computer ausgeführt . Programme enthalten normalerweise implizite und explizite Annahmen über Ressourcen, die zum Zeitpunkt der Ausführung verfügbar sind. Die meisten Programme werden mit Unterstützung eines Betriebssystems und spezieller Laufzeitbibliotheken für die Quellsprache ausgeführt, die wichtige Dienste bereitstellen, die nicht direkt vom Computer selbst bereitgestellt werden. Diese unterstützende Umgebung entkoppelt beispielsweise ein Programm normalerweise von der direkten Manipulation der Computerperipherie und stellt stattdessen allgemeinere, abstraktere Dienste bereit.

Laufzeitsystem

Ein Laufzeitsystem , auch Laufzeitumgebung genannt , implementiert hauptsächlich Teile eines Ausführungsmodells . Dies ist nicht zu verwechseln mit der Laufzeit- Lebenszyklusphase eines Programms, während der das Laufzeitsystem in Betrieb ist. Wenn das Laufzeitsystem getrennt von der Laufzeitumgebung (RTE) behandelt wird, kann die erste als ein spezifischer Teil der Anwendungssoftware (IDE) definiert werden, die zum Programmieren verwendet wird , eine Software, die dem Programmierer eine bequemere Umgebung zum Ausführen von Programmen bietet bei ihrer Herstellung ( testen und ähnliches) , während die zweite (RTE) die sehr wäre Instanz eines Ausführungsmodell des entwickelten Programms angelegt wird , das selbst dann in der vorher erwähnten laufen Laufzeitsystem .

Die meisten Programmiersprachen haben eine Art Laufzeitsystem, das eine Umgebung bereitstellt, in der Programme ausgeführt werden. Diese Umgebung kann eine Reihe von Fragen , einschließlich der Adresse Management von Anwendungsspeicher , wie das Programm greift auf Variablen , Mechanismen für die Parameter zwischen Passieren Verfahren , mit dem eine Schnittstelle Betriebssystem und auf andere Weise. Der Compiler trifft abhängig vom jeweiligen Laufzeitsystem Annahmen, um korrekten Code zu generieren. Normalerweise trägt das Laufzeitsystem eine gewisse Verantwortung für das Einrichten und Verwalten des Stapels und des Heaps und kann Funktionen wie Garbage Collection , Threads oder andere in die Sprache integrierte dynamische Funktionen enthalten.

Unterrichtszyklus

Der Befehlszyklus (auch Fetch-Decode-Execute-Zyklus oder einfach der Fetch-Execute-Zyklus genannt ) ist der Zyklus, den die Zentraleinheit (CPU) vom Booten bis zum Herunterfahren des Computers durchläuft, um Befehle zu verarbeiten . Es besteht aus drei Hauptstufen: der Abrufstufe, der Dekodierungsstufe und der Ausführungsstufe.

Dies ist ein einfaches Diagramm, das die einzelnen Stufen des Abrufen-Decodieren-Ausführen-Zyklus veranschaulicht.

In einfacheren CPUs wird der Befehlszyklus sequentiell ausgeführt, wobei jeder Befehl abgearbeitet wird, bevor der nächste gestartet wird. In den meisten modernen CPUs werden die Befehlszyklen stattdessen gleichzeitig und oft parallel über eine Befehlspipeline ausgeführt : Der nächste Befehl beginnt mit der Verarbeitung, bevor der vorherige Befehl beendet ist, was möglich ist, da der Zyklus in einzelne Schritte unterteilt ist.

Dolmetscher

Ein System, das ein Programm ausführt, wird als Interpreter des Programms bezeichnet. Vereinfacht gesagt führt ein Interpreter ein Programm direkt aus. Dies kontrastiert mit einer Sprache Übersetzer , die ein Programm von einer Sprache in eine andere umwandelt , bevor sie ausgeführt wird.

Virtuelle Maschine

Eine virtuelle Maschine ( VM ) ist die Virtualisierung / Emulation eines Computersystems . Virtuelle Maschinen basieren auf Computerarchitekturen und stellen die Funktionalität eines physischen Computers bereit. Ihre Implementierungen können spezielle Hardware, Software oder eine Kombination umfassen.

Virtuelle Maschinen unterscheiden sich und sind nach ihrer Funktion organisiert, wie hier gezeigt:

Einige Emulatoren für virtuelle Maschinen, wie zum Beispiel QEMU- und Videospielkonsolen-Emulatoren , sind so konzipiert, dass sie auch verschiedene Systemarchitekturen emulieren (oder "virtuell nachahmen") und so die Ausführung von Softwareanwendungen und Betriebssystemen ermöglichen, die für eine andere CPU oder Architektur geschrieben wurden. Die Virtualisierung auf Betriebssystemebene ermöglicht es, die Ressourcen eines Computers über den Kernel zu partitionieren . Die Begriffe sind nicht allgemein austauschbar.

Verweise

Siehe auch