Virtuelle Maschine?

4 Antworten

Also eine VM in dem Sinne kann so abgeschottet sein, weil der Prozessor diese Möglichkeiten bietet. Schau mal nach, was z.B. eine MMU macht und welche Prozessorfähigkeiten verwendet werden um eine VM zu machen.

Letztlich ist es eine Software, die so tut als wäre sie ein Computer. Sofern keine Schnittstellen mit dem Host-System definiert wurden (also z.B. gemeinsame Verzeichnisse) haben beide nicht viel miteinander zu tun, ausser das der Gast die Ressourcen des Host mit benutzt. Nun könnte man natürlich befürchten es gäbe da evtl einen Softwarefehler, der dann doch irgendeine Brücke ermöglicht, aber das ist bisher noch nicht vorgekommen und ist eher eine theoretische Überlegung.


Tibor15 
Beitragsersteller
 12.03.2021, 18:16

Ok, danke für die schnelle Antwort.

0
Tibor15 
Beitragsersteller
 12.03.2021, 18:17

Ist es eigentlich schwierig eine virtuelle Maschine zu programmieren? Und wie gaukelt man dem PC vor, man sei ein Computer, wie geht so was?

0
HarryXXX  12.03.2021, 18:27
@Tibor15

Also ich kann es nicht programmieren :) Und ja, das ist schwierig.
Aber es gibt da bereits Programme wie den VMWare-Player oder die VirtualBox von Oracle, ausserdem lässt sich innerhalb Windows 10 auch Hyper-V aktivieren, was ebenfalls virtuelle Maschinen ermöglicht. Im Prinzip sind es sogenannte Emulatoren. Das gibt es auch für alte MS-DOS Spiele, aber seit einiger Zeit auch für Android (Nox, Bluestacks, usw).

0
Tibor15 
Beitragsersteller
 12.03.2021, 18:33
@HarryXXX

Ich kann mir gerade gar nicht vorstellen, wie es funktioniert ein System vorzugaukeln. Wird dann die RAM auch nur vorgegaukelt, was aber eigentlich doch gar nicht sein kann, oder?

0
HarryXXX  12.03.2021, 18:36
@Tibor15

Naja vorgegaukelt ist vielleicht nicht ganz das richtige Wort. es wird ja der vorhandene RAM verwendet und für jede virtuelle Maschine etwas abgezweigt. Große VM Server in Firmenumgebungen haben deswegen auch nicht 16, 32 oder 64 GB RAM, sondern viel mehr.
Und die virtuelle Festplatte liegt am Ende ja auch auf einer echten Festplatte , nur ist es eben nur eine Datei.

0

Wie eine sogenannte "Sandbox". Alles was der virtuelle Computer macht, passiert nur innerhalb der Software der die virtuelle Maschine stellt.

Allerdings gibt es aber auch Möglichkeiten, der virtuellen Maschine etwas mehr Zugriff auf den Host PC (also der PC wo die Software / die virtuelle Maschine drauf läuft) zu erlauben. Womit die virtuelle Maschine, dann auch den Host PC schaden kann.

Woher ich das weiß:Studium / Ausbildung

Tibor15 
Beitragsersteller
 12.03.2021, 18:18

Ok, danke. Wie funktioniert das den genau. Wie kann denn eine Software ein Computer sein?

0
IdefixWindhund  12.03.2021, 18:33
@Tibor15

Genauso wie in Computerspielen ganze Welten, und Charaktere entstehen. Man simuliert Sie.

0
Tibor15 
Beitragsersteller
 12.03.2021, 18:35
@IdefixWindhund

Java basiert ja auch auf einer virtuellen Maschine, wie kann es da dann aber sein, dass z.B. RAM simuliert wird? Um RAM zu simulieren brauche ich doch letzten Endes wieder echte RAM? Wie funktioniert das dann?

0
IdefixWindhund  12.03.2021, 18:44
@Tibor15

Wenn ich einen virtuellen Computer einrichte, dass mache ich in übrigen mit Oracel Virtuell Box (wird glaube ich so genannt), muss ich der virtuellen Maschine einen feste RAM Größe zuweisen. Diese RAM Größe, wird sofort beim starten der virtuellen Maschine direkt, automatisch vom real verbauten RAM in Beschlag genommen. Aber nicht der virtuelle PC macht sich auf dem RAM breit, sondern die Software nimmt den RAM in Beschlag. Und die Software weißt diesen in Beschlag genommenen Bereich der virtuellen Maschine zu.

Die Software dient dabei wie ein "Vermittler". Die virtuelle Maschine "sagt" der Software "ich will da was in den RAM speichern!", und die Software antwortet "Mach doch, ich habe für dich so und so viel RAM zur Verfügung, gönn dir!". Der Host PC merkt davon eigentlich nichts, er weiß nur, dass die Software so und so viel RAM für sich gerade beansprucht. Was die Software Schlussendlich damit macht, weiß er eigentlich nicht. Das passiert alles in der virtuellen Maschine, deren Aufgabe es ist, mit den virtuelle zur Verfügung stehenden RAM klar zu kommen.

0
Tibor15 
Beitragsersteller
 12.03.2021, 18:46
@IdefixWindhund

Ok, vielen dank für die ausführliche Antwort. Aber ist die virtuelle Maschine dann nicht eigentlich die Software? Sie ist ja eigentlich auch nur eine Software?

0
IdefixWindhund  12.03.2021, 18:53
@Tibor15

Richtig, eine Software die vorgibt, ein PC zu sein. Wie gesagt, wie bei Computerspielen. Die Engine simuliert nur eine Spielewelt, und ist keine real existierende Welt. Nur machen Computerspiele, und deren Engine viel mehr Spaß. 😁

0
Tibor15 
Beitragsersteller
 12.03.2021, 18:55
@IdefixWindhund

Danke, aber weshalb hat dann dieser Übersetzer die Eigenschaften eines richtigen PC´s? Reicht nicht ein Programm aus, dass den Code direkt übersetzt oder habe ich gerade einen Denkfehler? Sorry

0
IdefixWindhund  12.03.2021, 19:00
@Tibor15

Übersetzer ist falsch gedacht. Die Software dient wie bereits erwähnt, mehr als "Vermittler". Und ein Übersetzer brauch es nicht, der PC könnte direkt, auch so verstehen, was die virtuelle Maschine will. Im Prinzip ist ja alleine schon der Host PC ein real existierender, und funktionierender "virtuelle PC", nur eben ganz ohne Software die Vermitteln muss. Und dass das Betriebssystem vollen Zugriff, und volle Gewalt über den real existierenden PC hat. Mit allen Vor- und Nachteilen.

0
Tibor15 
Beitragsersteller
 12.03.2021, 19:09
@IdefixWindhund

Aber aus was besteht denn dann der virtuelle PC? Aus Luft? Ich verstehe jetzt gar nichts mehr?

0
IdefixWindhund  12.03.2021, 19:13
@Tibor15

Wenn du es genau Wissen willst, aus Codezeilen. Alles was den Computer zum Computer macht, ist nichts anders als geschickt programmierte Codezeilen. Wie mittlerweile mehrmals erwähnt, nehme das Beispiel Computerspiele. Dasselbe Prinzip. Nichts als geschickt programmierter Zeilencode, der schlussendlich alles entstehen lässt, was man will. Welten, Charaktere, Spielinhalte, ganze PCs, ...

0
Tibor15 
Beitragsersteller
 12.03.2021, 19:20
@IdefixWindhund

Ja, danke. Heißt das dann wenn der Bytecode auf der virtuellen Maschine durchgeführt wird, dass die virtuelle Maschine dann umgekehrt für jeden Prozessortyp, etc. neu geschrieben werden muss? Sonst läuft sie selbst ja nicht?

0
IdefixWindhund  12.03.2021, 19:27
@Tibor15

Das ist das schöne an Standards. Fast jeder handelsübliche, sogar jeder handelsübliche Prozessor, seis AMD oder Intel, folgt den gleichen Standard. Software für den handelsüblichen PC wird so programmiert, dass es auf AMD oder Intel Prozessoren läuft. Auch sind Programmierer auch darin bestrebt, dass ihre Software auf diesen Prozessoren läuft. Kein normaler Mensch, würde Software nutzen, die exklusiv nur auf eine beschränkte Anzahl an Prozessoren läuft. Sie gibt es ja, aber die da reden wir von sehr speziellen Sachen, für sehr spezielle Anwendungsgebiete. Fernab von dem, was wir zu Hause, oder in den Büros nutzen.

0
Tibor15 
Beitragsersteller
 12.03.2021, 19:41
@IdefixWindhund

Das macht schon Sinn, aber ich glaube ich habe gerade meine Denkblocke entdeckt. Ich habe mich schon die ganze zeit gefragt, wie denn Java unabhängig sein kann. Jetzt habe ich zwar gelesen, dass die JVM jedes mal neu geschrieben werden muss. Dann ist der Bytecode zwar plattform unabhängig, die virtuelle Maschine aber nicht oder? Dann macht der Aspekt der Plattformunabhängigkeit von Java auch eigentlich nicht so viel Sinn, denn ob ich jetzt 10mal einen Compiler für verschiedene Systeme schreiben muss oder 10mal eine virtuelle Maschine, damit Java läuft, kommt ja auf das selbe hinaus.

0
Tibor15 
Beitragsersteller
 12.03.2021, 19:45
@IdefixWindhund

Und ist dann der Interpreter von Java sozusagen der Übersetzer zum Prozessor, der dann sozusagen den "richtigen" Prozessor zum Javaprozessor macht?

0
IdefixWindhund  12.03.2021, 19:47
@Tibor15

Ich würde sowieso überhaupt nicht mehr auf Java setzen. Java ist eigentlich schon Tod. Mit HTML 5 wurde Java ziemlich sinnfrei. Und Spiele die Java brauchten, gibt es mittlerweile auch als eigenständige Software. Wie zum Beispiel Minecraft. Früher als Java Version, nun als eigenständige Software. Und Smartphones haben eigens im Apple Appstore, oder Google Play Store eigens für iOS und Android programmierte Apps. Ich kenne nichts, was Java heutzutage noch aktiv nutzt.

Und wie Java funktioniert weiß ich ehrlich gesagt nicht.

0
Tibor15 
Beitragsersteller
 12.03.2021, 19:49
@IdefixWindhund

Ok, vielen Dank. Also ist Java ja nur theoretisch Plattformunabhängig, die benötigte virtuelle Maschine ist es ja nicht?!

0
IdefixWindhund  12.03.2021, 19:54
@Tibor15

Java hatte früher wohl wahr den Vorteil, dass es überall lief. Sowohl PC, Macintosh, als auch auf den Handy. Für Programmierer war es so sehr einfach, mit wenigen Zeilencode die Software an die jeweilige Plattform anzupassen.

Java diente meiner Meinung nach nicht nur als "Vermittler", sondern auch als "Übersetzer". Was für Java programmiert wurde, lief theoretisch überall. Ziemlich Wurst ob AMD, Intel, Cyrix, Power PC, oder Handy Prozessor. Die Leistung musste dafür halt da sein. So hab ich Java noch in Erinnerung.

0
Tibor15 
Beitragsersteller
 12.03.2021, 19:56
@IdefixWindhund

Wie gesagt, für mich ist Java eigentlich nicht unabhängig, da es doch mindestens genau so viel Arbeit ist, für jeden Prozessor eine JVM zu programmieren oder einen Compiler...

0
IdefixWindhund  12.03.2021, 20:06
@Tibor15

Java war meines Wissens noch nie unabhängig. Sie diente als Plattform, und wurde von Dritten genutzt. Ohne diese Dritten wäre die Plattform ziemlich sinnlos gewesen. Was will man mit einer Plattform, die niemand nutzt, da niemand dafür Sachen programmiert!?!?

Gut, früher als auch noch heute, ist die Anzahl der Prozessoren ja noch recht Überschaubar. Da AMD und Intel ihre gemeinsamen Standards folgen, müssen nur Kleinigkeiten angepasst werden. Cyrix gibt es nicht mehr, Power PC gibt es nicht mehr, was es noch gibt sind ARM Prozessoren, und Apples M Prozessoren. Intels Itanium ist schon lange Geschichte. Die ganzen Server Prozessoren folgen ihre Desktop Brüdern, und Schwestern. Maximal müsste man da Multiprozessoren Plattformen beachten. Aber da bezweifle ich, dass die sich Java antun.

0

Eine virtuelle Maschine läuft in einer Software, die der VM vorgaukelt, dass sich echte Hardware darunter befindet. Diese Software steuert dann auch, inwieweit die VM auf die echte Hardware zugreifen kann und inwieweit sie mit anderen VM interagieren darf. Normalerweise sind die VM komplett voneinander getrennt und wissen nichts voneinander.


Tibor15 
Beitragsersteller
 12.03.2021, 18:15

Ok, aber wenn ein Virus diesen Teil infiziert und die Software, die Zugriff auf die Hardware hat, ja infiziert ist, dann müsste der Virus doch auch Zugriff bekommen?!

0
dumbo77  12.03.2021, 18:19
@Tibor15

Wenn die steuernde Software nicht gerade einen Fehler hat, dann ist sie ja nicht als Software für das Virus zu erkennen - dieses sieht nur eine Hardware unter sich. Selbst wenn es erkennt, dass es "nur" eine VM ist, in der es läuft, dann kann es nur versuchen, die virtuelle Hardware "anzugreifen". Wenn die Software fehlerfrei ist, ist das aber nicht erfolgreich, weil sie eine nicht veränderbare virtuelle Hardware zur Verfügung stellt. Das ist dann ebenso, als würde das Virus in einem System mit einem nicht überschreibbaren BIOS arbeiten - da kann es auch nicht viel anrichten.

0