Neden her android uygulaması farklı bir Dalvik VM işleminde çalışıyor?


10

Her android uygulamasının farklı bir Dalvik VM işleminde (hepsi zigottan çatallanmış) çalıştığını okudum.

Ayrıca bu VM'lerin gerçekten hafif olduğunu ve yazma arabelleklerinde ve bunların hepsinde kopya kullandığını okudum.

Ancak, bunun güvenlik nedeniyle (örneğin izolasyon) yapılmadığını da okudum - aslında dalvik vm bir güvenlik sınırı olarak görülmemelidir.

Benim sorum şu: Neden her süreç farklı bir sanal makine üzerinde çalışmak zorunda?

Yanıtlar:


11

Android'de her uygulama ayrı bir kullanıcı olarak çalışır. Linux çekirdeğinde, her işlem tek bir kullanıcıya aittir, bu nedenle tek bir Linux işleminde birden fazla Dalvik uygulaması çalıştırmak mümkün değildir.

Birden fazla Dalvik VM örneği çalıştırmanın yükü hafiftir, çünkü Linux fork()sistem çağrısı yazma üzerine kopyalanır, paylaşılan bir COW sayfasına yazmak "sayfa hatasına" neden olur ve bu sayfa kopyalanır; bu nedenle, VM'nin RAM'deki bellek bölgesinin çoğu paylaşılsa bile, VM'ler arasında "paylaşılan durum" yoktur.

Forking süreçleri sadece devlet izolasyonu sağlar, ancak ayrıcalık izolasyonu sağlamaz.

dalvik vm bir güvenlik sınırı olarak görülmemelidir

Bunun nedeni, VM'nin bir güvenlik sınırını zorlayamamasıdır. VM kullanıcı modunda (yürüttüğü programla aynı modda) çalışıyor, yani VM'deki bir hata uygulamanın VM durumunu amaçlanmayan bir şekilde değiştirmesine izin verebilir; ancak çekirdek ayrıcalıklı modda çalışır ve güvenlik sınırını zorlayabilir.


4

Her Dalvikvm işlemi, çalışmakta uidolan uygulamanın kullanıcı kimliğine ( ) ait olan kum kutulu bir ortam altında çalışır ; uygulamanın yüklenmesi üzerine, uygulamanın uidyüklü her bir uygulamaya tahsis edildiğini ve atandığını belirtmek gerekir.

Net sonuç, çalışan her uygulamanın, çalışan uygulamalar uidiçin koruma sağlayan, atanan farklı nedeniyle başka birinin işlemini ezememesidir .

Bakarak bir başka yolu bu - orada bir ortak olmak vardı uidiçin tüm sonra kötü niyetli bir uygulama gerçekten tahribat nedeni, kişinin ayarları geçersiz kılma, yolunu kesmek başka bir uygulamanın çalışan kod içine bakıyor olabilir ve kötü şeyler her türlü yapabilirsiniz, uygulamalar TM buna uygulama.


3

Dalvik VM bir güvenlik sınırı sağlamaz, ancak çekirdek , VM'nin çalıştığı süreç açısından bir güvenlik sınırı sağlar. Bu nedenle, örneğin, bir Android uygulamasının yerel kod çalıştırması önemli değildir; (az ya da çok) tanım gereği VM'nin dışında çalışır. Hala işlemde ve çekirdek, VM içinde kod çalıştırıyor olsa da olmasa da, işlemin diğer uygulamalara zarar vermemesini sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.