प्रत्येक Android एप्लिकेशन एक अलग Dalvik VM प्रक्रिया पर क्यों चलता है?


10

मैंने पढ़ा है कि प्रत्येक एंड्रॉइड एप्लिकेशन एक अलग Dalvik VM प्रक्रिया (सभी युग्मनज से कांटा गया) पर चलता है।

मैंने यह भी पढ़ा कि ये VM वास्तव में हल्के हैं और लिखने वाले बफ़र्स और सभी पर कॉपी का उपयोग करते हैं, जो अब तक बहुत अच्छा है।

लेकिन, मैंने यह भी पढ़ा कि यह सुरक्षा कारणों (जैसे अलगाव) के लिए नहीं किया गया था - वास्तव में dalvik vm को सुरक्षा सीमा नहीं माना जाना चाहिए, Google का कहना है।

तो मेरा सवाल यह है: प्रत्येक प्रक्रिया को एक अलग वीएम पर क्यों चलना है?

जवाबों:


11

एंड्रॉइड में, प्रत्येक एप्लिकेशन एक अलग उपयोगकर्ता के रूप में चलता है। लिनक्स कर्नेल में, प्रत्येक प्रक्रिया एकल उपयोगकर्ता के स्वामित्व में होती है, इसलिए एकल लिनक्स प्रक्रिया पर कई Dalvik अनुप्रयोगों को चलाना संभव नहीं है।

कई Dalvik VM इंस्टेंस को चलाने का ओवरहेड हल्का है क्योंकि लिनक्स fork()सिस्टम कॉल कॉपी-ऑन-राइट है, एक साझा गाय पृष्ठ पर एक "पेज फॉल्ट" का कारण होगा और उस पेज को कॉपी किया जाएगा; भले ही RAM में VM का अधिकांश मेमोरी क्षेत्र साझा किया गया है, लेकिन VMs के बीच कोई "साझा स्थिति" नहीं है।

फोर्किंग प्रक्रियाएं केवल राज्य अलगाव प्रदान करती हैं, लेकिन विशेषाधिकार अलगाव नहीं।

दलविक vm को सुरक्षा सीमा नहीं माना जाना चाहिए

ऐसा इसलिए है क्योंकि VM सुरक्षा सीमा लागू नहीं कर सकता है। VM उपयोगकर्ता मोड पर चल रहा है (प्रोग्राम को निष्पादित कर रहा है उसी मोड), जिसका अर्थ है कि VM में बग एक तरह से VM स्थिति को संशोधित करने के लिए आवेदन की अनुमति दे सकता है जो कि इरादा नहीं है; हालाँकि कर्नेल विशेषाधिकार प्राप्त मोड में चलता है और सुरक्षा सीमा लागू कर सकता है।


4

प्रत्येक Dalvikvm प्रक्रिया uidचल रहे एप्लिकेशन के यूजर आईडी ( ) के स्वामित्व वाले रेत-बॉक्स वाले वातावरण के तहत चलती है, यह ध्यान दिया जाना चाहिए कि आवेदन की स्थापना पर, uidप्रत्येक स्थापित एप्लिकेशन को आवंटित और सौंपा गया है।

शुद्ध परिणाम यह है कि प्रत्येक रनिंग एप्लिकेशन अलग-अलग uidअसाइन किए जाने के कारण दूसरे की प्रक्रिया को रौंद नहीं सकता है , जो रनिंग ऐप्स के लिए सुरक्षा प्रदान करता है।

इसे देखने का एक और तरीका यह है - क्या सभी अनुप्रयोगों के uidलिए एक समान होना था , फिर एक दुर्भावनापूर्ण एप्लिकेशन वास्तव में कहर पैदा कर सकता है, किसी की सेटिंग में peering हो, ओवरराइड हो, किसी अन्य एप्लिकेशन के रनिंग कोड को रोकें और सभी प्रकार की खराब चीजों को TM करें। आवेदन।


3

Dalvik वी एम एक सुरक्षा सीमा प्रदान कर रहा है नहीं है, लेकिन गिरी है प्रक्रिया वीएम में चलाता है के मामले में एक सुरक्षा सीमा प्रदान करते हैं। यही कारण है कि, उदाहरण के लिए, यह एक Android आवेदन मूल कोड को चलाने के लिए कोई बड़ी बात नहीं है, ऐसा इसलिए है जो (अधिक या कम) परिभाषा वीएम के बाहर चलती है। यह अभी भी प्रक्रिया में है, और कर्नेल यह सुनिश्चित करता है कि प्रक्रिया अन्य अनुप्रयोगों को नुकसान पहुंचाने में सक्षम नहीं है, चाहे प्रक्रिया वीएम के भीतर कोड चला रही हो या नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.