मेमोरी मेनेजमेंट का एक महत्वपूर्ण नकारात्मक पक्ष, वास्तविक फिजिकल मेमोरी और मेमोरी संबंधी यूजर की धारणा को अलग करना है। पेजींग वह स्कीम है, जिसके द्वारा इन दोनों मेमोरी को पृथक किया जा सकता है। यूजर की धारणा फिजिकल मेमोरी पर मेप होती है। इस मेपिंग से लॉजिकल मेमोरी और फिजिकल मेमोरी का अंतर स्पष्ट होता है ।
सेगमेंटेशन की आधारभूत पद्धति:
सामान्यतः, यूजर मेमोरी को सबरूटिन्स, प्रोसिजर्स, फंक्शन्स अथवा मोड्यूल्स के समुच्चत के रूप में देखता है, जिसे 2-D अरे स्टेक, टेबल्स और अन्य तत्वों के रूप में देखा/कार्यान्वित किया जाता है।
सेगमेंटेशन मेमोरी प्रबंधन की एक स्कीम है। यह मेमोरी संबंधी उपरोक्त यूजर धारणा को सर्पोट करती है। एक लॉजिकल एड्रेस स्पेस को मल्टिपल सेगमेंट्स के रूप में देखा जाता है। कार्यान्वयन के दौरान सेगमेंट का आकार बढ़ा सकता है अथवा घट सकता है। प्रत्येक सेगमेंट का अपना एक नाम और आकार (लम्बाई) होता है। एड्रेस से सेगमेंट का नाम और उसके अंदर निहित एड्रेस (डिसप्लेसमेंट), दोनों स्पष्ट होते हैं। इसी कारण यूजर दो मात्राओं (परिमाण) द्वारा प्रत्येक एड्रेस को स्पष्ट करता है: एक सेगमेंट का नाम और एक ऑफसेट।
सामान्यतः, इसे सेगमेंट के नाम के स्थान पर उसको (सेग्मेंट की) नम्बरिंग और उसके संदर्भ के रूप में कार्यान्वित किया जाता है। इस प्रकार, एक लॉजिकल एड्रेस दो टपल से मिलकर बनता है।
सेग्मेंटेशन के लिये हार्डवेयर सपोर्ट:
यूजर, प्रोग्राम में स्थित ओबजेक्ट को टु डाइमेंशनल एड्रेस द्वारा संकेतित कर सकता है। परन्तु वास्तविकता में फिजिकल मेमोरी अभी भी बाइट्स के वन डाइमेंशनल सिक्वेन्स में होती है। इस प्रकार, हमें वन-डाइमेंशनल फिजिकल एड्रेस को टु-डाइमेंशनल यूजर-डिफाइन्ड एड्रेस में मेय करने के लिए एक कार्यान्वयन प्रक्रिया को स्पष् करना होगा। यह मेपिंग एक सेग्मेंट टेबल द्वारा प्रभावित होती है। सेग्मेंट टेबल की प्रत्येक इंट्री, सेग्मेंट बेस और । सेग्मेंट लिमिट होती है। सेग्मेंट बेस में प्रारंभिक फिजिकल एड्रेस होता है जहाँ सेग्मेंट मेमोरी में स्थित होता है, वहीं सेग्मेंट लिमिट सेग्मेंट की लम्बाई निर्धारित करती है।
सेग्मेंट टेबल में लॉजिकल एड्रेस दो भागों में मिलकर बना होता है – एक सेग्मेंट नम्बर s और उस सेग्मेंट में स्थित एक ऑफसेट । ऑफसेट सेग्मेंट नम्बर का उपयोग सेग्मेंट टेबल में एक इंडेक्स के रूप में किया जाता है। लॉजिकल एड्रेस का ऑफसेट d.0 और सेग्मेंट लिमिट के मध्य होना चाहिये । यदि ऑफसेट सेगमेंट के अंतिम भाग से भी परे है तब हम ऑपरेटिंग सिस्टम को ट्रेप करते हैं। यदि ऑफसेट वैध है तब वांछित ब्राइट की फिजिकल मेमोरी में एड्रेस निर्मित करने के लिए इसे सेग्मेंट बेस के साथ जोड़ा जाता है । इस प्रकार, सेग्मेंट टेबल मूलरूप से बेस-लिमिट रजिस्टर के युग्म का एक अरे (array) है ।
पेजिंग के साथ सेग्मेंटेशन:
पेजिंग और सेग्मेंटेशन दोनों के अपने-अपने लाभ और हानियाँ हैं। इन दोनों स्कीम का मिश्रण कर कार्यक्षमता में वृद्धि करना संभव है। यह संयोग (काम्बीनेशन) दो भिन्न अर्किट्रेक्चर्स द्वारा स्पष्ट है – नवीन परंतु बड़े क्षेत्र में 1 प्रयोग न किया जाने वाला MULTICS सिस्टम और इंटेल 386 ।
उदाहरण के लिए मल्टिक्स (MULTICS) – MULTICS सिस्टम में, 18 बिट सेग्मेंट नम्बर और 16 बिट ऑफसेट से एक लॉजिकल एड्रेस निर्मित किया जाता है ।
बाह्य फ्रेग्मेंटेशन की वजह से हम मेमोरी को व्यर्थ कर सकते हैं अथवा फर्स्ट फिट या बेस्ट फिट या दोनों का उपयोग कर सेग्मेंट निर्धारित करने के लिये सर्च कर समय को व्यर्थ कर सकते हैं ।
इस समस्या के लिये सेग्मेंट को पेज करने का समाधान अपनाया गया था। पेजिंग आंतरिक फ्रेग्मेंटेशन को स्पष्ट करता है और एलोकेशन समस्या को कम करता है। वांछित पेज के लिये कोई भी खाली फ्रेम उपयोग की जा सकती है। MUCTICS में स्थित प्रत्येक पेज 1K शब्दों से मिलकर बना होता है। अतः सेग्मेंट ऑफसेट (16 बिट्स), एक 6 बिट पेज नम्बर और एक 10-बिट पेज ऑफसेट में विभाजित हो जाता है। फ्रेम नम्बर दर्शाने के लिये पेज नम्बर पेज टेबल में दिया होता है। अंततः एक फिजिकल एड्रेस निर्मित करने के लिये पेज ऑफसेट के साथ फ्रेम नम्बर जोड़ा जाता है । अब हमारे पास प्रत्येक सेग्मेंट के लिये एक पृथक पेज टेबल उपलब्ध है ।
हम बाग्मेंटेशन के साथ-साथ आंतरिक फ्रेम्टेशन और इक्रिड टेबल-स्पेस ओवरहेड को भी स्पष्ट कर चुके हैं।
वास्तव में, MULTICS का वेन्ड सेग्मेटेशन व्यू सरलता से प्रदर्शित किया गया है। चूंकि सेग्मेट नम्बर 18 बिट का होता है इसलिये हमारे पास 262, 144 तक सेग्मेंट हो सकते है और हमें एक बड़ी सेग्मेंट टेबल की आवश्यकता होती है। इस समस्या के हल के लिये MULTICS सेग्मेंट टेबल को पेज नम्बर निर्धारित करता है। सेग्मेट नम्बर (18 बिट्स) को 8-बिट पेज नम्बर और 10-बिट पेज ऑफसेट में विभाजित किया जाता है।
यहाँ सेग्मेंट टेबल की पेज टेबल में और सेग्मेंट टेबल के पेज में S2 Sy एक इंडेक्स डिसप्लेसमेंट है। अब हम वांछनिय पेज जिसमें सेग्मेंट टेबल स्थित है, प्राप्त कर चुके हैं। अब वांछित सेग्मेंट की मेज टेबल मेंd, एक डिसप्लेसमेंट है। और अंततः एक्सेस किये जाने वाले शब्द को रखने वाले पेज में d, एक डिसप्लेसमेंट है।
सेग्मेंटेशन के लाभ:
(1) बाह्य फ्रेगमेंटेशन हटा दिया जाता है।
(2) सेग्मेंट की लम्बाई को स्वतंत्र रूप से बढ़ाया/घटाया जा सकता है ।
(3) सेग्मेंट में स्थित प्रोसिजर में बिना पुनः कम्पाइल करे, आसानी से परिवर्तन किये जा सकते हैं ।
(4) यह वर्चुअल मेमोरी को सपोर्ट करता है ।
(5) विभिन्न सेग्मेंट से संचार करते समय कुछ चेक्स भी लागू किये जा सकते हैं ।
(6) सेग्मेंटेशन, शेयरिंग के द्वारा पारंपरिक तकनीकों से मल्टिप्रोग्रामिंग को बढ़ाने में सहायता करता है ।
सेग्मेंटेशन की हानियाँ:
(1) टेबल स्पेस ओवरहेड ।
(2) चूंकि प्रत्येक सेग्मेंट के शब्द पास-पास होना चाहिये, इसलिये फ्रेग्मेंटेशन एक बड़ी समस्या हो सकती है, विशेष रूप से जब सेग्मेंट में अत्यधिक वृद्धि होती है।
(3) सम्पूर्ण एड्रेस स्पेस का आकार, फिजिकल मेमोरी के आकार द्वारा नियंत्रित होता है ।