내가 안드로이드를 읽을 때 개발자 가이드, 나는 다음과 같은 진술을 발견했습니다.
Android 운영 체제는 각 애플리케이션이 서로 다른 사용자인 다중 사용자 Linux 시스템입니다.
각 프로세스에는 자체 가상 머신(VM)이 있으므로 애플리케이션의 코드는 다른 애플리케이션과 별도로 실행됩니다.
제가 이해한 것이 맞다면, 위 내용은 호스트 OS의 사용자를 해당 게스트 OS의 애플리케이션에 할당하는 것이 가능하다는 의미인 것 같습니다. 정말? 할 수 있다면 어떨까요?
답변1
Android에서 가상 머신에 대한 참조는 다른 게스트 운영 체제를 실행하는 반가상화 가상 머신을 설명하는 것이 아니라 다른 게스트 운영 체제를 실행하는 반가상화 가상 머신을 설명합니다. 개별 프로그램에 대한 실행 환경을 제공하는 Java 스타일의 가상 머신을 말합니다. Android에서는 대부분의 프로그램이 하드웨어와 직접 상호 작용하지 않습니다.CPU 포함: 그들은 추상화 계층과 상호 작용합니다(현재안드로이드 런타임).
이러한 가상 머신 내부에는 다른 운영 체제가 없으므로 사용자의 기준 틀은 변경되지 않습니다.
답변2
인용된 텍스트는 (아마도) 여러분이 생각하는 의미의 가상 머신을 참조하지 않습니다. 이는 가상 머신이나 별도의 운영 체제를 실행하는 것과 같은 것을 의미하지 않습니다. 이는 Unix에서 제공하는 가상화를 의미할 수 있습니다.
Unix에서 프로세스는 가상 머신입니다. 이를 통해 컴파일된 프로그램이 컴파일된 모든 하드웨어에서 실행될 수 있습니다. 고립도가 높습니다. 그러나 프로세스는 통신할 수 있습니다. 프로세스를 다른 사용자로 실행하고 네트워킹과 같은 전역 채널을 차단하면(일반적으로 수행되지 않음) 완전한 격리를 달성할 수 있습니다.