В Android каждое приложение работает как отдельный пользователь. В ядре Linux каждый процесс принадлежит одному пользователю, поэтому невозможно запустить несколько приложений Dalvik в одном процессе Linux.
Затраты на запуск нескольких экземпляров Dalvik VM невелики, поскольку fork()
системный вызов Linux является копированием при записи, запись на общую страницу COW вызовет «сбой страницы», и эта страница будет скопирована; таким образом, хотя большая часть области памяти виртуальной машины в оперативной памяти является общей, между виртуальными машинами нет «общего состояния».
Форкинг процессов обеспечивает только изоляцию состояний, но не изоляцию привилегий.
dalvik vm не следует считать границей безопасности
Это потому, что виртуальная машина не может обеспечить границы безопасности. Виртуальная машина работает в пользовательском режиме (в том же режиме, что и программа, которую она выполняет), что означает, что ошибка в ВМ может позволить приложению изменять состояние ВМ способом, который не предназначен; ядро, однако, работает в привилегированном режиме и может обеспечивать границы безопасности.