2010-09-12 5 views
6

Vielleicht bin ich etwas fehlt, ist aber nicht Sandbox und Virtualisierung genau das gleiche Konzept, dh., Den Speicherplatz für Anwendungen Trennung parallel laufen. Ich frage mich also, warum sie unterschiedliche Namen haben, gibt es vielleicht Unterschiede in der Art und Weise, wie sie eingesetzt werden?Sandbox vs. Virtualization

Vielen Dank, Simon

Antwort

1

Sandbox bedeutet Isolation nur, wenn die Virtualisierung bedeutet in der Regel von einer Art von Hardware (virtuelle Maschine) zu simulieren. Virtualisierung kann ohne Sandboxing passieren.

7

Diese Konzepte adressieren verschiedene Probleme: Wenn wir virtualisieren, sind wir , die physische Beschränkungen der Maschine verstecken. Sandboxing hingegen setzt künstliche Grenzen auf Zugriff über eine Maschine. Betrachten Sie das Gedächtnis als eine repräsentative Analogie.

Die Virtualisierung des Speichers ermöglicht es jedem Programm, auf jede Adresse in einem 32- oder 64-Bit-Bereich zuzugreifen, selbst wenn nicht so viel physischer RAM vorhanden ist.

Sandboxing des Speichers soll verhindern, dass ein Programm die Daten eines anderen sieht, obwohl sie benachbarte Zellen im Speicher belegen könnten.

Die beiden Konzepte sind sicherlich in der gemeinsamen Umsetzung des virtuellen Speichers verwendet. Dies ist jedoch ein praktisches Artefakt der Implementierung, da die Hardwareseitentabelle nur für den Kernel zugänglich ist.

überlegen Sie, wie sie getrennt zu implementieren, auf einer x86-Maschine: mit Seitentabellen, ohne jemals auf der Festplatte zu tauschen (Sandbox ohne Virtualisierung) Sie können Speicherprogramme isolieren. Alternativ können Sie vollständigen virtuellen Speicher implementieren, aber auch Zugriff auf die Hardware-Seitentabelle auf Anwendungsebene gewähren, so dass sie sehen können, was sie wollen (Virtualisierung ohne Sandboxing).

+0

Wie vergleichen wir diese beiden Konzepte mit Webbrowser-Plugins und Site-spezifischen Browsern? Ich glaube, dass Browser-Plugins für ihren Speicher und Zugriff anderen Heuristiken als VM und Sandboxing folgen. – RBT

0

Sandboxing beschränkt den Zugriff durch ein bestimmtes Programm. Virtualisierung ist ein Mechanismus, der dazu verwendet werden kann, aber Sandboxing wird auch mit anderen Mechanismen erreicht, und ebenso nutzt Virtualisierung neben Sandboxing. Sandboxing ist ein "Was", Virtualisierung ist ein "Wie".

3

Es gibt tatsächlich drei Konzepte, die Sie hier muddling up sind. Das erste und wichtigste ist, was vom Betriebssystem bereitgestellt wird, und was es tut, ist es, den Speicherbereich für Anwendungen zu trennen, die parallel laufen. Und es heißt virtual memory.

In Virtual memory Systemen bildet das OS die Speicheradresse wie die von Anwendungen auf realen physikalischen Speicher zu sehen. Somit kann Speicherplatz für Anwendungen getrennt werden, so dass sie niemals kollidieren.

Die zweite ist Sandboxing. Es ist jede Technik, die Sie als Programmierer verwenden, um nicht vertrauenswürdigen Code auszuführen. Wenn Sie als Programmierer das Betriebssystem schreiben, dann ist das von Ihnen beschriebene virtuelle Speichersystem aus Ihrer Sicht ein Sandbox-Mechanismus. Wenn Sie, der Programmierer, einen Webbrowser schreiben, dann ist das virtuelle Speichersystem an sich kein Sandbox-Mechanismus (verschiedene Perspektiven, sehen Sie). Stattdessen ist es ein pontenter Mechanismus für Sie, Ihre Sandbox für Browser-Plugins zu implementieren. Google Chrome ist ein Beispiel für ein Programm, das den virtuellen Speichermechanismus des Betriebssystems verwendet, um seinen Sandbox-Mechanismus zu implementieren.

Aber virtuellen Speicher ist nicht der einzige Weg Sandbox zu implementieren.Mit der Programmiersprache tcl können Sie beispielsweise Slave-Interpreter über den Befehl interp instanziieren. Der Slave-Interpreter wird oft verwendet, um eine Sandbox zu implementieren, da sie in einem separaten globalen Bereich ausgeführt wird. Aus der Sicht des Betriebssystems laufen die beiden Interpreter in einem einzigen Prozess im selben Speicherbereich. Aber weil die beiden Interpreter auf der C-Ebene niemals Datenstrukturen teilen (sofern sie nicht explizit programmiert sind), werden sie effektiv getrennt.

Jetzt ist das dritte Konzept Virtualisierung. Das ist wieder getrennt von beiden virtuellen Speicher und Sandboxing. Während virtueller Speicher ein Mechanismus ist, der sich aus Sandbox-Sicht voneinander unterscheidet, ist Virtualisierung ein Mechanismus, der Betriebssysteme voneinander trennt. Ein Beispiel einer Software, die dies beinhaltet, sind: Vmware, Parallels Desktop, Xen und die kernel virtual machine.