Memory management 沙箱与虚拟化

Memory management 沙箱与虚拟化,memory-management,virtualization,sandbox,Memory Management,Virtualization,Sandbox,也许我遗漏了一些东西,但沙箱和虚拟化不是完全一样吗 概念,即为并行运行的应用程序分隔内存空间。所以我想知道为什么他们有不同的名字,可能在方式上有差异吗 他们有工作吗 非常感谢,, Simon沙箱仅意味着隔离,而虚拟化通常意味着模拟某种硬件(虚拟机)。虚拟化可以在没有沙箱的情况下进行。这些概念解决了不同的问题:当我们进行虚拟化时,我们隐藏了机器的物理限制。另一方面,沙箱设置了机器访问的人为限制。以记忆为代表的类比。 内存虚拟化是允许每个程序访问32位或64位空间中的每个地址,即使没有那么多物理RA

也许我遗漏了一些东西,但沙箱和虚拟化不是完全一样吗 概念,即为并行运行的应用程序分隔内存空间。所以我想知道为什么他们有不同的名字,可能在方式上有差异吗 他们有工作吗

非常感谢,,
Simon

沙箱仅意味着隔离,而虚拟化通常意味着模拟某种硬件(虚拟机)。虚拟化可以在没有沙箱的情况下进行。

这些概念解决了不同的问题:当我们进行虚拟化时,我们隐藏了机器的物理限制。另一方面,沙箱设置了机器访问的人为限制。以记忆为代表的类比。

内存虚拟化是允许每个程序访问32位或64位空间中的每个地址,即使没有那么多物理RAM

内存沙盒是为了防止一个程序看到另一个程序的数据,即使它们可能占用内存中的相邻单元

在虚拟内存的通用实现中,这两个概念当然是相关的。然而,这是实现的一个方便工件,因为硬件页表只能由内核访问


考虑如何在x86机器上单独实现它们:您可以使用页表隔离程序的内存,而无需交换到磁盘(沙箱而无需虚拟化)。或者,您可以实现完整的虚拟内存,但也可以允许应用程序级访问硬件页表,以便他们可以查看所需的任何内容(虚拟化而不使用沙箱)。

沙箱限制特定程序的访问。虚拟化是一种可以用来帮助实现这一点的机制,但沙箱也可以与其他机制一起实现,同样,虚拟化除了沙箱之外还有其他用途。沙箱是一个“什么”,虚拟化是一个“如何”。

实际上有3个概念你在这里搞混了。首先也是最重要的是操作系统提供了什么,它所做的是为并行运行的应用程序分隔内存空间。它被称为

在系统中,操作系统将应用程序看到的内存地址映射到实际物理内存上。因此,应用程序的内存空间可以分开,这样它们就不会发生冲突

第二个是沙箱。这是程序员用来运行不可信代码的任何技术。如果您是程序员,正在编写操作系统,那么从您的角度来看,您正在编写的虚拟内存系统是一种沙箱机制。如果您是程序员,正在编写一个web浏览器,那么虚拟内存系统本身并不是一个沙盒机制(您可以看到不同的视角)。相反,它是一种主动机制,用于实现浏览器插件的沙盒。Google Chrome是一个使用操作系统虚拟内存机制来实现沙箱机制的程序示例

但虚拟内存并不是实现沙箱的唯一方法。例如,tcl编程语言允许您通过命令实例化从属解释器。从属解释器通常用于实现沙盒,因为它在单独的全局空间中运行。从操作系统的角度来看,两个解释器在同一个进程中运行在相同的内存空间中。但是,因为在C级别,两个口译员从不共享数据结构(除非明确编程),所以它们实际上是分开的


现在,第三个概念是虚拟化。它再次与虚拟内存和沙盒分离。从操作系统的角度来看,虚拟内存是一种机制,它可以从彼此的沙箱处理过程,而虚拟化是一种机制,它可以从彼此的沙箱操作系统。这方面的软件示例包括:,和。

我们如何将这两个概念与web浏览器插件和特定于站点的浏览器进行比较?我相信浏览器插件在内存和访问方面遵循与VM和沙盒不同的启发式方法。