কাঠামোর ক্ষেত্রে ভার্চুয়ালাইজিং কীভাবে অনুকরণের থেকে পৃথক হয়?


20

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

আমার মূল প্রশ্নটি হল, ভার্চুয়ালাইজেশন কীভাবে বিকাশ করা হয়? ভার্চুয়াল মেশিনে একটি প্রক্রিয়া হিসাবে চালানোর জন্য আমরা কীভাবে একটি সম্পূর্ণ ওএসকে সক্ষম করি, কিন্তু প্রকৃত সিপিইউ ব্যবহারের সময়ও এটি স্বাধীনভাবে চালিত পেতে পারি? আমি কেবল অনুকরণ জানি, ভার্চুয়ালাইজেশন নয়, তাই যদি কেউ সাহায্য করতে পারে তবে তা দুর্দান্ত হত!

PS: আমি পার্থক্যটি সম্পূর্ণরূপে জিজ্ঞাসা করছি না, তবে তারা কীভাবে সফ্টওয়্যার চালায় তার মধ্যে পার্থক্য।

উত্তর:


32

মূলত, আপনি অতিথি ওএসকে আসল হার্ডওয়্যার ব্যবহার করতে দিতে পারেননি কারণ এটির নিয়ন্ত্রণ করার কোনও উপায় আপনার ছিল না। আপনি যদি এটি আসল সিপিইউতে চালানোর চেষ্টা করে থাকেন তবে আপনার কোনও গ্যারান্টি নেই যে এটি হোস্ট ওএসের কাছে নিয়ন্ত্রণটি ফিরিয়ে দেবে।

ভার্চুয়ালাইজেশন হিসাবে আপনি বর্ণনা হিসাবে এটি একটি হার্ডওয়্যার পর্যায়ে নির্দিষ্ট নিয়ম এবং বিধিনিষেধ প্রয়োগ করার অনুমতি দিয়ে হার্ডওয়্যারে প্রয়োগ করা হয় যা হোস্ট ওএস দ্বারা পরিচালিত হতে পারে। এটি হোস্ট ওএসকে অতিথি কী কী করতে পারে এবং কী করতে পারে না সে সম্পর্কে নিয়মগুলি সেট করার অনুমতি দেয় এবং তারপরে প্রকৃত হার্ডওয়্যারটিতে অতিথিকে আসলে চালিত করে। অতিথি যদি নিয়ম লঙ্ঘন করে এমন সত্যিকারের হার্ডওয়্যার (যেমন কোনও ডিস্ক ডিভাইস অ্যাক্সেস করার চেষ্টা করা) নিয়ে কিছু করার চেষ্টা করে তবে হার্ডওয়্যার অতিথিকে স্থগিত করবে এবং হোস্টকে একটি বাধা প্রেরণ করবে, যা হোস্টকে প্রতিক্রিয়া সরবরাহ করতে দেয় (যেমন: কোনও এমুলেটেড ডিস্ক ডিভাইস থেকে ডেটা ফেরানো) এবং তারপরে অতিথিকে পুনরায় শুরু করুন।

প্রক্রিয়াটির একটি সরলীকৃত উদাহরণ এখানে:

হোস্ট ওএস: আরে সিপিইউ, আপনার এই কোডটি ভার্চুয়ালাইজড চালানো দরকার। যদি এটি এমন কিছু করতে চায় যা কেবল নির্দেশনা কার্যকর করে না me

হোস্ট সিপিইউ: আপনি পেয়েছেন!
হোস্ট সিপিইউ সমস্ত হোস্ট রেজিস্টার এবং রাজ্যকে সংরক্ষণ করে এবং তারপরে অতিথি ওএস কোড কার্যকর করে

অতিথি ওএস: আমি বেঁচে আছি! আরে সিপিইউ, আপনি কি আমাকে এই ফাইলটি পেতে পারেন?

হোস্ট সিপিইউ: আহ ... অবশ্যই এক মুহূর্ত.
হোস্ট সিপিইউ সমস্ত গেস্ট রেজিস্টার এবং রাজ্য সংরক্ষণ করে এবং তারপরে সমস্ত হোস্ট রেজিস্টার এবং রাষ্ট্রীয়
হোস্ট সিপিইউ পুনরুদ্ধার করে : আরে হোস্ট ওএস, অতিথি এই ফাইলটি চেয়েছিল!

হোস্ট ওএস: ওহ, ভাল তাদের এ দিন: ভার্চুয়াল হার্ড ড্রাইভ থেকে ফাইল

হোস্ট সিপিইউ: আপনি পেয়েছেন!
হোস্ট সিপিইউ সমস্ত হোস্ট রেজিস্টার এবং রাজ্যকে সংরক্ষণ করে, অতিথি নিবন্ধক এবং রাষ্ট্র পুনরুদ্ধার করে এবং তার পরে অতিথি ওএস কোডটি চালানো শুরু করে
হোস্ট সিপিইউ: এই ফাইলটি এখানে!

অতিথি ওএস: মিষ্টি, ধন্যবাদ!

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


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

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

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

এরপরে আসল ভার্চুয়ালাইজড "সময়", যেমনটি ছিল। ওএস সিপিইউকে সেট বিরতিতে সক্রিয় প্রক্রিয়াটিকে বাধাগ্রস্থ করতে কনফিগার করতে পারে, যার ফলে সময়সূচী নিয়ন্ত্রণ নিতে এবং প্রক্রিয়াগুলির মধ্যে স্যুইচ করা যায়। ওএস এখন সরাসরি হার্ডওয়্যারে প্রসেস চালাতে পারে এবং তবুও তাদের সিপিইউ সময়ের অপব্যবহার থেকে বিরত রাখতে পারে। এটি একটি হার্ডওয়্যার টাইমার দ্বারা সরবরাহ করা হয়েছিল ।

এরপরে আসল ভার্চুয়ালাইজড মেমরি : ভাগ করা মেমরির সমস্যাটি হ'ল যে কোনও প্রক্রিয়া অন্য কোনও প্রক্রিয়ার স্মৃতি পড়তে পারে। যখন মেরির প্রোগ্রামগুলি তার ওয়েব ব্রাউজার থেকে বব এর পাসওয়ার্ড পড়ে? ভার্চুয়াল মেমরি ওএসকে মেমরিটিকে ম্যাপ করতে দেয় যা কোনও প্রক্রিয়া শারীরিক মেমরির বিভিন্ন অংশে দেখে বা এমনকি তাদের পুরোপুরি শারীরিক স্মৃতি থেকে সরিয়ে দেয় (পৃষ্ঠার ফাইলে)। যে কোনও সময় কোনও প্রক্রিয়া মেমোরিটি পড়তে বা লেখার চেষ্টা করে, সিপিইউর ভিএমএমইউ (ভার্চুয়াল মেমরি ম্যানেজমেন্ট ইউনিট) এটি কোথায় শারীরিক স্মৃতিতে ম্যাপ করা হয় তা দেখে এবং সেখানে ক্রিয়াটি সম্পাদন করে। যদি এটি মেমরির বাইরে চলে যায় তবে সিপিইউ ওএসকে পৃষ্ঠা ফাইল থেকে মেমোরিতে আনার জন্য কল করে।

ঠিক আছে, সুতরাং এই মুহুর্তে আমরা এক্স ৮ process প্রসেসরের সূচনা সম্পর্কে পৌঁছেছি, যেখানে আমরা নিরাপদে প্রক্রিয়াগুলি পরিচালনা করতে পারি এবং ওএস বিশেষত তাদের এটি করার অনুমতি না দিলে সক্রিয়ভাবে তাদের সিস্টেমটি গ্রহণ করা থেকে বিরত রাখতে পারি। এই মুহুর্তে, প্রক্রিয়াগুলি কার্যকরভাবে "ভার্চুয়ালাইজড" হয়। এই সমর্থনটি দীর্ঘকাল ধরে রয়েছে, সুতরাং আপনি সত্যিই লোকেরা ভার্চুয়ালাইজড প্রক্রিয়াগুলি সম্পর্কে কথা বলতে শুনেন না, কারণ কেবলমাত্র অনুমান করা হয় যে সমস্ত প্রক্রিয়া এখন ভার্চুয়ালাইজড।

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


আমি একবার আইআরসি-র একটি আইন নাটকটির কথা মনে করিয়ে দিয়েছি (সম্ভবত এনএসএফডাব্লু: কিছু পিজি -13 ভাষা রয়েছে)
স্কট চেম্বারলাইন

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

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

@ লাইরিয়ান ব্যাখ্যার জন্য ধন্যবাদ। তবে এটি পুরানো নয়, এটি একটি অ্যাটম প্রসেসর। এই এক, নির্ভুল হতে: ark.intel.com/products/70105
NothingsImp

1

ভার্চুয়াল মেশিনে একটি প্রক্রিয়া হিসাবে চালানোর জন্য আমরা কীভাবে একটি সম্পূর্ণ ওএসকে সক্ষম করি, কিন্তু প্রকৃত সিপিইউ ব্যবহারের সময়ও এটি স্বাধীনভাবে চালিত পেতে পারি?

(নিম্নলিখিতটি অনেক সহজ করা হয়েছে is)

ওএস ব্যবহারকারী বা মোড প্রক্রিয়াগুলি বেশিরভাগ ক্ষেত্রে লাইনে রাখার জন্য একই বা অনুরূপ প্রক্রিয়াটি কাজে লাগিয়ে।

ব্যবহারকারী মোড প্রক্রিয়াগুলি সিপিইউ ব্যতিক্রম ঘটায় যখন তারা কিছু করার অনুমতি দেয় না এমন করার চেষ্টা করে।

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

এটি এই কার্নেলের পক্ষে হার্ডওয়্যার অ্যাক্সেস সম্পাদন করতে পারে, একটি পরিবর্তিত হার্ডওয়্যার অ্যাক্সেস (অর্থাত্ সরাসরি ডিস্ক সেক্টরের অ্যাক্সেসের পরিবর্তে কোনও ফাইলের একটি অংশ অ্যাক্সেস করতে পারে), বা আপনি যা স্বপ্ন দেখতে পারেন তা করতে পারে।

সিপিইউ ভার্চুয়াল মেশিন এক্সটেনশনগুলি মূলত এটি করার জন্য সিপিইউর পুরো "সুপারভাইজার" বা "সুরক্ষিত" মোডকে প্রসারিত করে এবং ভার্চুয়াল মেমরির একটি অতিরিক্ত "নেস্টিং স্তর" সরবরাহ করে যাতে ভার্চুয়ালাইজ করা সহজ হয়।


0

ভার্চুয়ালাইজেশন একটি কম্পিউটারের হার্ডওয়্যার অংশগুলি অনুকরণ জড়িত - একটি অতিথি অপারেটিং সিস্টেমের জন্য অযৌক্তিকরূপে চালিত করার জন্য যথেষ্ট - তবে বেশিরভাগ ক্রিয়াকলাপ দক্ষতার কারণে প্রকৃত হার্ডওয়্যারে এখনও ঘটে। ভার্চুয়ালাইজেশন তাই সাধারণত অনুকরণের চেয়ে দ্রুত হয় তবে প্রকৃত সিস্টেমে গেস্ট সিস্টেমের মতো একটি আর্কিটেকচার থাকতে হয়। উদাহরণস্বরূপ, ভিএমওয়্যার একটি বাস্তব ভার্চুয়াল উইন্ডোজ এক্সপি মেশিন "ভিতরে" চালানোর জন্য ভার্চুয়াল পরিবেশ সরবরাহ করতে পারে। তবে ভিএমওয়্যার বাস্তব x86 পিসি ব্যতীত অন্য কোনও রিয়েল হার্ডওয়ারে কাজ করতে পারে না।

ইন এমুলেশন ভার্চুয়াল মেশিন সফ্টওয়্যার সম্পূর্ণ হার্ডওয়্যার simulates। এটি একটি কম্পিউটার আর্কিটেকচারের জন্য একটি অপারেটিং সিস্টেমকে এমুলেটরটির জন্য রচনা করা আর্কিটেকচারে চালানোর অনুমতি দেয়। সাইন সমস্ত ক্রিয়াকলাপ সফ্টওয়্যারটিতে চালিত হয়, অনুকরণটি ধীর হতে থাকে তবে এটি হার্ডওয়্যার ইন্ডিপেন্ডেন্ট হওয়ার কারণে আরও প্ল্যাটফর্মগুলিকে সমর্থন করতে পারে।


ঠিক আছে ... তবে কীভাবে আপনি হার্ডওয়ারের অংশগুলি "সিমুলেটিং" বলতে চান? একটি এমুলেটর হুবহু কাজটি করে ... কীভাবে ভার্চুয়ালাইজিং আসল সিপিইউ রিসোর্সের সুবিধা নিতে অতিথি ওএসকে পাবেন?
টন বন

@ টনসনস: সংজ্ঞা অনুসারে : পি একজন এমুলেটর ঠিক একই কাজ করে না - এটি সিপিইউ থেকে শুরু করে সমস্ত কিছু এমুলেট করে। উদাহরণস্বরূপ বোচস একটি এমুলেটর। ভার্চুয়ালাইজেশন পাতলা; একটি হাইপারভাইসর অতিথি ওএসকে শারীরিক সিপিইউতে চালিত করে (মূলত অতিথিকে এটি সিপিইউর মালিকানা ভেবে ভ্রষ্ট করে)। যেহেতু অতিথির কাছে এটির সুবিধাগুলি না থাকে কারণ এটি মনে করে যে এটি তার রয়েছে, যদিও এটি যখন কার্নেল স্টাফ করার চেষ্টা করে তখন এটি "ত্রুটিগুলি" ট্রিগার করে। হাইপারভাইজার এই ত্রুটিগুলি পর্যবেক্ষণ করে এবং ভার্চুয়াল হার্ডওয়্যারটিকে ঝাঁকুনি দেয় যাতে অতিথির দেখাতে those অপারেশনগুলি আসলে ঘটেছিল।
সিএইচও

0

কেবল সম্পূর্ণতার জন্য, সিমুলেশনটিও রয়েছে , যেখানে মেশিনের ক্রিয়াগুলি নকল করা হয়, তবে কোড ব্যবহার করে যার অভ্যন্তরগুলি "বাস্তব" মেশিনের থেকে মূলত পৃথক হতে পারে। ("ফ্লাইট সিমুলেটর" ভাবুন)) প্রায়শই সিমুলেটরগুলি "রিয়েল" মেশিনের উত্স কোডটি সংকলন করে তবে সম্পূর্ণ ভিন্ন ওএস এবং আই / ও সুবিধা সহ সম্পূর্ণ ভিন্ন সিপিইউ আর্কিটেকচারকে লক্ষ্য করে।

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