Notice: Unexpected clearActionName after getActionName already called in /var/www/html/includes/context/RequestContext.php on line 338
Virtuelle Maschine – Wikipedia (Deutsch) – Lokale Kopie Zum Inhalt springen

Virtuelle Maschine

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Virtual Machine)
Datei:VirtualBox2.png
Virtuelle Maschine in VirtualBox

Als virtuelle Maschine (VM) wird in der Informatik die Software-technische Kapselung eines Rechnersystems innerhalb eines lauffähigen Rechnersystems bezeichnet. Die virtuelle Maschine bildet die Rechnerarchitektur eines real in Hardware existierenden oder eines hypothetischen Rechners nach.<ref>Hans-Jürgen Siegert, Uwe Baumgarten: Betriebssysteme. Oldenbourg, 2007, ISBN 3-486-58211-9, S. 270</ref>

Die abstrahierende Schicht zwischen realem oder Host- bzw. Wirt-Rechner, auf dem die virtuelle Maschine ausgeführt wird, und der virtuellen Maschine wird Hypervisor oder Virtual Machine Monitor genannt; ihre Implementierung erfolgt

  • rein hardwarebasiert
  • rein softwarebasiert oder
  • durch eine Kombination.

Der Hypervisor erlaubt in der Regel den Betrieb mehrerer virtueller Maschinen gleichzeitig auf einem physischen Rechner.

Virtuelle Maschinen werden direkt auf der CPU des Gastgeberrechners ausgeführt und nutzen üblicherweise deren Virtualisierungsfunktionen. Dagegen wird bei Emulatoren die Ausführung rein als Software realisiert, wodurch auch eine andere Rechnerarchitektur als die des Gastgeberrechners nachgebildet werden kann.

Typen virtueller Maschinen

Virtuelle Maschinen werden heute danach eingeteilt, in welchem Umfang sie die Funktionalität eines realen Rechners nachstellen. Systembasierte virtuelle Maschinen bilden einen Rechner so vollständig nach, dass Betriebssysteme, die für den realen Rechner entworfen wurden, sich auf der virtuellen Maschine genauso wie auf dem entsprechenden realen Rechner ausführen lassen.<ref>James E. Smith, Ravi Nair, Virtual Machines: Versatile Platforms For Systems And Processes, Morgan Kaufmann, Mai 2005, ISBN 1-55860-910-5, S. 8.</ref> Dieser Ansatz wird auch als vollständige Virtualisierung bezeichnet.<ref>{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: https://electures.informatik.uni-freiburg.de/portal/download/100/7290
       | {{#if: Vorlesung Systeme I – Kapitel 2 – Seite 2 eLecture Uni Freiburg | Vorlesung Systeme I – Kapitel 2 – Seite 2 eLecture Uni Freiburg }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: 2018-03-27 | , festgestellt im {{#invoke:DateTime|format|2018-03-27|F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: 2018-03-27 | , festgestellt im {{#invoke:DateTime|format|2018-03-27|F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://electures.informatik.uni-freiburg.de/portal/download/100/7290
      | {{#if:{{#invoke:URLutil|isWebURL|https://electures.informatik.uni-freiburg.de/portal/download/100/7290}}
          || {{#if:  ||  }} 
        }}
      | {{#if: Vorlesung Systeme I – Kapitel 2 – Seite 2 eLecture Uni Freiburg
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 2018-03-27
       | {{#if:{{#invoke:DateTime|format|2018-03-27|F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://electures.informatik.uni-freiburg.de/portal/download/100/7290 Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: 2018-03-27 | , festgestellt im {{#invoke:DateTime|format|2018-03-27|F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://electures.informatik.uni-freiburg.de/portal/download/100/7290
       | {{#if:{{#invoke:URLutil|isWebURL|https://electures.informatik.uni-freiburg.de/portal/download/100/7290}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 2018-03-27
         | {{#if:{{#invoke:DateTime|format|2018-03-27|F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://electures.informatik.uni-freiburg.de/portal/download/100/7290 }}</ref>

Er basiert im Wesentlichen auf der von Robert Goldberg gegebenen und von Gerald Popek 1972 noch enger gefassten Definition:

{{#ifeq: {{{vor}}}@@-@@{{{nach}}} | -@@-@@- | {{#if:trim|Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors.}} | {{#ifeq: {{#if:|{{{vor}}}|@#@}}{{#if:|{{{nach}}}|@#@}} | @#@@#@ | {{#ifeq: de | de | „{{#if:trim|Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors.}}“ | {{#invoke:Text|quoteUnquoted| Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors. | {{{lang}}} }} }} | {{#ifeq: {{#if:|{{{vor}}}|-}} | - | | {{{vor}}} }}{{#if:trim|Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors.}}{{ #ifeq: {{#if:|{{{nach}}}|-}} | - | | {{{nach}}} }} }} }}{{ #if: || <ref name="PopGol" /> }}

{{#if:

|

„{{{Latn}}}“{{#if: || <ref name="PopGol" /> }}

}}{{#if:

|

„{{{de}}}“{{#if: || <ref name="PopGol" /> }}

}}
{{#if: |
– <templatestyles src="Person/styles.css" />{{#if:|{{{4}}} |}}{{#if:|{{{2}}} |}}{{#if:| {{{3}}} |}}{{#if:| „{{{6}}}“ |}}{{#if:trim|{{{Autor}}}}}{{#if:| {{{5}}}|}}{{#if: | : {{#if:trim|}} }}<ref name="PopGol" />
|{{#if: 
|
{{#if:trim|}}<ref name="PopGol" />
}}
}}

{{#if: <ref name="PopGol" /> |

{{#if: {{#invoke:Text|unstrip|<ref name="PopGol" />}}

        | }} }}{{#if: Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors. | {{
   #if: Eine virtuelle Maschine ist ein effizientes, identisches und isoliertes Duplikat eines echten Prozessors. | {{#if:  |
   Vorlage:Zitat: Doppelangabe 1=Text=}}

}}| }}{{#if: | {{#if: |

   Vorlage:Zitat: Doppelangabe 2=Autor=}}

}}{{#if: | {{#if: |

   Vorlage:Zitat: Doppelangabe 3=Quelle=}}

}}{{#if: | {{#if: |

   Vorlage:Zitat: Doppelangabe Umschrift=Latn=}}

}}{{#if: | {{#if: |

   Vorlage:Zitat: Doppelangabe Sprache=lang=}}

}}{{#if: | {{#if: |

   Vorlage:Zitat: Doppelangabe Übersetzung=de=}}

}}

Beispiele für bekannte Produkte, die Virtualisierung mit Hilfe systembasierter virtueller Maschinen realisieren, sind Oracles VirtualBox oder VMwares vSphere.

Im Gegensatz dazu erlauben es prozessbasierte virtuelle Maschinen lediglich, einzelne Programme abstrahiert von der Ausführungsumgebung einer Rechnerarchitektur auszuführen, indem sie eine darauf aufbauende Laufzeitumgebung bereitstellen.<ref>James E. Smith, Ravi Nair, Virtual Machines: Versatile Platforms For Systems And Processes. Morgan Kaufmann, 2005, ISBN 1-55860-910-5, S. 10</ref> Meist werden solche virtuellen Maschinen auf mehreren Rechnerarchitekturen bereitgestellt, wodurch die Anwendung dann auf all diesen Plattformen ohne Änderung ausgeführt werden kann. Bekannte Beispiele solcher Umgebungen mit entsprechenden virtuellen Maschinen sind die Java-Laufzeitumgebung als Teil der Java-Plattform und die Common Language Runtime als Teil des .NET Frameworks.

{{#invoke:Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}} Systembasierte virtuelle Maschinen

Geschichte

{{#if: Hypervisor#Historie_Virtualisierung|{{#ifexist:Hypervisor#Historie_Virtualisierung|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

Der Wunsch, mehrere Betriebssysteme gleichzeitig auf einem Rechner betreiben zu können, war die ursprüngliche Motivation zur Einführung systembasierter virtueller Maschinen. IBMs 1966 erstmals veröffentlichte CP/CMS war das erste Betriebssystem, welches vollständige Virtualisierung unterstützte und es dadurch mehreren Benutzern erlaubte, gleichzeitig auf einem physischen Rechner jeweils ein eigenes Einzelbenutzerbetriebssystem unabhängig zu nutzen.<ref>R. J. Creasy: The origin of the VM/370 time-sharing system. (PDF; 900 kB) In: IBM Journal of Research & Development, Vol. 25, No. 5 (September 1981), S. 483–490 – perspective on CP/CMS and VM history by the CP-40 project lead, also a CTSS author</ref>

In ihrem Artikel {{#invoke:Vorlage:lang|flat}} von 1974 legten Gerald J. Popek and Robert P. Goldberg die formalen Grundlagen und stellen die grundlegenden Anforderungen an eine Architektur dar, um virtuelle Maschinen mit Hilfe eines Hypervisors zu unterstützen.<ref name="PopGol">{{#invoke:Vorlage:Literatur|f}}{{#if:

       | {{#if: Vorlage:Cite book/ParamBool
               | Vorlage:Toter Link/archivebot
               | Vorlage:Webarchiv/archiv-bot
         }}
  }}{{#invoke:TemplatePar|check
   |all    = title=
   |opt    = vauthors= author= author1= authorlink= author-link= author-link1= author1-link= author2= author3= author4= author5= author6= author7= author8= author9= editor= last= first= last1= first1= last2= first2= last3= first3= last4= first4= last5= first5= last6= first6= last7= first7= last8= first8= last9= first9= last10= first10= last11= first11= last12= first12= last13= first13= last14= first14= last15= first15= others= script-title= trans-title= date= year= volume= issue= number= series= page= pages= at= issn= arxiv= bibcode= doi= pmid= pmc= jstor= oclc= id= url= url-status= format= access-date= archive-date= archive-url= archivebot= offline= location= publisher= language= quote= work= journal= newspaper= magazine= periodical=  name-list-style= url-access= doi-access= display-authors= via= s2cid= mr= type= citeseerx=  accessdate= archivedate= archiveurl= coauthors= month= day= last16= first16= last17= first17= last18= first18= last19= first19= last20= first20= last21= first21= last22= first22= last23= first23= last24= first24= last25= first25= last26= first26= last27= first27= last28= first28= last29= first29= last30= first30= last31= first31=
   |cat      = Wikipedia:Vorlagenfehler/Vorlage:Cite journal
   |errNS    = 0
   |template = Vorlage:Cite journal
   |format   = 
   |preview  = 1
  }}Vorlage:Cite book/URL{{#if:  | Vorlage:Cite book/Meldung }}{{#if:        | Vorlage:Cite book/Meldung }}{{#if: Communications of the ACM
     || Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
        | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
       | Vorlage:Cite book/Meldung
  }}{{#if: Vorlage:Cite book/ParamBool
     | Vorlage:Cite book/Meldung
  }}Vorlage:Cite book/Meldung2{{#ifexpr: 0{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}}{{#ifeq:Gerald J. Popek, Robert P. Goldberg|^^||+1}}{{#ifeq:^^|^^||+1}} > 1
    | Vorlage:Cite book/Meldung
  }}</ref>

Vor- und Nachteile des Einsatzes systembasierter virtueller Maschinen

Der Einsatz systembasierter virtueller Maschinen bietet gegenüber der direkten Ausführung von Betriebssystemen auf dem Rechner einige Vorteile:

Mehrere Betriebssysteme gleichzeitig
Unterschiedliche Betriebssysteme können gleichzeitig auf der gleichen physischen Maschine betrieben werden. Dadurch können Ressourcen des physischen Rechners (z. B. der Prozessor) besser ausgenutzt werden, da mehrere Betriebssysteme sich diese teilen können. Auch können unterschiedliche Betriebssystemversionen oder Systeme von unterschiedlichen Betriebssystemherstellern parallel betrieben werden.
Unterstützung unterschiedlicher Instruktionssätze
Die virtuelle Maschine kann eine Befehlssatzarchitektur unterstützen, die von der physischen Maschine abweicht. Dadurch können Betriebssysteme ausgeführt werden, die auf der realen Hardware gar nicht lauffähig wären.
Erhöhte Sicherheit
Virtuelle Maschinen können zwar ebenso von Schadprogrammen befallen werden. In diesem Fall kann die virtuelle Maschine jedoch meist gelöscht und neu aufgesetzt werden, ohne dass der physische Computer dahinter mit langfristigen Schäden zu kämpfen hat.
Günstigerer und vereinfachter Betrieb
Insbesondere in Rechenzentren müssen sehr viele Systeme parallel betrieben werden. Durch den Einsatz von virtuellen Maschinen muss nicht für jedes System eigene Hardware bereitgestellt werden, sondern unterschiedliche Systeme teilen sich eine sehr leistungsfähige Plattform. Da der Betrieb einer sehr leistungsfähigen Plattform in der Regel wirtschaftlicher ist als der Betrieb vieler kleinerer Plattformen mit der (insgesamt) gleichen Leistung, bietet sich der Ansatz der Virtualisierung für Rechenzentren (siehe auch Rezentralisierung) an.

Allerdings „erkauft“ man sich diese Vorteile auch mit einigen Nachteilen, die sich gegenüber direkter Ausführung des Betriebssystems auf dem Rechner ergeben:

Effizienzverlust
Eine virtuelle Maschine ist weniger effizient als die reale Maschine, da ein Teil der Leistungsfähigkeit für den Betrieb des Hypervisors (zur Verwaltung der virtuellen Maschinen) verwendet werden muss.
Gegenseitige Beeinflussung gleichzeitig betriebener virtueller Maschinen
Wenn mehrere virtuelle Maschinen parallel betrieben werden, ist zwar durch den Hypervisor eine Trennung sichergestellt, jedoch teilen sie sich die (beschränkten) Ressourcen des physischen Rechners. Da das Lastverhalten anderer virtueller Maschinen für eine einzelne VM nicht vorhersehbar und beeinflussbar ist, können Lastspitzen zu instabiler bzw. nicht vorhersagbarer Leistungsfähigkeit einzelner oder aller gleichzeitig betriebener virtuellen Maschinen führen, wenn der Hypervisor hier nicht gesonderte Vorkehrungen trifft (z. B. durch Zusicherung von Ressourcen für einzelne VMs).
Neuartige Herausforderungen bzgl. Sicherheit und Datenschutz
Schutzmechanismen gegen Viren und Malware wurden bisher auf Betriebssystemebene umgesetzt und schützten so den Benutzer. Durch den Einsatz von Hypervisoren entsteht eine neue Angriffsmöglichkeit, nämlich der Hypervisor selbst, um Schadcode auf dem Rechner auszuführen. Daher sind neuartige Schutzmechanismen über die bisher bekannten hinaus erforderlich.
Neue Herausforderungen hinsichtlich der Lizenzierung von Betriebssystemen
Während die Lizenzierung eines Betriebssystems früher an einen jeweiligen physischen Rechner mit seinen Eigenschaften (z. B. Anzahl Prozessoren, Speichergröße) gebunden war, ist das durch die Virtualisierung nicht mehr ohne weiteres möglich. Es muss kein Rechner mehr mit der tatsächlichen Speichergröße oder Anzahl Prozessoren existieren, sondern er existiert ggf. nur virtuell. Dies zwingt Hersteller und Kunden zur Auseinandersetzung mit teils recht komplizierten Lizenzmodellen. Bestimmte Hersteller (z. B. Apple) erlauben auch gar keine Virtualisierung ihrer Betriebssysteme. Die Rechtsgültigkeit dieses Verbotes ist allerdings in Deutschland umstritten.

Methoden

Hypervisor

{{#if: Hypervisor|{{#ifexist:Hypervisor|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

Hardware-Emulation

{{#if: Emulator|{{#ifexist:Emulator|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

Hardware-Virtualisierung

{{#if: Virtualisierung (Informatik)#Systemvirtualisierung auf Hardwareebene|{{#ifexist:Virtualisierung (Informatik)#Systemvirtualisierung auf Hardwareebene|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

Paravirtualisierung

{{#if: Paravirtualisierung|{{#ifexist:Paravirtualisierung|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

Anwendungsszenarien

{{#invoke:Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}} Prozessbasierte virtuelle Maschinen

Geschichte

Die Geschichte der prozessbasierten virtuellen Maschinen begann mit dem bahnbrechenden Aufsatz {{#invoke:Vorlage:lang|flat}} von W. Wellbourne (1983) und der vorausgegangenen Arbeit {{#invoke:Vorlage:lang|flat}} von P. Nelson (1979).<ref>Ferenc Bator: <templatestyles src="Webarchiv/styles.css" />{{#if:20140425120347

      | {{#ifeq: 20140425120347 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Virtuelle Maschinen | {{#invoke:WLink|getEscapedTitle|Virtuelle Maschinen}} | {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20140425120347}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Virtuelle Maschinen | {{#invoke:WLink|getEscapedTitle|Virtuelle Maschinen}} | {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  |  |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20140425120347}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Virtuelle Maschinen | {{#invoke:WLink|getEscapedTitle|Virtuelle Maschinen}} | {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  |  |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Virtuelle Maschinen | {{#invoke:WLink|getEscapedTitle|Virtuelle Maschinen}} | {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  |  |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Virtuelle Maschinen | {{#invoke:WLink|getEscapedTitle|Virtuelle Maschinen}} | {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm}} }} (Memento{{#if: {{#if:  |  |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Virtuelle Maschinen | {{#invoke:WLink|getEscapedTitle|Virtuelle Maschinen}} | {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20140425120347|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.devmatic-it.de/articles/process_vm}}
    || {{#if:  || }}
  }}{{#if: Virtuelle Maschinen
    | {{#if: {{#invoke:WLink|isBracketedLink|Virtuelle Maschinen}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.devmatic-it.de/articles/process_vm%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.devmatic-it.de/articles/process_vm%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.devmatic-it.de/articles/process_vm }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} 2005</ref> Es geht hier um die Lösung des Problems, Anwendungscode, der für eine Rechnerarchitektur entwickelt wurde, ohne Änderungen auf einer anderen Rechnerarchitektur auszuführen. Insbesondere um den Portierungsaufwand für Anwendungen von einer Architektur zu anderen (z. B. neuen Rechnerarchitekturen) gering zu halten.

Vor- und Nachteil des Einsatzes prozessbasierter virtueller Maschinen

Der Einsatz von prozessbasierten virtuellen Maschinen bietet folgende Vorteile:

Der Einsatz von prozessbasierten virtuellen Maschinen hat folgende Nachteile:

  • Die Ausführung eines portablen Programms auf einer portablen virtuellen Maschine ist langsamer als die native Ausführung eines Programms, das speziell für die Zielumgebung übersetzt wurde.
  • Bei Verwendung eines Interpreters ergeben sich zusätzliche Indirektionen, was ineffizienter ist als direkte Ausführung.
  • Dynamische Übersetzung zur Laufzeit (JIT-Compiler) löst zwar die meisten Indirektionen auf und sorgt für großteils direkte Ausführung, jedoch erfordert die Übersetzung selbst zusätzlichen Aufwand, bis der Code direkt ausgeführt werden kann (jedoch nur im Moment der Übersetzung, nicht mehr bei späteren Durchläufen).

Diese Nachteile können durch geeignete (z. B. dynamische) Optimierung verringert werden. Eine weitere Möglichkeit ist die automatische Kompilierung mittels Ahead-of-time-Compiler unmittelbar vor der Ausführung. Damit wird das Backend eines hochoptimierenden, maschinenorientierten Compilers unmittelbar auf dem Anwendersystem ausgeführt. Dadurch kann der Compiler noch spezifischere Optimierungen für das System des Anwenders vornehmen als es bei einem vorkompilierten Programm ohne spezielle Optimierungen für das System bzw. den Prozessor des Anwenders möglich wäre.

Anwendungsszenarien

Siehe auch

Literatur

  • Iain D. Craig: Virtual Machines. Springer, 2006, ISBN 1-85233-969-1, 269 Seiten

Weblinks

Einzelnachweise

<references />