কেমু :
কিউমু নিজস্ব একটি সম্পূর্ণ এবং একক সফ্টওয়্যার। আপনি মেশিনগুলি অনুকরণ করতে এটি ব্যবহার করেন, এটি খুব নমনীয় এবং পোর্টেবল। মূলত এটি একটি বিশেষ 'রিকম্পিলার' দ্বারা কাজ করে যা প্রদত্ত প্রসেসরের জন্য লিখিত বাইনারি কোডটিকে অন্য একটিতে রূপান্তর করে (বলুন, পিপিসি ম্যাকের উপর এমআইপিএস কোড চালাতে, বা একটি এক্স 86 পিসিতে এআরএম)।
প্রসেসরের চেয়ে বেশি অনুকরণ করার জন্য, কেমু পেরিফেরিয়াল এমুলেটরগুলির একটি দীর্ঘ তালিকা অন্তর্ভুক্ত করে: ডিস্ক, নেটওয়ার্ক, ভিজিএ, পিসিআই, ইউএসবি, সিরিয়াল / সমান্তরাল পোর্ট ইত্যাদি,
কে কিউমু :
নির্দিষ্ট ক্ষেত্রে যেখানে উত্স এবং লক্ষ্য উভয়ই একই আর্কিটেকচার (x86 এর উপর x86 এর সাধারণ ক্ষেত্রে), এখনও কোনও 'সুবিধাপ্রাপ্ত নির্দেশাবলী' সরাতে এবং প্রসঙ্গের স্যুইচগুলির সাথে তাদের প্রতিস্থাপনের জন্য কোডটি বিশ্লেষণ করতে হবে। এটি x86 লিনাক্সে যতটা সম্ভব দক্ষ করার জন্য, কে কিউমু নামে একটি কার্নেল মডিউল রয়েছে যা এটি পরিচালনা করে।
কার্নেল মডিউল হওয়ার কারণে, কে কিউমু সর্বনিম্ন কোডটি অপরিবর্তিতভাবে সম্পাদন করতে সক্ষম হয়, কেবলমাত্র সর্বনিম্ন স্তরের রিং0-শুধুমাত্র নির্দেশাবলী প্রতিস্থাপন করে। সেক্ষেত্রে ইউজারস্পেস কিমু এখনও এমুলেটেড মেশিনের জন্য সমস্ত র্যাম বরাদ্দ করে এবং কোডটি লোড করে। পার্থক্যটি হ'ল কোডটি পুনরায় সংবিধানের পরিবর্তে এটি কে কিউমুকে স্ক্যান / প্যাচ / চালানোর জন্য কল করে। সমস্ত পেরিফেরিয়াল হার্ডওয়্যার এমুলেশন কিমুতে সম্পন্ন হয়।
এটি প্লেইন কেমুর চেয়ে অনেক দ্রুত কারণ বেশিরভাগ কোড অপরিবর্তিত, তবে এখনও রিং0 কোড (ভিএম এর কার্নেলের বেশিরভাগ কোড) রুপান্তর করতে হয়, সুতরাং কর্মক্ষমতা এখনও ভুগছে।
কেভিএম :
কেভিএম হ'ল কয়েকটি জিনিস: প্রথমে এটি একটি লিনাক্স কার্নেল মডিউল — এখন মূলরেখায় অন্তর্ভুক্ত — যা প্রসেসরটিকে একটি নতুন 'অতিথি' অবস্থায় পরিবর্তন করে। অতিথি রাষ্ট্রের নিজস্ব রিং স্টেটগুলির একটি সেট রয়েছে তবে সুবিধাযুক্ত রিং0 নির্দেশাবলী হাইপারভাইজার কোডে ফিরে আসে। যেহেতু এটি এক্সিকিউশনের নতুন প্রসেসর মোড, তাই কোডটি কোনওভাবেই পরিবর্তন করতে হবে না।
প্রসেসর স্টেট স্যুইচিং ছাড়াও, কার্নেল মডিউলটি এমএমইউ রেজিস্টারগুলি (ভিএম হ্যান্ডেল করতে ব্যবহৃত) এবং পিসিআই এমুলেটেড হার্ডওয়্যারের কিছু অংশের মতো এমুলেশনের কয়েকটি নিম্ন-স্তরের অংশগুলিও পরিচালনা করে।
দ্বিতীয়ত, কেভিএম হ'ল কেমু এক্সিকিউটেবলের একটি কাঁটাচামচ। উভয় দলই সর্বনিম্ন পার্থক্য রাখতে সক্রিয়ভাবে কাজ করে এবং এটি হ্রাস করার ক্ষেত্রেও অগ্রগতি রয়েছে। অবশেষে, লক্ষ্যটি হ'ল কেমু যে কোনও জায়গায় কাজ করা উচিত, এবং যদি কেভিএম কার্নেল মডিউল পাওয়া যায় তবে এটি স্বয়ংক্রিয়ভাবে ব্যবহার করা যেতে পারে। তবে অদূর ভবিষ্যতের জন্য, কেমু টিম হার্ডওয়্যার এমুলেশন এবং বহনযোগ্যতার দিকে মনোনিবেশ করে, অন্যদিকে কেভিএম লোকেরা কার্নেল মডিউলে ফোকাস দেয় (কখনও কখনও সেখানে অনুকরণের ছোট অংশগুলিকে সরিয়ে দেয়, যদি এটি কার্যকারিতা উন্নত করে), এবং বাকী ইউজারস্পেস কোডের সাথে ইন্টারফেস করে।
কেভিএম-কিমু এক্সিকিউটেবল সাধারণ কিমুর মতো কাজ করে: র্যাম বরাদ্দ করে, কোড লোড করে এবং পুনরায় সংশোধন করার পরিবর্তে, বা কে কিউমুকে ফোন করার পরিবর্তে এটি একটি থ্রেড তৈরি করে (এটি গুরুত্বপূর্ণ)। থ্রেডটি কেভিএম কার্নেল মডিউলটিকে অতিথি মোডে স্যুইচ করতে কল করে এবং ভিএম কোড কার্যকর করতে এগিয়ে যায়। সুবিধাপ্রাপ্ত নির্দেশে, এটি কেভিএম কার্নেল মডিউলটিতে ফিরে যায়, যা প্রয়োজনে বেশিরভাগ হার্ডওয়্যার এমুলেশন পরিচালনা করতে কিমু থ্রেডকে সংকেত দেয়।
এই আর্কিটেকচারের একটি দুর্দান্ত জিনিস হ'ল অতিথি কোডটি একটি পিক্স থ্রেডে অনুকরণ করা হয় যা আপনি সাধারণ লিনাক্স সরঞ্জামগুলির সাহায্যে পরিচালনা করতে পারেন। আপনি যদি 2 বা 4 কোর সহ একটি ভিএম চান, কেভিএম-কিমু 2 বা 4 টি থ্রেড তৈরি করে, তাদের প্রত্যেকে কেভিএম কার্নেল মডিউলটিকে সম্পাদন শুরু করার জন্য কল করে। সংমিশ্রণ — আপনার কাছে যথেষ্ট সত্যিকারের কোর থাকে — বা সময়সূচী not না থাকলে code কোডটি ছোট এবং আশ্চর্যকে সীমিত রেখে সাধারণ লিনাক্স শিডিয়ুলার দ্বারা পরিচালিত হয়।