स्मृति विभाजन

From alpha
Jump to navigation Jump to search

मेमोरी सेगमेंटेशन एक ऑपरेटिंग सिस्टम स्मृति प्रबंधन (ऑपरेटिंग सिस्टम) कंप्यूटर की प्राथमिक मेमरी को सेगमेंट या सेक्शन में विभाजित करने की तकनीक है। सेगमेंटेशन का उपयोग करने वाले कंप्यूटर आर्किटेक्चर में, मेमोरी लोकेशन के संदर्भ में एक मान शामिल होता है जो उस सेगमेंट के भीतर एक सेगमेंट और ऑफ़सेट (कंप्यूटर साइंस) (मेमोरी लोकेशन) की पहचान करता है। सेगमेंट या सेक्शन का उपयोग संकलित प्रोग्राम की वस्तु फ़ाइल में भी किया जाता है जब वे कार्यक्रम छवि में एक साथ लिंकर (कंप्यूटिंग) होते हैं और जब इमेज मेमोरी में लोडर (कंप्यूटिंग) होती है।

खंड आमतौर पर एक कार्यक्रम के प्राकृतिक विभाजनों जैसे व्यक्तिगत दिनचर्या या डेटा टेबल के अनुरूप होते हैं[1]इसलिए अकेले पेजिंग की तुलना में प्रोग्रामर को विभाजन आम तौर पर अधिक दिखाई देता है।[2]प्रोग्राम मॉड्यूल (प्रोग्रामिंग) के लिए, या कोड खंड और डेटा खंड जैसे मेमोरी उपयोग की कक्षाओं के लिए सेगमेंट बनाए जा सकते हैं।[3]कुछ खंडों को कार्यक्रमों के बीच साझा किया जा सकता है।[1][2]

विभाजन मूल रूप से एक विधि के रूप में आविष्कार किया गया था जिसके द्वारा सिस्टम सॉफ्ट्वेयर सॉफ्टवेयर प्रक्रिया (कंप्यूटिंग) (कार्य (कंप्यूटिंग)) और उनके द्वारा उपयोग किए जा रहे डेटा को अलग कर सकता है। इसका उद्देश्य एक साथ कई प्रक्रियाओं को चलाने वाली प्रणालियों की विश्वसनीयता बढ़ाना था।[4] X86-64|x86-64 आर्किटेक्चर में इसे विरासत माना जाता है और अधिकांश x86-64-आधारित आधुनिक सिस्टम सॉफ़्टवेयर मेमोरी सेगमेंटेशन का उपयोग नहीं करते हैं। इसके बजाय वे पेजिंग|मेमोरी-पेजिंग का उपयोग करके प्रोग्राम और उनके डेटा को संभालते हैं जो स्मृति सुरक्षा के एक तरीके के रूप में भी कार्य करता है। हालाँकि अधिकांश x86-64 कार्यान्वयन अभी भी पिछड़े संगतता कारणों के लिए इसका समर्थन करते हैं।[4]


हार्डवेयर कार्यान्वयन

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

प्रत्येक खंड में लंबाई और अनुमतियों का सेट होता है (उदाहरण के लिए, पढ़ना, लिखना, निष्पादित करना)।[3]एक प्रक्रिया (कंप्यूटिंग) को केवल एक खंड में एक संदर्भ बनाने की अनुमति है यदि अनुमतियों द्वारा संदर्भ के प्रकार की अनुमति है, और यदि खंड के भीतर ऑफसेट खंड की लंबाई द्वारा निर्दिष्ट सीमा के भीतर है। अन्यथा, एक हार्डवेयर अपवाद जैसे विभाजन दोष उत्पन्न होता है।

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

विभाजन स्मृति सुरक्षा को लागू करने का एक तरीका है।[5] पेज (कंप्यूटर मेमोरी) एक और है, और उन्हें जोड़ा जा सकता है। मेमोरी सेगमेंट का आकार आमतौर पर निश्चित नहीं होता है और यह एक बाइट जितना छोटा हो सकता है।[6] पेजिंग के साथ या उसके बिना विभिन्न हार्डवेयर पर सेगमेंटेशन को कई तरीकों से लागू किया गया है। Intel x86 मेमोरी सेगमेंटेशन किसी भी मॉडल में फिट नहीं होता है और नीचे अलग से चर्चा की जाती है, और एक अलग लेख में अधिक विस्तार से भी।

पेजिंग के बिना विभाजन

प्रत्येक खंड के साथ संबद्ध जानकारी है जो इंगित करती है कि खंड स्मृति में कहाँ स्थित है - खंड आधार। जब कोई प्रोग्राम स्मृति स्थान का संदर्भ देता है, तो ऑफ़सेट को भौतिक स्मृति पता उत्पन्न करने के लिए सेगमेंट बेस में जोड़ा जाता है।

पेजिंग के बिना सेगमेंटेशन का उपयोग कर सिस्टम पर वर्चुअल मेमोरी के कार्यान्वयन के लिए आवश्यक है कि पूरे सेगमेंट को मुख्य मेमोरी और सेकेंडरी स्टोरेज के बीच आगे और पीछे स्वैप किया जाए। जब एक सेगमेंट में अदला-बदली की जाती है, तो ऑपरेटिंग सिस्टम को पूरे सेगमेंट को होल्ड करने के लिए पर्याप्त सन्निहित मुक्त मेमोरी आवंटित करनी पड़ती है। अक्सर विखंडन (कंप्यूटिंग) का परिणाम होता है यदि पर्याप्त सन्निहित मेमोरी नहीं है, भले ही कुल में पर्याप्त हो।

पेजिंग के साथ विभाजन

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

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

इतिहास

बरोज़ कॉर्पोरेशन बरोज़ लार्ज सिस्टम्स कंप्यूटर सेगमेंटेशन को लागू करने वाले पहले कंप्यूटरों में से एक था, और शायद वर्चुअल मेमोरी प्रदान करने वाला पहला व्यावसायिक कंप्यूटर[7] विभाजन के आधार पर। बाद के बरोज़ लार्ज सिस्टम#B6500 कंप्यूटर ने भी विभाजन लागू किया; इसकी वास्तुकला का एक संस्करण आज भी यूनिसिस क्लियरपाथ लिब्रा सर्वर पर उपयोग में है।

GE-600 श्रृंखला | GE-645 कंप्यूटर, विभाजन और पेजिंग समर्थन के साथ GE-635 का एक संशोधन, 1964 में मॉलटिक्स का समर्थन करने के लिए डिज़ाइन किया गया था।

इंटेल iAPX 432,[8] 1975 में शुरू हुआ, एक माइक्रोप्रोसेसर पर स्मृति सुरक्षा के साथ एक वास्तविक खंडित वास्तुकला को लागू करने का प्रयास किया।

Intel i960 प्रोसेसर के 960MX संस्करण ने लोड और स्टोर निर्देशों का समर्थन किया, जिसमें स्रोत या गंतव्य किसी वस्तु के लिए एक एक्सेस डिस्क्रिप्टर है, और ऑब्जेक्ट में एक ऑफ़सेट है, जिसमें एक्सेस डिस्क्रिप्टर 32-बिट रजिस्टर में है और ऑफ़सेट से गणना की गई है। अगले रजिस्टर में बेस ऑफ़सेट और अतिरिक्त ऑफ़सेट से और, वैकल्पिक रूप से, निर्देश में निर्दिष्ट एक इंडेक्स रजिस्टर। एक्सेस डिस्क्रिप्टर में अनुमति बिट्स और 26-बिट ऑब्जेक्ट इंडेक्स होता है; ऑब्जेक्ट इंडेक्स ऑब्जेक्ट डिस्क्रिप्टर की तालिका में एक इंडेक्स है, जो ऑब्जेक्ट प्रकार, ऑब्जेक्ट की लंबाई और ऑब्जेक्ट के डेटा के लिए एक भौतिक पता, ऑब्जेक्ट के लिए एक पेज टेबल, या दो-स्तर के लिए शीर्ष-स्तरीय पेज टेबल देता है। ऑब्जेक्ट प्रकार के आधार पर ऑब्जेक्ट के लिए पेज टेबल।[9] प्राइम कंप्यूटर, स्ट्रैटस टेक्नोलॉजीज, अपोलो कंप्यूटर, IBM सिस्टम/38, और IBM AS/400 (IBM i सहित) कंप्यूटर मेमोरी सेगमेंटेशन का उपयोग करते हैं।

उदाहरण

एस/370 आर्किटेक्चर

आईबीएम सिस्टम/370 मॉडल में[lower-alpha 1] वर्चुअल स्टोरेज के साथ[10][11] (DAT) और 24-बिट पते, नियंत्रण रजिस्टर 0 64 KiB या 1 MiB के खंड आकार और 2 KiB या 4 KiB के पृष्ठ आकार को निर्दिष्ट करता है; नियंत्रण रजिस्टर 1 में एक सेगमेंट टेबल डिज़ाइनर (STD) होता है, जो सेगमेंट टेबल की लंबाई और वास्तविक पता निर्दिष्ट करता है। प्रत्येक खंड तालिका प्रविष्टि में एक पृष्ठ तालिका स्थान, पृष्ठ तालिका की लंबाई और एक अमान्य बिट होता है। आईबीएम ने बाद में पता आकार को 31 बिट्स तक विस्तारित किया और खंड तालिका प्रविष्टियों में दो बिट्स जोड़े:

सेगमेंट-प्रोटेक्शन बिट

खंड केवल पढ़ने के लिए है

कॉमन-सेगमेंट बिट

खंड को पता स्थान के बीच साझा किया जाता है; यह बिट TLB उपयोग को अनुकूलित करने के लिए सेट है

IBM के प्रत्येक DAT कार्यान्वयन में एक ट्रांसलेशन कैश शामिल है, जिसे IBM ने ट्रांसलेशन लुकसाइड बफर (TLB) कहा है। जबकि ऑपरेशन के सिद्धांत सामान्य शब्दों में टीएलबी पर चर्चा करते हैं, विवरण आर्किटेक्चर का हिस्सा नहीं हैं और मॉडल से मॉडल में भिन्न होते हैं।

IBM 303X | 3031, 3032 और 3033 प्रोसेसर कॉम्प्लेक्स के साथ शुरू करते हुए, IBM ने डुअल-एड्रेस स्पेस नामक एक सुविधा की पेशकश की[11]: 5-13–5-17, Dual-Address-Space Control : 5-17–5-20, DAS Authorization Mechanisms : 5-21–5-24, PC-Number Translation [12] (डीएएस), जो एक प्रोग्राम को दो एड्रेस स्पेस के लिए ट्रांसलेशन टेबल के बीच स्विच करने की अनुमति देता है, जिसे प्राइमरी एड्रेस स्पेस (CR1) और सेकेंडरी एड्रेस स्पेस (CR7) कहा जाता है, और सुरक्षा कुंजी के अधीन एड्रेस स्पेस के बीच डेटा को स्थानांतरित करने के लिए। DAS एक 16-बिट एड्रेस स्पेस नंबर (ASN) को STD में बदलने के लिए अनुवाद तालिका का समर्थन करता है, STD को CR1 (प्राथमिक) या CR7 (द्वितीयक) में लोड करने के विशेषाधिकार प्राप्त निर्देशों के साथ।

x86 आर्किटेक्चर

[[Intel 8086]] से शुरू होकर शुरुआती x86 प्रोसेसर द्वारा उपयोग किया जाने वाला मेमोरी सेगमेंट कोई सुरक्षा प्रदान नहीं करता है। इन प्रोसेसर पर चलने वाला कोई भी प्रोग्राम बिना किसी प्रतिबंध के किसी भी सेगमेंट तक पहुंच सकता है। एक सेगमेंट की पहचान केवल उसके शुरुआती स्थान से की जाती है; कोई लंबाई जाँच नहीं है। खंड का प्रारंभिक पता ग्रैन्युलैरिटी 16 बाइट्स है और ऑफ़सेट 16 बिट्स है, जो 64 KiB तक के सेगमेंट आकार का समर्थन करता है, इसलिए सेगमेंट ओवरलैप कर सकते हैं (और अक्सर करते हैं) और प्रत्येक भौतिक पते को 4096 सेगमेंट-ऑफ़सेट जोड़े द्वारा दर्शाया जा सकता है (पता ऑफ़सेट के लिए अनुमति देता है) चारों ओर लपेट दो)।

इंटेल 80286 और बाद में विभाजन सुरक्षा प्रदान करता है: 80286 की शुरुआत के साथ, इंटेल ने पूर्वव्यापी रूप से पिछले x86 सीपीयू मॉडल के एकमात्र ऑपरेटिंग मोड को वास्तविक मोड नाम दिया और सुरक्षा सुविधाओं के साथ एक नया संरक्षित मोड पेश किया। पश्चगामी संगतता के लिए, सभी x86 CPU वास्तविक मोड में बिना मेमोरी सुरक्षा के, निश्चित 64 KiB सेगमेंट और केवल 20-बिट (1024 KiB) एड्रेसिंग के साथ प्रारंभ होते हैं। एक 80286 या बाद के प्रोसेसर को अपने पूर्ण पता स्थान और उन्नत MMU सुविधाओं का उपयोग करने के लिए सॉफ़्टवेयर द्वारा दूसरे मोड में स्विच किया जाना चाहिए।

इंटेल 80386 और बाद के प्रोसेसर भी पेजिंग का समर्थन करते हैं; उन प्रोसेसरों में, खंड तालिका, खंड के लिए एक पृष्ठ तालिका की ओर इशारा करने के बजाय, रैखिक स्मृति में खंड का पता शामिल करती है। यदि पेजिंग सक्षम है, तो रैखिक मेमोरी में पतों को एक अलग पृष्ठ तालिका का उपयोग करके भौतिक पतों पर मैप किया जाता है।

x86-64 आर्किटेक्चर लंबे मोड (64-बिट मोड) में सेगमेंटेशन का उपयोग नहीं करता है।[13] X86-64|x86-64 आर्किटेक्चर में इसे विरासत माना जाता है और अधिकांश x86-64-आधारित आधुनिक सिस्टम सॉफ़्टवेयर मेमोरी सेगमेंटेशन का उपयोग नहीं करते हैं। इसके बजाय वे पेजिंग|मेमोरी-पेजिंग का उपयोग करके प्रोग्राम और उनके डेटा को संभालते हैं जो स्मृति सुरक्षा के एक तरीके के रूप में भी कार्य करता है। हालांकि अधिकांश x86-64 कार्यान्वयन अभी भी पिछड़े संगतता कारणों के लिए इसका समर्थन करते हैं।[4] सेगमेंट रजिस्टरों में से चार: सीएस, एसएस, डीएस और ईएस को 0 और 2 की सीमा के लिए मजबूर किया गया है64</सुप>. खंड रजिस्टर FS और GS में अभी भी एक गैर-शून्य आधार पता हो सकता है। यह ऑपरेटिंग सिस्टम को इन सेगमेंट को विशेष उद्देश्यों के लिए उपयोग करने की अनुमति देता है।

यह भी देखें

टिप्पणियाँ

  1. Models 115, 125, 135, 138, 145, 148, 155 II, 158, 165 II and 168


संदर्भ

  1. 1.0 1.1 Holt, Anatol W. (1961). "Program Organization and Record Keeping for Dynamic Storage Allocation". Communications of the ACM. 4 (10): 422–431. doi:10.1145/366786.366795. S2CID 18973700.
  2. 2.0 2.1 Englander, Irv (2003). The architecture of computer hardware and systems software (3rd ed.). Wiley. ISBN 0-471-07325-3.
  3. 3.0 3.1 3.2 Glaser, Edward L.; Couleur, John F.; Oliver, G. A. (1965). System Design of a Computer for Time Sharing Applications. 1965 Fall Joint Computer Conference.
  4. 4.0 4.1 4.2 "1.2 Memory Management". AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF). Vol. 2. Advanced Micro Devices. 2018. p. 5.
  5. Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014). "Segmentation" (PDF). Operating Systems: Three Easy Pieces. Arpaci-Dusseau Books.
  6. Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B & 3C): System Programming Guide (PDF). Intel Corporation. 2012. pp. 3–13.
  7. Mayer, Alastair J. W. "The Architecture of the Burroughs B5000 - 20 Years Later and Still Ahead of the Times?". Retrieved 2012-03-15.
  8. Introduction to the IAPX 432 Architecture (PDF). Intel Corporation. 1981. p. 78.
  9. BiiN CPU आर्किटेक्चर रेफरेंस मैनुअल (PDF). BiiN. July 1998.
  10. "Dynamic Address Translation" (PDF). IBM System/370 Principles of Operation (PDF). Systems (Fourth ed.). IBM. September 1974. pp. 57–68. GA22-7000-4.
  11. 11.0 11.1 "Dynamic Address Translation". IBM System/370 Principles of Operation (Eleventh ed.). IBM. September 1987. pp. 3-20–3-38. GA22-7000-10.
  12. "Address spaces" (PDF). IBM System/370 Extended Architecture Principles of Operation (PDF) (Second ed.). IBM. January 1987. pp. 3-13–3-14. SA22-7085-1.
  13. AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF). Vol. 2. Advanced Micro Devices. 2018.


बाहरी संबंध