वर्चुअल एड्रेस स्पेस: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{redirect2|वर्चुअल एड्रेस|वर्चुअल एड्रेसिंग}}
{{redirect2|वर्चुअल एड्रेस|वर्चुअल एड्रेसिंग}}
[[Image:Virtual address space and physical address space relationship.svg|thumb|300px]][[कम्प्यूटिंग]] में, वर्चुअल [[पता स्थान|एड्रेस स्पेस]] (वीएएस) या एड्रेस स्पेस वर्चुअल एड्रेस की सीमाओं का सेट है जो [[ऑपरेटिंग सिस्टम]] एक प्रक्रिया के लिए उपलब्ध कराता है।<ref>{{cite web|last=IBM Corporation|title=What is an address space?|url=http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic=/com.ibm.zos.zconcepts/zconcepts_82.htm|access-date=August 24, 2013}}</ref> वर्चुअल एड्रेस की सीमा सामान्यतः कम एड्रेस पर प्रारंभ होती है और कंप्यूटर के निर्देश सेट द्वारा अनुमत उच्चतम एड्रेस तक विस्तारित हो सकती है और ऑपरेटिंग सिस्टम के सूचक आकार के कार्यान्वयन द्वारा समर्थित होती है, जो [[32-बिट]] के लिए 4 [[बाइट्स]] या [[64-बिट]] के लिए 8 बाइट्स ओएस संस्करण हो सकती है। यह कई लाभ प्रदान करता है, जिनमें से एक [[प्रक्रिया अलगाव]] के माध्यम से सुरक्षा है, यह मानते हुए कि प्रत्येक प्रक्रिया को एक अलग एड्रेस स्पेस दिया गया है।
[[Image:Virtual address space and physical address space relationship.svg|thumb|300px]][[कम्प्यूटिंग]] में, वर्चुअल [[पता स्थान|एड्रेस स्पेस]] (वीएएस) या एड्रेस स्पेस वर्चुअल एड्रेस की सीमाओं का सेट है जो [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] एक प्रक्रिया के लिए उपलब्ध कराता है।<ref>{{cite web|last=IBM Corporation|title=What is an address space?|url=http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic=/com.ibm.zos.zconcepts/zconcepts_82.htm|access-date=August 24, 2013}}</ref> वर्चुअल एड्रेस की सीमा सामान्यतः कम एड्रेस पर प्रारंभ होती है और कंप्यूटर के निर्देश सेट द्वारा अनुमत उच्चतम एड्रेस तक विस्तारित हो सकती है और ऑपरेटिंग प्रणाली के सूचक आकार के कार्यान्वयन द्वारा समर्थित होती है, जो [[32-बिट]] के लिए 4 [[बाइट्स]] या [[64-बिट]] के लिए 8 बाइट्स ओएस संस्करण हो सकती है। यह कई लाभ प्रदान करता है, जिनमें से एक [[प्रक्रिया अलगाव]] के माध्यम से सुरक्षा है, यह मानते हुए कि प्रत्येक प्रक्रिया को एक अलग एड्रेस स्पेस दिया गया है।


== उदाहरण ==
== उदाहरण ==
: निम्नलिखित विवरण में, उपयोग की जाने वाली शब्दावली विशेष रूप से [[विंडोज एनटी]] ऑपरेटिंग सिस्टम के लिए होगी, लेकिन अवधारणाएं अन्य वर्चुअल मेमोरी ऑपरेटिंग सिस्टम पर लागू होती हैं।
: निम्नलिखित विवरण में, उपयोग की जाने वाली शब्दावली विशेष रूप से [[विंडोज एनटी]] ऑपरेटिंग प्रणाली के लिए होगी, लेकिन अवधारणाएं अन्य वर्चुअल मेमोरी ऑपरेटिंग प्रणाली पर प्रायुक्त होती हैं।


जब 32-बिट OS पर एक नया एप्लिकेशन निष्पादित किया जाता है, तो प्रक्रिया में एक होता है {{nowrap|4 [[Gibibyte|GiB]]}} वीएएस: मेमोरी एड्रेस में से प्रत्येक (0 से 2<sup>32</sup> − 1) उस स्पेस में मान के रूप में एक बाइट हो सकता है। प्रारंभ में, उनमें से कोई भी मान नहीं है ('-' कोई मान नहीं दर्शाता है)ऐसे VAS में मानों का उपयोग करने या सेट करने से पेज दोष हो सकता है।<syntaxhighlight lang="d">
जब 32-बिट OS पर एक नया एप्लिकेशन निष्पादित किया जाता है, तो प्रक्रिया में एक होता है {{nowrap|4 [[Gibibyte|गीगाबाइट]]}} वीएएस: मेमोरी एड्रेस (0 से 2<sup>32</sup> − 1) में से प्रत्येक उस स्पेस में मान के रूप में एक बाइट हो सकता है। प्रारंभ में, उनमें से कोई भी मान ('-' कोई मान नहीं दर्शाता है) नहीं है। ऐसे वीएएस में मानों का उपयोग करने या सेट करने से पेज दोष हो सकता है।<syntaxhighlight lang="d">
   0                                          4 GiB
   0                                          4 GiB
VAS        |----------------------------------------------|
VAS        |----------------------------------------------|
</syntaxhighlight>तब एप्लिकेशन की निष्पादन योग्य फ़ाइल को VAS में मैप किया जाता है। वीएएस प्रक्रिया में एड्रेस को एक्सई फ़ाइल में बाइट्स में मैप किया जाता है। ओएस मैपिंग का प्रबंधन करता है:<syntaxhighlight lang="d">
</syntaxhighlight>तब एप्लिकेशन की निष्पादन योग्य फ़ाइल को वीएएस में माप किया जाता है। वीएएस प्रक्रिया में एड्रेस को एक्सई फ़ाइल में बाइट्स में माप किया जाता है। ओएस मैपिंग का प्रबंधन करता है:<syntaxhighlight lang="d">
0                                          4 GiB
0                                          4 GiB
VAS        |---vvv----------------------------------------|
VAS        |---vvv----------------------------------------|
mapping        |||
mapping        |||
file bytes    app
file bytes    app
</syntaxhighlight>वी [[मेमोरी-मैप की गई फ़ाइल]] में बाइट्स से मान हैं। फिर, आवश्यक [[डायनामिक-लिंक लाइब्रेरी]] फ़ाइलों को मैप किया जाता है (इसमें कस्टम लाइब्रेरी के साथ-साथ सिस्टम वाले भी शामिल हैं <code>kernel32.dll</code> और <code>user32.dll</code>):<syntaxhighlight lang="d">
</syntaxhighlight>वी [[मेमोरी-मैप की गई फ़ाइल|मेमोरी-माप की गई फ़ाइल]] में बाइट्स से मान हैं। फिर, आवश्यक [[डायनामिक-लिंक लाइब्रेरी]] फ़ाइलों को माप (इसमें कस्टम लाइब्रेरी के साथ-साथ प्रणाली वाले भी शामिल हैं <code>kernel32.dll</code> और <code>user32.dll</code>) किया जाता है:<syntaxhighlight lang="d">
0                                          4 GiB
0                                          4 GiB
VAS        |---vvv--------vvvvvv---vvvv-------------------|
VAS        |---vvv--------vvvvvv---vvvv-------------------|
mapping        |||        ||||||  ||||
mapping        |||        ||||||  ||||
file bytes    app        kernel  user
file bytes    app        kernel  user
</syntaxhighlight>प्रक्रिया तब exe फ़ाइल में बाइट निष्पादित करना प्रारंभ करती है। हालाँकि, जिस तरह से प्रक्रिया अपने VAS में '-' मानों का उपयोग या सेट कर सकती है, वह OS से उन्हें फ़ाइल से बाइट्स में मैप करने के लिए कहना है। इस तरह से वीएएस मेमोरी का उपयोग करने का एक सामान्य तरीका इसे [[पेज फ़ाइल]] में मैप करना है। पृष्ठ फ़ाइल एक एकल फ़ाइल है, लेकिन सन्निहित बाइट्स के कई अलग-अलग सेटों को VAS में मैप किया जा सकता है:<syntaxhighlight lang="d">
</syntaxhighlight>प्रक्रिया तब exe फ़ाइल में बाइट निष्पादित करना प्रारंभ करती है। चूँकि, जिस तरह से प्रक्रिया अपने वीएएस में '-' मानों का उपयोग या सेट कर सकती है, वह ओएस से उन्हें फ़ाइल से बाइट्स में माप करने के लिए कहना है। इस तरह से वीएएस मेमोरी का उपयोग करने का एक सामान्य तरीका इसे [[पेज फ़ाइल]] में माप करना है। पृष्ठ फ़ाइल एक एकल फ़ाइल है, लेकिन सन्निहित बाइट्स के कई अलग-अलग सेटों को वीएएस में माप किया जा सकता है:<syntaxhighlight lang="d">
0                                          4 GiB
0                                          4 GiB
VAS        |---vvv--------vvvvvv---vvvv----vv---v----vvv--|
VAS        |---vvv--------vvvvvv---vvvv----vv---v----vvv--|
mapping        |||        ||||||  ||||    ||  |    |||
mapping        |||        ||||||  ||||    ||  |    |||
file bytes    app        kernel  user  system_page_file
file bytes    app        kernel  user  system_page_file
</syntaxhighlight>और पृष्ठ फ़ाइल के विभिन्न भाग विभिन्न प्रक्रियाओं के VAS में मैप कर सकते हैं:<syntaxhighlight lang="d">
</syntaxhighlight>और पृष्ठ फ़ाइल के विभिन्न भाग विभिन्न प्रक्रियाओं के वीएएस में माप कर सकते हैं:<syntaxhighlight lang="d">
0                                          4 GiB
0                                          4 GiB
VAS 1      |---vvvv-------vvvvvv---vvvv----vv---v----vvv--|
VAS 1      |---vvvv-------vvvvvv---vvvv----vv---v----vvv--|
Line 30: Line 30:
mapping            ||||  ||||||  ||||      ||  |
mapping            ||||  ||||||  ||||      ||  |
VAS 2      |--------vvvv--vvvvvv---vvvv-------vv---v------|
VAS 2      |--------vvvv--vvvvvv---vvvv-------vv---v------|
</syntaxhighlight>[[Microsoft Windows]] 32-बिट पर, डिफ़ॉल्ट रूप से, केवल {{nowrap|2 GiB}} प्रक्रियाओं को उनके स्वयं के उपयोग के लिए उपलब्ध कराया जाता है।<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/aa366912(VS.85).aspx|title=Virtual Address Space|publisher=Microsoft|work=[[MSDN]]}}</ref> अन्य {{nowrap|2 GiB}} ऑपरेटिंग सिस्टम द्वारा उपयोग किया जाता है। Microsoft Windows के बाद के 32-बिट संस्करणों में उपयोगकर्ता-मोड वर्चुअल एड्रेस स्पेस को विस्तारित करना संभव है {{nowrap|3 GiB}} जबकि केवल {{nowrap|1 GiB}} प्रोग्राम को IMAGE_FILE_LARGE_ADDRESS_AWARE के रूप में चिह्नित करके और boot.ini फ़ाइल में /3GB स्विच को सक्षम करके कर्नेल-मोड वर्चुअल एड्रेस स्पेस के लिए छोड़ दिया गया है।<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/ms680349(v=VS.85).aspx|title=LOADED_IMAGE structure|publisher=Microsoft|work=[[MSDN]]}}</ref><ref name="4gbtuning"/>
</syntaxhighlight>[[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] 32-बिट पर, डिफ़ॉल्ट रूप से, केवल {{nowrap|2 गीगाबाइट}} प्रक्रियाओं को उनके स्वयं के उपयोग के लिए उपलब्ध कराया जाता है।<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/aa366912(VS.85).aspx|title=Virtual Address Space|publisher=Microsoft|work=[[MSDN]]}}</ref> अन्य {{nowrap|2 गीगाबाइट}} ऑपरेटिंग प्रणाली द्वारा उपयोग किया जाता है। माइक्रोसॉफ़्ट विंडोज़ के बाद के 32-बिट संस्करणों में उपयोगकर्ता-मोड वर्चुअल एड्रेस स्पेस को विस्तारित करना संभव है {{nowrap|3 गीगाबाइट}} जबकि केवल {{nowrap|1 गीगाबाइट}} प्रोग्राम को इमेज_फाइल_लार्ज_एड्रेस_अवेयर के रूप में चिह्नित करके और बूट.आईएनआई फ़ाइल में /3जीबी स्विच को सक्षम करके कर्नेल-मोड वर्चुअल एड्रेस स्पेस के लिए छोड़ दिया गया है।<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/ms680349(v=VS.85).aspx|title=LOADED_IMAGE structure|publisher=Microsoft|work=[[MSDN]]}}</ref><ref name="4gbtuning"/>


Microsoft Windows 64-बिट पर, एक निष्पादन योग्य चलाने वाली प्रक्रिया में जो /LARGEADDRESSAWARE:NO से जुड़ा था, ऑपरेटिंग सिस्टम कृत्रिम रूप से प्रक्रिया के वर्चुअल एड्रेस स्पेस के उपयोगकर्ता मोड हिस्से को 2 GiB तक सीमित कर देता है। यह 32- और 64-बिट निष्पादनयोग्य दोनों पर लागू होता है।<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/wz223b1z%28v=VS.100%29.aspx|title=/LARGEADDRESSAWARE (Handle Large Addresses)|publisher=Microsoft|work=[[MSDN]]}}</ref><ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/aa384271%28VS.85%29.aspx|title=Virtual Address Space|publisher=Microsoft|work=[[MSDN]]}}</ref> निष्पादनयोग्य चलाने वाली प्रक्रियाएँ जो /लार्जेडड्रेसवेयर:हाँ विकल्प से जुड़ी थीं, जो 64-बिट विज़ुअल स्टूडियो 2010 और बाद के संस्करण के लिए डिफ़ॉल्ट है,<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/wz223b1z(v=vs.100).aspx|title=/LARGEADDRESSAWARE (Handle Large Addresses)|publisher=Microsoft|work=[[MSDN]]}}</ref> से अधिक तक पहुंच है {{nowrap|2 GiB}} वर्चुअल एड्रेस स्पेस की: तक {{nowrap|4 GiB}} 32-बिट एक्जीक्यूटेबल्स के लिए, अप करने के लिए {{nowrap|8 TiB}} विंडोज 8 के माध्यम से विंडोज में 64-बिट एक्जीक्यूटेबल्स के लिए, और {{nowrap|128 TiB}} विंडोज 8.1 और बाद में 64-बिट निष्पादनयोग्य के लिए।<ref name="4gbtuning">{{cite web|url=https://msdn.microsoft.com/en-us/library/bb613473(v=VS.85).aspx|title=4-Gigabyte Tuning: BCDEdit and Boot.ini|publisher=Microsoft|work=[[MSDN]]}}</ref><ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/wz223b1z(VS.80).aspx|title=/LARGEADDRESSAWARE (Handle Large Addresses)|publisher=Microsoft|work=[[MSDN]]}}</ref>
माइक्रोसॉफ़्ट विंडोज़ 64-बिट पर, एक निष्पादन योग्य चलाने वाली प्रक्रिया में जो /लार्जएड्रेसअवेयर:एनओ से जुड़ा था, ऑपरेटिंग प्रणाली कृत्रिम रूप से प्रक्रिया के वर्चुअल एड्रेस स्पेस के उपयोगकर्ता मोड भाग को 2 गीगाबाइट तक सीमित कर देता है। यह 32- और 64-बिट निष्पादनयोग्य दोनों पर प्रायुक्त होता है।<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/wz223b1z%28v=VS.100%29.aspx|title=/LARGEADDRESSAWARE (Handle Large Addresses)|publisher=Microsoft|work=[[MSDN]]}}</ref><ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/aa384271%28VS.85%29.aspx|title=Virtual Address Space|publisher=Microsoft|work=[[MSDN]]}}</ref> निष्पादनयोग्य चलाने वाली प्रक्रियाएँ जो /लार्जेडड्रेसवेयर:हाँ विकल्प से जुड़ी थीं, जो 64-बिट विज़ुअल स्टूडियो 2010 और बाद के संस्करण के लिए डिफ़ॉल्ट है,<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/wz223b1z(v=vs.100).aspx|title=/LARGEADDRESSAWARE (Handle Large Addresses)|publisher=Microsoft|work=[[MSDN]]}}</ref> {{nowrap|2 गीगाबाइट}} वर्चुअल एड्रेस स्पेस की: तक {{nowrap|4 गीगाबाइट }} 32-बिट एक्जीक्यूटेबल्स के लिए, अप करने के लिए {{nowrap|8 टेराबाइट}} विंडोज 8 के माध्यम से विंडोज में 64-बिट एक्जीक्यूटेबल्स के लिए, और {{nowrap|128 TiB}} विंडोज 8.1 और बाद में 64-बिट निष्पादनयोग्य के लिएसे अधिक तक पहुंच है ।<ref name="4gbtuning">{{cite web|url=https://msdn.microsoft.com/en-us/library/bb613473(v=VS.85).aspx|title=4-Gigabyte Tuning: BCDEdit and Boot.ini|publisher=Microsoft|work=[[MSDN]]}}</ref><ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/wz223b1z(VS.80).aspx|title=/LARGEADDRESSAWARE (Handle Large Addresses)|publisher=Microsoft|work=[[MSDN]]}}</ref>


C (प्रोग्रामिंग लैंग्वेज) के [[malloc]] के माध्यम से मेमोरी आवंटित करना स्थापित करता है
सी (प्रोग्रामिंग लैंग्वेज) के [[malloc|मॉलोक]] के माध्यम से मेमोरी आवंटित करना स्थापित करता है
पृष्ठ फ़ाइल को किसी भी नए वर्चुअल एड्रेस स्पेस के लिए बैकिंग स्टोर के रूप में। हालाँकि, एक प्रक्रिया मेमोरी-मैप की गई फ़ाइल फ़ाइल बाइट्स भी कर सकती है।
 
पृष्ठ फ़ाइल को किसी भी नए वर्चुअल एड्रेस स्पेस के लिए बैकिंग स्टोर के रूप में। चूँकि, एक प्रक्रिया मेमोरी-माप की गई फ़ाइल फ़ाइल बाइट्स भी कर सकती है।


== [[लिनक्स]] ==
== [[लिनक्स]] ==
x[[86]] CPUs के लिए, Linux 32-बिट उपयोगकर्ता और कर्नेल एड्रेस श्रेणियों को अलग-अलग तरीकों से विभाजित करने की अनुमति देता है: 3G/1G उपयोगकर्ता/कर्नेल (डिफ़ॉल्ट), 1G/3G उपयोगकर्ता/कर्नेल या 2G/2G उपयोगकर्ता/कर्नेल।<ref>{{cite web|url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/Kconfig#n1446|title=Linux kernel - x86: Memory split}}</ref>
x[[86]] सीपीयू के लिए, लिनक्स 32-बिट उपयोगकर्ता और कर्नेल एड्रेस श्रेणियों को अलग-अलग विधियों से विभाजित: 3जी/1जी उपयोगकर्ता/कर्नेल (डिफ़ॉल्ट), 1जी/3जी उपयोगकर्ता/कर्नेल या 2जी/2जी उपयोगकर्ता/कर्नेल करने की अनुमति देता है।<ref>{{cite web|url=https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/Kconfig#n1446|title=Linux kernel - x86: Memory split}}</ref>




== यह भी देखें ==
== यह भी देखें ==
* [[रैखिक पता स्थान|रैखिक एड्रेस स्पेस]]
* [[रैखिक पता स्थान|रैखिक एड्रेस स्पेस]]
* [[सिंगल एड्रेस स्पेस ऑपरेटिंग सिस्टम]]
* [[सिंगल एड्रेस स्पेस ऑपरेटिंग सिस्टम|सिंगल एड्रेस स्पेस ऑपरेटिंग प्रणाली]]


== टिप्पणियाँ ==
== टिप्पणियाँ ==

Revision as of 12:26, 5 March 2023

Virtual address space and physical address space relationship.svg

कम्प्यूटिंग में, वर्चुअल एड्रेस स्पेस (वीएएस) या एड्रेस स्पेस वर्चुअल एड्रेस की सीमाओं का सेट है जो ऑपरेटिंग प्रणाली एक प्रक्रिया के लिए उपलब्ध कराता है।[1] वर्चुअल एड्रेस की सीमा सामान्यतः कम एड्रेस पर प्रारंभ होती है और कंप्यूटर के निर्देश सेट द्वारा अनुमत उच्चतम एड्रेस तक विस्तारित हो सकती है और ऑपरेटिंग प्रणाली के सूचक आकार के कार्यान्वयन द्वारा समर्थित होती है, जो 32-बिट के लिए 4 बाइट्स या 64-बिट के लिए 8 बाइट्स ओएस संस्करण हो सकती है। यह कई लाभ प्रदान करता है, जिनमें से एक प्रक्रिया अलगाव के माध्यम से सुरक्षा है, यह मानते हुए कि प्रत्येक प्रक्रिया को एक अलग एड्रेस स्पेस दिया गया है।

उदाहरण

निम्नलिखित विवरण में, उपयोग की जाने वाली शब्दावली विशेष रूप से विंडोज एनटी ऑपरेटिंग प्रणाली के लिए होगी, लेकिन अवधारणाएं अन्य वर्चुअल मेमोरी ऑपरेटिंग प्रणाली पर प्रायुक्त होती हैं।

जब 32-बिट OS पर एक नया एप्लिकेशन निष्पादित किया जाता है, तो प्रक्रिया में एक होता है 4 गीगाबाइट वीएएस: मेमोरी एड्रेस (0 से 232 − 1) में से प्रत्येक उस स्पेस में मान के रूप में एक बाइट हो सकता है। प्रारंभ में, उनमें से कोई भी मान ('-' कोई मान नहीं दर्शाता है) नहीं है। ऐसे वीएएस में मानों का उपयोग करने या सेट करने से पेज दोष हो सकता है।

  0                                           4 GiB
VAS        |----------------------------------------------|

तब एप्लिकेशन की निष्पादन योग्य फ़ाइल को वीएएस में माप किया जाता है। वीएएस प्रक्रिया में एड्रेस को एक्सई फ़ाइल में बाइट्स में माप किया जाता है। ओएस मैपिंग का प्रबंधन करता है:

0                                           4 GiB
VAS        |---vvv----------------------------------------|
mapping        |||
file bytes     app

वी मेमोरी-माप की गई फ़ाइल में बाइट्स से मान हैं। फिर, आवश्यक डायनामिक-लिंक लाइब्रेरी फ़ाइलों को माप (इसमें कस्टम लाइब्रेरी के साथ-साथ प्रणाली वाले भी शामिल हैं kernel32.dll और user32.dll) किया जाता है:

0                                           4 GiB
VAS        |---vvv--------vvvvvv---vvvv-------------------|
mapping        |||        ||||||   ||||
file bytes     app        kernel   user

प्रक्रिया तब exe फ़ाइल में बाइट निष्पादित करना प्रारंभ करती है। चूँकि, जिस तरह से प्रक्रिया अपने वीएएस में '-' मानों का उपयोग या सेट कर सकती है, वह ओएस से उन्हें फ़ाइल से बाइट्स में माप करने के लिए कहना है। इस तरह से वीएएस मेमोरी का उपयोग करने का एक सामान्य तरीका इसे पेज फ़ाइल में माप करना है। पृष्ठ फ़ाइल एक एकल फ़ाइल है, लेकिन सन्निहित बाइट्स के कई अलग-अलग सेटों को वीएएस में माप किया जा सकता है:

0                                           4 GiB
VAS        |---vvv--------vvvvvv---vvvv----vv---v----vvv--|
mapping        |||        ||||||   ||||    ||   |    |||
file bytes     app        kernel   user   system_page_file

और पृष्ठ फ़ाइल के विभिन्न भाग विभिन्न प्रक्रियाओं के वीएएस में माप कर सकते हैं:

0                                           4 GiB
VAS 1      |---vvvv-------vvvvvv---vvvv----vv---v----vvv--|
mapping        ||||       ||||||   ||||    ||   |    |||
file bytes     app1 app2  kernel   user   system_page_file
mapping             ||||  ||||||   ||||       ||   |
VAS 2      |--------vvvv--vvvvvv---vvvv-------vv---v------|

माइक्रोसॉफ़्ट विंडोज़ 32-बिट पर, डिफ़ॉल्ट रूप से, केवल 2 गीगाबाइट प्रक्रियाओं को उनके स्वयं के उपयोग के लिए उपलब्ध कराया जाता है।[2] अन्य 2 गीगाबाइट ऑपरेटिंग प्रणाली द्वारा उपयोग किया जाता है। माइक्रोसॉफ़्ट विंडोज़ के बाद के 32-बिट संस्करणों में उपयोगकर्ता-मोड वर्चुअल एड्रेस स्पेस को विस्तारित करना संभव है 3 गीगाबाइट जबकि केवल 1 गीगाबाइट प्रोग्राम को इमेज_फाइल_लार्ज_एड्रेस_अवेयर के रूप में चिह्नित करके और बूट.आईएनआई फ़ाइल में /3जीबी स्विच को सक्षम करके कर्नेल-मोड वर्चुअल एड्रेस स्पेस के लिए छोड़ दिया गया है।[3][4]

माइक्रोसॉफ़्ट विंडोज़ 64-बिट पर, एक निष्पादन योग्य चलाने वाली प्रक्रिया में जो /लार्जएड्रेसअवेयर:एनओ से जुड़ा था, ऑपरेटिंग प्रणाली कृत्रिम रूप से प्रक्रिया के वर्चुअल एड्रेस स्पेस के उपयोगकर्ता मोड भाग को 2 गीगाबाइट तक सीमित कर देता है। यह 32- और 64-बिट निष्पादनयोग्य दोनों पर प्रायुक्त होता है।[5][6] निष्पादनयोग्य चलाने वाली प्रक्रियाएँ जो /लार्जेडड्रेसवेयर:हाँ विकल्प से जुड़ी थीं, जो 64-बिट विज़ुअल स्टूडियो 2010 और बाद के संस्करण के लिए डिफ़ॉल्ट है,[7] 2 गीगाबाइट वर्चुअल एड्रेस स्पेस की: तक 4 गीगाबाइट 32-बिट एक्जीक्यूटेबल्स के लिए, अप करने के लिए 8 टेराबाइट विंडोज 8 के माध्यम से विंडोज में 64-बिट एक्जीक्यूटेबल्स के लिए, और 128 TiB विंडोज 8.1 और बाद में 64-बिट निष्पादनयोग्य के लिएसे अधिक तक पहुंच है ।[4][8]

सी (प्रोग्रामिंग लैंग्वेज) के मॉलोक के माध्यम से मेमोरी आवंटित करना स्थापित करता है

पृष्ठ फ़ाइल को किसी भी नए वर्चुअल एड्रेस स्पेस के लिए बैकिंग स्टोर के रूप में। चूँकि, एक प्रक्रिया मेमोरी-माप की गई फ़ाइल फ़ाइल बाइट्स भी कर सकती है।

लिनक्स

x86 सीपीयू के लिए, लिनक्स 32-बिट उपयोगकर्ता और कर्नेल एड्रेस श्रेणियों को अलग-अलग विधियों से विभाजित: 3जी/1जी उपयोगकर्ता/कर्नेल (डिफ़ॉल्ट), 1जी/3जी उपयोगकर्ता/कर्नेल या 2जी/2जी उपयोगकर्ता/कर्नेल करने की अनुमति देता है।[9]


यह भी देखें

टिप्पणियाँ

  1. IBM Corporation. "What is an address space?". Retrieved August 24, 2013.
  2. "Virtual Address Space". MSDN. Microsoft.
  3. "LOADED_IMAGE structure". MSDN. Microsoft.
  4. 4.0 4.1 "4-Gigabyte Tuning: BCDEdit and Boot.ini". MSDN. Microsoft.
  5. "/LARGEADDRESSAWARE (Handle Large Addresses)". MSDN. Microsoft.
  6. "Virtual Address Space". MSDN. Microsoft.
  7. "/LARGEADDRESSAWARE (Handle Large Addresses)". MSDN. Microsoft.
  8. "/LARGEADDRESSAWARE (Handle Large Addresses)". MSDN. Microsoft.
  9. "Linux kernel - x86: Memory split".


संदर्भ

  • "Advanced Windows" by Jeffrey Richter, Microsoft Press