Als nächstes nun die Entvirtualisierung, also die Auflösung der Abstraktionshierarchie,
die Abbildung von höheren Schichten auf tieferen Schichten oder die Abbildung von
Programmen auf anderen Programmen von Maschinenbefehlen der höheren Stufe auf
Maschinenbefehle einer tieferen Stufe. Nun wir haben gesehen, dass die Schichten
der Ebene 3 bis 5 als virtuelle Maschinen verstanden werden und diese
virtuellen Maschinen müssen dann letztendlich nachher auf eine reale
Maschine, die durch diese Ebene 0 bis 2 repräsentiert sind, abgebildet werden.
Und das ist das, was man mit der Endvirtualisierung meint, diese Form der
Abbildung. Diese virtuellen Maschinen werden aufgelöst und die werden
letztendlich zu einem Maschinenprogramm verschmolzen. Das Maschinenprogramm ist
ein ausführbares Programm, das durch einen Prozessor auf der Ebene 2
zur Ausführung kommen kann. Nun wie dieser Vorgang jetzt dieser
Endvirtualisierung jetzt wirklich geschieht, hängt sehr stark von der Art
der virtuellen Maschine ab. Da verweise ich hier unten in der Fußnote auf dieser
Referenz als ergänzendes Material zu dem Stoff, den wir hier behandeln werden.
Nun der eine Punkt, der eine wichtige Schritt bei dieser Abbildung ist
einerseits die Übersetzung. Hier spricht man davon, dass eben alle Befehle des
Programms, dass der Ebene i zugeordnet sind, in eine semantisch-equivalente
Folge von Befehlen einer anderen Ebene, nämlich Ebene j, umgewandelt wird.
Normalerweise würde man sagen, die Ebene j liegt unterhalb der Ebene i, aber wie
ich schon ein bisschen verdeutlicht habe, kann man natürlich auch eine Übersetzung
vornehmen, wo man sagt, wir haben ein C++ Programm, das wird nach C übersetzt.
Da würde man sagen, beide Sprachen, die hier eine Rolle spielen, sind der
problemorientierten Programmiersprachen-Ebene nach wie vor zugeordnet.
Das heißt, es ist Ebene 5. Wir wechseln die Ebene de facto nicht, wenn wir
zumindest noch auf dieser groben konzeptionellen Stufe letztendlich
bleiben. Sehr wohl ist es eine Auflösung einer Abstraktion durch
Generierung eines Programms, dass wir dann einer anderen Ebene letztendlich
zuhornen würden. Die andere Form der Auflösung ist die Interpretation. Da
gibt es zwei harten Genesweisen. Einmal die übliche totale Interpretation, wo
wirklich alle Befehle des Programms, dass eben einer bestimmten Ebene i zugeordnet
ist, einfach direkt ausgeführt werden. Die werden alle gedeutet und diese
Deutung führt dann dazu, dass die Ausführung dieses entsprechenden Befehls
besorgt wird und in dem der Interpreter das Befehl befürchtet, in diesem
Programm macht, wird dann dieses Programm durch den Interpreter letztendlich zur
Ausführung kommen können. Es gibt dann noch die partielle
Interpretation, die eine besondere Rolle spielt. Insbesondere wird sie uns eben im
Kontext von Betriebssystemen stark beschäftigen. Da geht es eben um die
Interpretation nur der Befehle eines Programms, das wirklich nur der Ebene i
zugeordnet ist. In diesem Programm könnten auch Befehle einer anderen, einer
noch tiefer liegenden Ebene enthalten sein, etwa Ebene j, die dann aber nicht
interpretiert werden. Partiell, also nur ein Teil von Maschinenbefehlen wird eben
durch diesen Interpreter direkt ausgeführt. Das Programm selbst, was hier
denn interpretiert wird oder dessen Maschinenbefehle interpretiert werden,
kann durchaus oberhalb dieser Ebene i denn letztendlich liegen. In beiden Fällen
ist es immer ein Interpreter, der total oder partiell arbeitet und der Interpreter
denn zum Beispiel als ein Programm technisch repräsentiert ist, wo dieses
Programm eben ablaufen muss, ausgeführt werden muss. Das ist ein Programm, das
läuft dann auf der Ebene j, wo man dann typischerweise sagt, dass diese Ebene j
unterhalb dieser Ebene liegt von dem Programm, dessen Befehle man
Presenters
Zugänglich über
Offener Zugang
Dauer
00:26:13 Min
Aufnahmedatum
2020-05-09
Hochgeladen am
2020-05-10 00:26:05
Sprache
de-DE