शुद्ध मांग पेजिंग के दौरान स्वैप प्रबंधन


12

निम्नलिखित एक संदेह है कि मैं ओएस होम असाइनमेंट करते समय भर में आया था - हालांकि, यह एक सीधा कोडिंग प्रश्न की तुलना में अधिक अवधारणा-आधारित लगता है, इसलिए आईएमएचओ मुझे नहीं लगता कि इसके लिए होमवर्क टैग उपयुक्त है।

एक ही समय में चल रही कई प्रक्रियाओं के लिए एक शुद्ध मांग पेजिंग योजना में, एक निश्चित मात्रा में रैम और स्वैप मेमोरी को देखते हुए, निम्नलिखित 2 मामलों में क्या होता है, स्वैप स्पेस को, जब

  1. एक प्रक्रिया पृष्ठ-दोष का सामना करती है, और रैम में कोई भी मुफ्त फ़्रेम उपलब्ध नहीं होता है, इसलिए प्रक्रिया के कुछ पृष्ठों की आवश्यकता होती है 'कर्नेल फ्रेम्स का हिस्सा स्वैप करने के लिए लिखा जाना चाहिए (सरलता के लिए, मैं कॉपी पर विचार नहीं कर रहा हूं। -ऑन-राइट केस)। स्पष्ट रूप से, स्वैप स्पेस में यह फ़्रेम कहाँ लिखा होगा, और इसके लिए किन डेटा संरचनाओं को अपडेट करने की आवश्यकता है?

  2. जब किसी प्रक्रिया को किसी विशेष पृष्ठ में पृष्ठ-की आवश्यकता होती है, तो यह स्वैप मेमोरी में कहां दिखता है, और यह कैसे पता चलेगा कि उस विशेष पृष्ठ में स्वैप में सभी मौजूद हैं?

जैसा कि आप अच्छी तरह से कल्पना कर सकते हैं, मुझे यह समझने में कठिनाई हो रही है कि शुद्ध मांग प्रबंधन योजना के दौरान स्वैप स्थान का प्रबंधन किस तरीके से किया जाना चाहिए, और क्या डेटा संरचनाएं आवश्यक होंगी। यह बहुत अच्छा होगा यदि आप अपने उत्तर में किसी भी लिंक का उल्लेख कर सकते हैं (मैंने खोजा था "ऑपरेटिंग सिस्टम कॉन्सेप्ट्स - साइबर्सचैट द्वारा 8 वां संस्करण, मैं अपने प्रश्न के लिए स्पष्ट उत्तर नहीं पा सका)।


3
एक अच्छा हार्ड कोर सीएस सवाल!
डेव क्लार्क

जवाबों:


8

इस प्रश्न का उत्तर देने के लिए मैं कुछ पूर्वापेक्षित समझ पर जाऊंगा। शुद्ध मांग पेजिंग को हार्डवेयर समर्थन के बिना पूरा नहीं किया जा सकता है। सभी आधुनिक कंप्यूटर आर्किटेक्चर पेजिंग का समर्थन करते हैं, हालांकि कई में अलग-अलग कार्यान्वयन विवरण होते हैं।

x86 प्रोसेसर वर्चुअल एड्रेस स्पेस और पेज मैपिंग का ट्रैक रखने के लिए पेज टेबल कहलाता है, साथ ही एक्सेस प्राइवेटलाइजेस के बारे में बिट्स, और अधिक प्रासंगिक, चाहे वह पेज भौतिक मेमोरी में भी मौजूद हो या नहीं । उल्लंघन पृष्ठ दोषों को ट्रिगर करते हैं जो ओएस द्वारा फंस जाते हैं।

उस पर अधिक जानकारी के लिए, इस लेख को देखें

पेज स्वैपिंग के सवाल का जवाब देने के लिए, हमें सबसे पहले इस सवाल पर जाना चाहिए कि ऑपरेटिंग सिस्टम इस बात पर नज़र रखता है कि किस प्रक्रिया का उपयोग किस पेज पर किया जाता है और उन्हें कैसे आवंटित किया जाता है। कई अलग-अलग डेटा संरचनाएं हैं जिनका उपयोग इस तरह के लिए किया जा सकता है। एक फ्लैट बिट सरणी अंकन कि क्या एक फ्रेम आवंटित किया गया है या नहीं एक ही रास्ता है। लिंक की गई सूची या स्टैक एक और है। शुद्ध मांग पेजिंग के साथ, आवंटित पृष्ठों को वास्तव में वर्तमान में चिह्नित नहीं किया जाता है जब उन्हें आवंटित किया जाता है। इसका प्रभाव यह है कि कोई भी भौतिक राम एक प्रक्रिया के लिए अलग नहीं है, जब तक कि वह वास्तव में इसे नहीं लिखता है। एक बार यह करने के बाद, हार्डवेयर एक गलती फेंकता है जो कि ओएस फंस जाता है, और फिर ओएस एक स्वैपिंग एल्गोरिथ्म का उपयोग करता है यदि पहले से आवंटित आभासी पृष्ठ पर असाइन करने के लिए कोई उपलब्ध भौतिक पृष्ठ नहीं हैं।

पृष्ठ फ़्रेम आवंटन के बारे में अधिक जानकारी के लिए, यहाँ देखें । वहां आपको कुछ उपयुक्त डेटास्ट्रक्चर का एक सामान्य अवलोकन दिखाई देगा।

एक बार पृष्ठ आवंटन के लिए एक उपयुक्त एल्गोरिथ्म लागू होने के बाद, स्वैपिंग के लिए डिस्क स्थान आवंटित करने के लिए एक और चुना जाना चाहिए। उदाहरण के लिए, विंडोज ने ऐतिहासिक रूप से पेज स्वैपिंग के लिए फाइल सिस्टम में एक फ्लैट फाइल का उपयोग किया है। मैं कल्पना करूँगा कि आबंटित पृष्ठों पर नज़र रखने वाले डेटास्ट्रक्चर में प्रत्येक नोड के लिए फ़ाइल में एक ऑफसेट पॉइंटर है, जो डिस्क में पेज की स्थिति को दर्शाता है। यूनिक्स जैसी ऑपरेटिंग सिस्टम ने पारंपरिक रूप से पेज स्वैपिंग के लिए अलग-अलग विभाजन का उपयोग किया है जो यकीनन तेज है क्योंकि फाइल सिस्टम लेयर नहीं है।

आवंटन एल्गोरिथ्म के उन लोगों से स्वैपिंग एल्गोरिथ्म डेटास्ट्रक्चर को तलाक देना भी संभव है, हालांकि दोनों संबंधित हैं इसलिए यह संभवतः अक्सर किया जाता है।

मुझे उम्मीद है कि आपके प्रश्न का उत्तर उस सापेक्ष संक्षिप्तता के बावजूद है जिसके साथ मैंने इसका इलाज किया है। मैंने पाया कि ऑपरेटिंग सिस्टम के बारे में जानने का सबसे अच्छा तरीका है कभी-कभार नॉटी आर्किटेक्चरल विशिष्ट विवरणों में गोता लगाना जो कि wiki.osdev.org और www.osdever.net जैसी साइटों पर पाए जा सकते हैं जो विशेष रूप से हॉबी ओएस बनाने और उत्कृष्ट ट्यूटोरियल प्रदान करने का काम करते हैं। इस तरह के विवरण पर।


हाँ, अब मुझे समझ में आया कि कैसे ओएसडीई के लिंक के लिए ओएसएस - +1 के बीच डेटा संरचनाओं आदि का विवरण बेतहाशा भिन्न हो सकता है!
TCSGrad
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.