কেন প্রতিটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন আলাদা ডালভিক ভিএম প্রক্রিয়াতে চলে?


10

আমি পড়েছি প্রতিটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি একটি আলাদা ডালভিক ভিএম প্রক্রিয়াতে চালিত হয় (সবগুলি জাইগোট থেকে তৈরি)।

আমি আরও পড়লাম যে এই ভিএমগুলি সত্যই হালকা ওজনের এবং লিখিত বাফারগুলিতে এবং এত কিছুর উপর অনুলিপি ব্যবহার করে।

তবে, আমি আরও পড়লাম যে এটি সুরক্ষার কারণে করা হয়নি (যেমন বিচ্ছিন্নতা) - আসলে ডালভিক ভিএমকে কোনও সুরক্ষা সীমানা হিসাবে বিবেচনা করা উচিত নয়, গুগল বলেছে।

সুতরাং আমার প্রশ্নটি হ'ল: কেন প্রতিটি প্রক্রিয়া আলাদা ভিএম-তে চালানো হয়?

উত্তর:


11

অ্যান্ড্রয়েডে, প্রতিটি অ্যাপ্লিকেশন পৃথক ব্যবহারকারী হিসাবে চলে। লিনাক্স কার্নেলে প্রতিটি প্রক্রিয়া একক ব্যবহারকারীর মালিকানাধীন, তাই একক লিনাক্স প্রক্রিয়াতে একাধিক ডালভিক অ্যাপ্লিকেশন চালানো সম্ভব নয়।

একাধিক ডালভিক ভিএম দৌড়ানোর ওভারহেড হালকা ওজনের কারণ লিনাক্স fork()সিস্টেম কলটি অনুলিপি করা, একটি ভাগ করা COW পৃষ্ঠায় লেখা একটি "পৃষ্ঠার ত্রুটি" সৃষ্টি করে এবং সেই পৃষ্ঠাটি অনুলিপি করা হবে; সুতরাং র‌্যামের বেশিরভাগ ভিএম এর মেমরি অঞ্চল ভাগ করে নিলেও ভিএমগুলির মধ্যে কোনও "ভাগ করা রাষ্ট্র" নেই।

কাঁটাচামচ প্রক্রিয়াগুলি কেবল রাষ্ট্রীয় বিচ্ছিন্নতা সরবরাহ করে তবে বিশেষাধিকারের বিচ্ছিন্নতা নয়।

ডালভিক ভিএম কোনও সুরক্ষা সীমানা হিসাবে বিবেচনা করা উচিত নয়

কারণ ভিএম কোনও সুরক্ষা সীমানা প্রয়োগ করতে পারে না। ভিএম ইউজার মোডে চলছে (যে প্রোগ্রামটি এটি চালাচ্ছে ঠিক একই মোড), যার অর্থ ভিএম-র মধ্যে কোনও বাগ অ্যাপ্লিকেশনটিকে এমনভাবে VM স্থিতি পরিবর্তন করতে দেয় যা উদ্দেশ্য নয়; কার্নেলটি সুবিধাপ্রাপ্ত মোডে চলে এবং সুরক্ষা সীমানা প্রয়োগ করতে পারে।


4

প্রতিটি ডালভিকভিএম প্রক্রিয়াটি uidচলমান অ্যাপ্লিকেশনটির ইউজার আইডি ( ) এর মালিকানাধীন একটি বালি-বক্সযুক্ত পরিবেশের অধীনে চলেছে , এটি অবশ্যই লক্ষ করা উচিত যে অ্যাপ্লিকেশনটি uidইনস্টল করার পরে, প্রতিটি ইনস্টল করা অ্যাপ্লিকেশনকে বরাদ্দ দেওয়া হয় এবং নির্ধারিত হয়।

নেট ফলাফলটি হ'ল চলমান অ্যাপ্লিকেশনগুলির uidজন্য সুরক্ষার মঞ্জুরি দেয় এমন বিভিন্ন বরাদ্দের কারণে প্রতিটি চলমান অ্যাপ্লিকেশন অন্যটির প্রক্রিয়া পদদলিত করতে পারে না ।

দিকে তাকিয়ে আরেকটি উপায় এই হল - ছিল এক সাধারণ হচ্ছে uidজন্য সব অ্যাপ্লিকেশন, তারপর একটি দূষিত আবেদন সত্যিই ব্যাপক ধ্বংস কারণ, একজনের বৈশিষ্ট্য উপেক্ষা না, পথিমধ্যে অন্য অ্যাপ্লিকেশনের চলমান কোডে পীয়ারিং হতে হবে এবং খারাপ জিনিস সমস্ত প্রকারের করতে পারি না টি এম যে আবেদন।


3

Dalvik VM- র একটি নিরাপত্তা সীমানা প্রদান করা হয় না, কিন্তু কার্নেল হয় প্রক্রিয়া VM- র রান পরিপ্রেক্ষিতে একটি নিরাপত্তা সীমানা করে। কেন, উদাহরণস্বরূপ, এটি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন নেটিভ কোড চালানোর জন্য কোন বড় চুক্তি হয়, এটা যা (আরও কম) সংজ্ঞা অনুসারে ভিএম এর বাইরে চলে। এটি এখনও প্রক্রিয়াধীন রয়েছে এবং কার্নেলটি নিশ্চিত করে যে প্রক্রিয়াটি ভিএম এর মধ্যে কোড চলছে কিনা তা অন্য অ্যাপ্লিকেশনগুলির ক্ষতি করতে সক্ষম হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.