मुझे "क्यों" भाग को संबोधित करने दें।
आधुनिक ओएस के कारणों में से एक सिस्टम पर एक ही समय में कई कार्यक्रमों (प्रक्रियाओं) को चलाने की अनुमति देना है। यदि आप इसे सुरक्षित रूप से करना चाहते हैं, तो निम्नलिखित होने चाहिए:
आप शायद (जब तक कि आपकी कोई विशेष आवश्यकता न हो) सिस्टम में रैम को एक निश्चित फैशन में विभाजित नहीं करना चाहते हैं - उदाहरण के लिए 256MB प्रति प्रक्रिया तय की गई है - आपको 2GB प्रणाली में 8 प्रक्रियाओं तक सीमित करता है। आप प्रत्येक प्रक्रिया को स्मृति के लिए "पूछने" में सक्षम होना चाहते हैं और जब यह किया जाता है तो इसे वापस कर सकते हैं।
तुम भी उपकरणों के बीच एक निश्चित फैशन में I / O उपकरणों को विभाजित नहीं करना चाहते हैं। आमतौर पर आप कुछ या सभी हार्डवेयर चाहते हैं, जैसे मेमोरी एक साझा संसाधन हो, या कम से कम केवल विशिष्ट समय पर विशिष्ट प्रक्रियाओं के लिए अस्थायी रूप से अनन्य हो। इसके लिए आवश्यक है कि सभी प्रक्रियाएं I / O को अपने दम पर करने की कोशिश न करें, लेकिन I / O को शेड्यूल करने और समन्वय करने के लिए "कुछ करें"। शेड्यूलिंग इसलिए महत्वपूर्ण है क्योंकि अधिकांश I / O CPU की तुलना में बहुत धीमा है, इसलिए आप CPU को अन्य प्रक्रियाओं के लिए काम कर सकते हैं जबकि यह I-O पर भी सिंगल-कोर सिस्टम पर प्रतीक्षा कर रहा है।
उपरोक्त सही करने के लिए, किसी को कई सीपीयू हार्डवेयर सुविधाओं का लाभ उठाने की आवश्यकता होती है। इनमें से एक MMU है, दूसरा संरक्षित मोड है। क्या दो OS दो या दो से अधिक OSes चलाने के लिए सहकारी रूप से इन हार्डवेयर विशेषताओं को साझा कर सकते हैं?
ज़रूर, लेकिन हार्डवेयर में ऐसा कुछ भी नहीं है जो एक OS को दूसरे OSes मेमोरी पर स्टंपिंग करने से रोक सके। यदि CPU कर्नेल मोड में है (इसमें केवल एक कर्नेल मोड है), कोई भी कोड कुछ भी कर सकता है। एक ओएस से कोड या दूसरे ओएस के डेटा को चलाने के लिए यह 100% संभव है। और हम जानते हैं कि ऑपरेटिंग सिस्टम की अतीत में कमजोरियां रही हैं और भविष्य में और अधिक होंगी। इसलिए यह सुरक्षा के लिए बहुत बुरा है।
अब, यदि आप इस पर एक और "परत" लगा सकते हैं और कई ओएस के लिए हार्डवेयर समर्थन की आवश्यकता है, तो क्या यह अच्छा नहीं होगा? ठीक ऐसा ही हार्डवेयर वर्चुअलाइजेशन की सुविधाएँ करती हैं, वे कई चलने वाले OSes के बीच एक हार्डवेयर अवरोध डालती हैं, और उनके लिए एक उच्च-स्तरीय "इंटरफ़ेस" होता है, जिसे हाइपरवाइज़र कहा जाता है। आपके पास केवल एक हाइपरविजर हो सकता है। और हाँ, OS के तहत चलने वाली प्रक्रियाओं को I / O करने के लिए तीन परतों से गुजरना होगा (प्रक्रिया - स्थानीय कर्नेल - हाइपरवाइज़र)