8 Stimmen

Einschränkung vs. Virtualisierung

Vielleicht fehlt mir etwas, aber ist Sandboxen und Virtualisierung nicht genau dasselbe Konzept, d. h. die Trennung des Speicherraums für parallel laufende Anwendungen. Ich frage mich also, warum sie unterschiedliche Namen haben, gibt es vielleicht Unterschiede in der Art und Weise, wie sie eingesetzt werden?

Vielen Dank, Simon

8voto

Andres Jaan Tack Punkte 21928

Diese Konzepte behandeln unterschiedliche Probleme: Wenn wir virtualisieren, verbergen wir physische Einschränkungen der Maschine. Sandboxing hingegen setzt künstliche Grenzen für den Zugriff auf eine Maschine. Betrachten Sie den Speicher als repräsentative Analogie.

Virtualisierung von Speicher ermöglicht es jedem Programm, jeden Speicherplatz in einem 32- oder 64-Bit-Raum zu erreichen, auch wenn nicht so viel physischer RAM vorhanden ist.

Sandboxing von Speicher verhindert, dass ein Programm auf die Daten eines anderen zugreifen kann, auch wenn sie benachbarte Zellen im Speicher belegen.

Die beiden Konzepte sind sicherlich in der gemeinsamen Implementierung des virtuellen Speichers verwandt. Dies ist jedoch ein praktisches Artefakt der Implementierung, da die Hardware-Seitentabelle nur vom Kernel zugänglich ist.

Betrachten Sie, wie man sie separat auf einer x86-Maschine implementieren könnte: Sie könnten Programme isolieren, indem Sie die Speichertabellen verwenden, ohne jemals auf die Festplatte zu wechseln (Sandboxing ohne Virtualisierung). Alternativ könnten Sie den vollen virtuellen Speicher implementieren, aber auch Anwendungen Zugriff auf die Hardware-Seitentabelle auf Anwendungsebene geben, sodass sie sehen könnten, was sie wollten (Virtualisierung ohne Sandboxing).

4voto

slebetman Punkte 100693

Es gibt eigentlich 3 Konzepte, die Du hier durcheinanderbringst. Das erste und wichtigste ist das, was vom Betriebssystem bereitgestellt wird und was es macht, ist, den Speicherplatz für parallel laufende Anwendungen zu trennen. Und es wird als virtueller Speicher bezeichnet.

In virtuellen Speicher Systemen mappt das Betriebssystem die von Anwendungen gesehenen Speicheradressen auf den echten physikalischen Speicher. So kann der Speicherplatz für Anwendungen getrennt werden, damit sie niemals kollidieren.

Das zweite ist Sandboxing. Es ist jede Technik, die Du, der Programmierer, verwendest, um nicht vertrauenswürdigen Code auszuführen. Wenn Du als Programmierer das Betriebssystem schreibst, dann ist aus Deiner Sicht das von Dir geschriebene virtuelle Speichersystem ein Sandboxing-Mechanismus. Wenn Du als Programmierer einen Webbrowser schreibst, dann ist das virtuelle Speichersystem an sich kein Sandboxing-Mechanismus (unterschiedliche Perspektiven, verstehst Du). Stattdessen ist es ein potenzieller Mechanismus, um Dein Sandboxing für Browser-Plug-Ins zu implementieren. Google Chrome ist ein Beispiel für ein Programm, das den virtuellen Speichermechanismus des Betriebssystems verwendet, um seinen Sandboxing-Mechanismus zu implementieren.

Aber virtueller Speicher ist nicht der einzige Weg, um Sandboxing zu implementieren. Die tcl-Programmiersprache ermöglicht es beispielsweise, Unterinterpreten über den interp-Befehl zu instanziieren. Der Unterinterpreter wird häufig verwendet, um ein Sandbox zu implementieren, da er in einem separaten globalen Raum läuft. Aus Sicht des Betriebssystems laufen die zwei Interpreter im gleichen Speicherplatz in einem einzigen Prozess. Aber weil die beiden Interpreter, auf C-Ebene, Datenstrukturen nicht teilen (es sei denn, sie werden ausdrücklich programmiert), sind sie effektiv voneinander getrennt.

Nun, das dritte Konzept ist Virtualisierung. Was wiederum sowohl vom virtuellen Speicher als auch vom Sandboxing getrennt ist. Während der virtuelle Speicher ein Mechanismus ist, der aus Sicht des Betriebssystems Prozesse voneinander isoliert, ist die Virtualisierung ein Mechanismus, der Betriebssysteme voneinander isoliert. Beispiele für Software, die das macht, sind: Vmware, Parallels Desktop, Xen und die Kernel-Virtual-Machine.

1voto

Andrey Punkte 57704

Sandboxing bedeutet nur Isolation, während Virtualisierung in der Regel die Simulation einer Art von Hardware bedeutet (virtuelle Maschine). Virtualisierung kann mit oder ohne Sandbox erfolgen.

0voto

Logan Capaldo Punkte 38523

Sandboxing bedeutet die Begrenzung des Zugriffs durch ein bestimmtes Programm. Virtualisierung ist ein Mechanismus, der dazu verwendet werden kann, dies zu erleichtern, aber Sandboxing wird auch mit anderen Mechanismen erreicht, und auch die Virtualisierung hat Anwendungen neben dem Sandboxing. Sandboxing ist ein "was", Virtualisierung ist ein "wie".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X