当我在读 Android 的时候 开发者指南,我遇到了以下陈述:
Android 操作系统是一个多用户 Linux 系统,其中每个应用程序都是不同的用户。
每个进程都有自己的虚拟机 (VM),因此应用程序的代码与其他应用程序隔离运行。
如果我的理解是正确的,上面的内容似乎表明可以将主机操作系统的用户分配给相应的来宾操作系统中的应用程序。真的吗?如果可以的话怎么办?
答案1
在 Android 上,对虚拟机的引用并不描述运行不同来宾操作系统的超虚拟化虚拟机;而是描述运行不同客户操作系统的超虚拟化虚拟机。它们指的是Java风格的虚拟机,为各个程序提供执行环境。在Android上,大多数程序不直接与硬件交互,包括CPU:它们与抽象层交互(当前在安卓运行时)。
由于这些虚拟机内部没有不同的操作系统,因此用户的参考框架也不会改变;就用户的使用而言,没有什么特别的事情发生。
答案2
引用的文本(可能)不是指您认为的意义上的虚拟机。不是指虚拟机之类的东西,也不是运行单独操作系统的东西。它可能指的是 Unix 提供的虚拟化:
在Unix中,进程是一个虚拟机。它允许编译后的程序在其编译的任何硬件上运行。具有高度的隔离性。但是,进程可以进行通信。完全隔离可以通过以不同用户身份运行进程(并阻止全局通道,例如网络(但是通常不会这样做))来实现。