Чому кожен додаток для Android працює на різних технологіях Dalvik VM?


10

Я читав, що кожен додаток для Android працює на різному процесі Dalvik VM (усе роздвоєне від зиготи).

Я також читав, що ці відеомагнітофони дійсно легкі і використовують копію на буферах запису та все інше, поки що це добре.

Але я також читав, що це не було зроблено з міркувань безпеки (наприклад, ізоляція) - насправді dalvik vm не слід вважати межею безпеки, каже Google.

Отже, моє запитання таке: Чому кожен процес повинен запускатися на різних VM?

Відповіді:


11

В Android кожен додаток працює як окремий користувач. У ядрі Linux кожен процес належить одному користувачеві, тому неможливо запустити декілька додатків Dalvik в одному процесі Linux.

Накладні витрати із запуском декількох екземплярів Dalvik VM невеликі, оскільки fork()системний виклик Linux - це копіювання під час запису, запис на загальну сторінку COW спричинить "помилку сторінки", і ця сторінка буде скопійована; тож навіть незважаючи на те, що більшість регіону пам'яті VM в оперативній пам’яті є спільним, між VM немає «спільного стану».

Процеси форкінгу забезпечують лише ізоляцію стану, але не ізоляцію привілеїв.

dalvik vm не слід вважати межею безпеки

Це тому, що VM не може застосувати межу безпеки. VM працює в користувальницькому режимі (той же режим, що і програма, яку він виконує), що означає, що помилка у віртуальній машині може дозволити додатку змінювати стан VM таким чином, який не призначений; ядро, однак, працює в привілейованому режимі і може застосовувати межу безпеки.


4

Кожен процес Dalvikvm запускається в середовищі з піском, що належить користувальницькому id ( uid) запущеної програми, слід зазначити, що після встановлення програми, uidрозподіляється та призначається кожному встановленому додатку.

Результатом цього є те, що кожна запущена програма не може топтати процес іншого через різні функції uid, що надають захист запущеним програмам.

Ще один спосіб дивитися на це такий - якщо існувало одне загальне uidдля всіх програм, тоді шкідливий додаток дійсно може спричинити хаос, заглядати в налаштування, переохоплювати, перехоплювати запущений код іншої програми та робити всілякі погані речі TM для цього застосування.


3

Dalvik VM не забезпечує кордону безпеки, але ядро є забезпечення кордону безпеки з точки зору процесу VM працює. Ось чому, наприклад, це не велика справа для андроїд додаток для запуску машинного коду, який (більш-менш) за визначенням працює поза VM. Він все ще знаходиться в процесі, і ядро ​​гарантує, що процес не зможе завдати шкоди іншим програмам, незалежно від того, працює процес у коді віртуального комп'ютера чи ні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.