ऑपरेटिंग सिस्टम के मेमोरी मैनेजमेंट विषय में हमने पिछले लेख में पेजिंग के बारे में बात की थी। उसी को आगे बढ़ते आज हम डिमांड पेजिंग के बारे में जानेंगे। पेजिंग के सिद्धांत में ओर सुधार करके डिमांड पेजिंग लाया गया। तो चलिए जानते हैं demand paging in os in Hindi.
जैसा कि पेजिंग में हार्ड डिक्स ( सेकेंडरी मेमोरी) में पड़े हुए प्रोसेस को पहले बराबर टुकड़ों में तोड़ा जाता है जिसे पेज कहा जाता है। इसके बाद मेंन मेमोरी (RAM) को भी बराबर हिस्सों में तोड़ा जाता है जिसे फ्रेम्स कहा जाता है। पेज और फ्रेम का आकार एक जैसा होता है और जब कोई प्रोसेस सीपीयू पर एग्जीक्यूट होने आता है तब उससे संबंधित सारे पेज मेंन मेमोरी में लोड कर लिए जाते हैं।
लेकिन इसमें सबसे बड़ी दिक्कत यह है कि मेंन मेमोरी का आकार सीमित है। तो ऐसे में प्रोसेस के एग्जीक्यूट के समय सेकेंडरी मेमोरी से उन खास पेजों को मेंन मेमोरी में लाया जाता है जिनकी आवश्यकता होती है; इसी को डिमांड पेजिंग कहते हैं।
डिमांड पेजिंग क्या होती है?
डिमांड पेजिंग के माध्यम से हम यह सुनिश्चित करते हैं कि सेकेंडरी मेमोरी से उन पेजों को मेंन मेमोरी में लाया जाए जिममें रखा डाटा सीपीयू को चाहिए।
उदाहरण के लिए सीपीयू को जिस डाटा की जरूरत है उससे संबंधित पेज को मेंन मेमोरी में लाया जाता है और काम पूरा होने के बाद वापस उसे सेकेंडरी मेमोरी में भेज दिया जाता है ताकि अन्य प्रोसेस के पेज लोड हो सके।
डिमांड पेजिंग वर्चुअल मेमोरी की अवधारणा पर आधारित है। वर्चुअल मेमोरी का सिद्धांत कहता है कि अगर कोई प्रोसेस को सीपीयू पर एग्जीक्यूट करना है तो उस पूरे प्रोसेस को मेंन मेमोरी में लेकर आने के बजाय उसके कुछ हिस्से को जिसकी जरूरत वर्तमान समय में है को लाया जाए। इससे हम मेंन मेमोरी की सीमित आकर की मुश्किल को हल कर सकते हैं।
डिमांड पेजिंग में हम स्वॅपिंग (swapping) का इस्तेमाल करते हैं जिसमें जरूरी पैजों को swap in (मेंन मेमोरी में लाना) किया जाता है और जरूरत खत्म होने पर swap out (मेंन मेमोरी से भेजना) करते हैं।
डिमांड पेजिंग कैसे होती है?
शुरुआत में हम मेंन मेमोरी को खाली मानते हैं और सभी प्रोसेस सेकेंडरी मेमोरी में पड़े हुए हैं। अब एक प्रोसेस सीपीयू को इस्तेमाल करना चाहता है ऐसे में वह सीपीयू पर एग्जीक्यूट होने के लिए आएगा इसी समय इस प्रोसेस से संबंधित कुछ मुख्य पेज और पेज टेबल मेंन मेमोरी में लोड किए जाते हैं।
पेज टेबल में उस प्रोसेस के सभी पेज की जानकारी होती है। यहां याद रखें कि पेज टेबल में उन पेजों की भी जानकारी रहती है जो अभी मेंन मेमोरी में नहीं है। पेज टेबल में मुख्य तीन हिस्से होते हैं जिसमें पहले दो हिस्से में पेज नंबर और वह मेंन मेमोरी में किस फ्रेम में उपलब्ध है इसकी जानकारी होती है। अगर कोई पेज मेंन मेमोरी में उपलब्ध नहीं है तो फ्रेम नंबर खाली होगा। इसी के साथ एक इंटरपट बिट (interrupt bit) 0 और 1 के रूप में होती है। अगर यह बिट 0 है यानी वह पेज मेंन मेमोरी में है अगर बिट 1 है पेज मेंन मेमोरी में नहीं है। अब अगर सीपीयू किसी प्रक्रिया के किसी पेज की मांग करता है तो वह इस प्रकार होगा।
सबसे पहले सीपीयू जरूरत वाले पेज का लॉजिकल ऐड्रेस उत्पन्न करेगा। इसके बाद इस लॉजिकल ऐड्रेस के माध्यम से मेंन मेमोरी में उस प्रोसेस के पेज टेबल में ढूंढा जाएगा कि वह पेज किस फ्रेम नंबर पर पड़ा है। यहां सीधा पेज नहीं ढूंढा जाता बल्कि इंटरपट बिट को देखा जाता है अगर वह जीरो है यानी कि वह पेज मेंन मेमोरी में उपलब्ध है। इसके बाद उस पेज नंबर के समानांतर फ्रेम नंबर को देखा जाता है और वहां से डाटा उठाकर सीपीयू को दे दिया जाता है।
दूसरा यह हो सकता है कि इंटरपट बिट 1 है यानी सीपीयू द्वारा मांगा हुआ पेज मेंन मेमोरी में नहीं है। तो सबसे पहले उस पेज को सेकेंडरी मेमोरी से मेंन मेमोरी में लाना होगा। सीपीयू द्वारा मांगे हुए पेज का मेंन मेमोरी में ना होना पेज फॉल्ट (page fault )कहलाता है।
पेज फॉल्ट होने के बाद सीपीयू ऑपरेटिंग सिस्टम को बताता है कि इस पेज की आवश्यकता है और इसे मेंन मेमोरी में लाया जाए। इसके बाद ऑपरेटिंग सिस्टम यूजर मॉड से करनल मोड में चला जाता है और पेज फॉल्ट को हल करने के लिए फाइल मैपिंग टेबल (FMT) का इस्तेमाल करता है। इस टेबल में उस प्रोसेस से जुड़े सभी पेजों की सेकेंडरी मेमोरी में एड्रेस की जानकारी होती है। जहां से वह एड्रेस उठाकर सेकेंडरी मेमोरी से उस पेज को लाकर मेंन मेमोरी में लोड कर देता है। इसके बाद वह पेज टेबल में इंटरपट बीट को 0 कर देता है।
कई बार मेंन मेमोरी भरी हुई होती है जिसमें पेज रिप्लेसमेंट एल्गोरिथम के माध्यम से यह तय किया जाता है कि कौनसे पेजों की आवश्यकता नहीं है जिन्हें सेकेंडरी मेमोरी में वापस भेज दिया जाता है और पेज फॉल्ट वाले पेज को लोड कर दिया जाता है।
डिमांड पेजिंग के फायदे
मल्टीटास्किंग
हर एक ऑपरेटिंग सिस्टम में पेजर एल्गोरिथम के माध्यम से यह निश्चित होता है कि कोई भी प्रोसेस के कुछ मुख्य पेज पहले ही मेंन मेमोरी में लोड कर लिए जाते हैं इसके बाद सीपीयू की मांग के आधार पर उसके अन्य पेज मेमोरी में swap in और swap out के माध्यम से लाए जाते हैं।
इससे यह फायदा होता है कि हम एक साथ बहुत सारे प्रोसेस के पेज मेंन मेमोरी में रख सकते हैं। क्योंकि अगर किसी कारणवश एक प्रोसेस जो सीपीयू को इस्तेमाल कर रहा है वह इनपुट- आउटपुट ऑपरेशन के लिए चला जाता है ऐसे में सीपीयू खाली होगा जिससे इस समय दूसरे प्रोसेस को सीपीयू को एग्जीक्यूशन के लिए दे सकते हैं। इससे सीपीयू की क्षमता और मल्टीटास्किंग की डिग्री बढ़ती है क्योंकि एक ही समय पर एक से ज्यादा प्रोसेस सीपीयू का इस्तेमाल कर रहे हैं।
बड़े प्रक्रिया को लाना
अगर मान ले की कोई प्रक्रिया 100MB का है और मेंन मेमोरी का आकार 50MB का है तो ऐसे में हम चाहकर भी पूरे प्रक्रिया को मेंन मेमोरी में लोड नहीं कर सकते। ऐसे में डिमांड पेजिंग के माध्यम से हम जिन पेज की आवश्यकता पहले है उन्हें लोड कर सकते हैं और स्वॅपिंग के माध्यम से अन्य पेज को भी मेंन मेमोरी में ला सकते हैं।
इसका सबसे अच्छा उदाहरण ऑनलाइन वीडियो गेम्स है। जोकि आमतौर पर गीगाबाइट में होती है। भारत में कई मशहूर गेम है जो 2GB से 4GB तक होती है और छोटे एंड्रॉयड फोन मेंन मेमोरी (RAM) का आकार 4GB का होता है। इन फोन में गेम अच्छे से चलती है क्योंकि इसमें डिमांड पेजिंग का इस्तेमाल होता है जहां पूरी गेम को मेंन मेमोरी में लोड करने के बजाय उसके कुछ मुख्य पेजों को मेंन मेमोरी में लोड किया जाता है।
हमें आशा है की डिमांड पेजिंग क्या होती है (demand paging in os in Hindi.) के बारे में जानकारी मिल गई होगी इसके अलावा अगर आप ऑपरेटिंग सिस्टम से जुड़े अन्य विषय को समझना चाहते हैं तो हमारे दूसरे लेख पढ़ सकते हैं या फिर हमें कमेंट करके बता सकते है।