1

As I was reading the Android Developer Guides, I was confronted with the following statements:

The Android operating system is a multi-user Linux system in which each app is a different user.

Each process has its own virtual machine (VM), so an app's code runs in isolation from other apps.

If my understanding is correct, the above appears to suggest that it is possible to assign a user of the host operating system to an app within a corresponding guest operating system. Is that true? And if so how can it be done?

2 Answers 2

1

On Android, references to virtual machines don’t describe hypervirtualised virtual machines running different guest operating systems; they refer to the Java-style virtual machines which provide the execution environment for individual programs. On Android, most programs don’t interact directly with the hardware, including the CPU: they interact with an abstraction layer (currently implemented in the Android Runtime).

Since there isn’t a different operating system inside these VMs, the frame of reference for users doesn’t change either; there’s nothing special going on as far as the use of users is concerned.

2
  • "On Android, most programs don’t interact directly with the hardware" Isn't that true for every operating system? Programs running in an operating system don't interact directly with the hardware but through functions provided by the OS called system calls? Commented Feb 13, 2023 at 1:09
  • That’s right, except for the CPU; but on Android, the abstraction includes the CPU. Commented Feb 13, 2023 at 6:49
1

The quoted text is (probably) not referring to a virtual machine in the sense that you think. Not referring to something like virtual-box, not a thing where you run a separate operating system. It is probably referring to the virtualisation that Unix provides:

In Unix, a process is a virtual machine. It allows a compiled program to run on whatever hardware it is compiled for. With a high degree of isolation. However, processes can communicate. Full isolation can be achieved by running processes as different users (and blocking global channels, e.g. networking (however this in not normally done)).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .