2010-09-12 14 views
6

Tal vez me falta algo, pero no es sandboxing y virtualización exactamente el mismo concepto , es decir, separar el espacio de memoria para aplicaciones que se ejecutan en paralelo. Entonces me pregunto por qué tienen diferentes nombres, ¿hay diferencias en la forma en que se emplean ?Sandboxing vs. Virtualisation

Muchas gracias, Simon

Respuesta

1

Sandboxing medios de aislamiento solamente, cuando la virtualización por lo general significa la simulación de algún tipo de hardware (máquina virtual). La virtualización puede ocurrir con nuestro sin sandboxing.

7

Estos conceptos abordan diferentes problemas: Cuando virtualizamos, somos ocultando las limitaciones físicas de la máquina. Sandboxing, por otro lado, establece los límites artificiales en el acceso a través de una máquina. Considera la memoria como una analogía representativa.

La virtualización de la memoria permite que cada programa acceda a todas las direcciones en un espacio de 32 o 64 bits, incluso cuando no hay mucha memoria RAM física.

El espacio aislado de la memoria es evitar que un programa vea los datos de otra persona, aunque puedan ocupar celdas adyacentes en la memoria.

Los dos conceptos están ciertamente relacionados en la implementación común de la memoria virtual. Sin embargo, este es un artefacto conveniente de la implementación, ya que solo el kernel puede acceder a la tabla de páginas de hardware.

Considere cómo implementarlos por separado, en una máquina x86: Puede aislar la memoria de los programas utilizando tablas de páginas sin tener que intercambiar en el disco (sandboxing sin virtualización). Alternativamente, podría implementar memoria virtual completa, pero también otorgar acceso de nivel de aplicación a la tabla de páginas de hardware para que puedan ver lo que quieran (virtualización sin sandboxing).

+0

¿Cómo comparamos estos dos conceptos con los complementos del navegador web y los navegadores específicos del sitio? Creo que los complementos de navegador siguen diferentes heurísticas que VM y sandboxing para su memoria y acceso. – RBT

0

El espacio aislado limita el acceso a un programa en particular. La virtualización es un mecanismo que se puede usar para ayudar a hacer esto, pero el espacio aislado también se logra con otros mecanismos, y de la misma manera la virtualización tiene usos además del espacio aislado. Sandboxing es un "qué", la virtualización es un "cómo".

3

En realidad, hay 3 conceptos que está confundiendo aquí. Lo primero y más importante es lo que proporciona el sistema operativo y lo que hace es separar el espacio de memoria para las aplicaciones que se ejecutan en paralelo. Y se llama virtual memory.

En los sistemas Virtual memory, el sistema operativo asigna la dirección de memoria tal como la ven las aplicaciones en la memoria física real. Por lo tanto, el espacio de memoria para las aplicaciones se puede separar para que nunca colisionen.

El segundo es sandboxing. Es cualquier técnica que usted, el programador, usa para ejecutar código que no es de confianza. Si usted, el programador, está escribiendo el sistema operativo, entonces desde su punto de vista, el sistema de memoria virtual que está escribiendo es un mecanismo de espacio aislado. Si usted, el programador, está escribiendo un navegador web, entonces el sistema de memoria virtual, en sí mismo, no es un mecanismo de espacio aislado (diferentes perspectivas, verá). En cambio, es un mecanismo pontential para que implemente su sandbox para los complementos del navegador. Google Chrome es un ejemplo de un programa que utiliza el mecanismo de memoria virtual del sistema operativo para implementar su mecanismo de espacio aislado.

Pero la memoria virtual no es la única forma de implementar sandboxing.El lenguaje de programación tcl, por ejemplo, le permite crear instancias de intérpretes esclavos a través del comando interp. El intérprete esclavo se usa a menudo para implementar un sandbox ya que se ejecuta en un espacio global separado. Desde el punto de vista del sistema operativo, los dos intérpretes se ejecutan en el mismo espacio de memoria en un único proceso. Pero debido a que, en el nivel C, los dos intérpretes nunca comparten estructuras de datos (a menos que estén explícitamente programados) están efectivamente separados.

Ahora, el tercer concepto es la virtualización. Que está nuevamente separado de la memoria virtual y sandboxing. Mientras que la memoria virtual es un mecanismo que, desde la perspectiva del sistema operativo, los procesos de las cajas de arena se combinan entre sí, la virtualización es un mecanismo que permite que los sistemas operativos se quiebren entre sí. Ejemplo de software que hace esto incluye: Vmware, Parallels Desktop, Xen y kernel virtual machine.

Cuestiones relacionadas