वर्चुअल एड्रेस स्पेस: Difference between revisions
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> वर्चुअल एड्रेस की सीमा सामान्यतः कम एड्रेस पर प्रारंभ होती है और कंप्यूटर के निर्देश सेट द्वारा अनुमत उच्चतम एड्रेस तक विस्तारित हो सकती है और ऑपरेटिंग | [[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| | जब 32-बिट OS पर एक नया एप्लिकेशन निष्पादित किया जाता है, तो प्रक्रिया में एक होता है {{nowrap|4 [[Gibibyte|गीगाबाइट]]}} वीएएस: मेमोरी एड्रेस (0 से 2<sup>32</sup> − 1) में से प्रत्येक उस स्पेस में मान के रूप में एक बाइट हो सकता है। प्रारंभ में, उनमें से कोई भी मान ('-' कोई मान नहीं दर्शाता है) नहीं है। ऐसे वीएएस में मानों का उपयोग करने या सेट करने से पेज दोष हो सकता है।<syntaxhighlight lang="d"> | ||
0 4 GiB | 0 4 GiB | ||
VAS |----------------------------------------------| | VAS |----------------------------------------------| | ||
</syntaxhighlight>तब एप्लिकेशन की निष्पादन योग्य फ़ाइल को | </syntaxhighlight>तब एप्लिकेशन की निष्पादन योग्य फ़ाइल को वीएएस में माप किया जाता है। वीएएस प्रक्रिया में एड्रेस को एक्सई फ़ाइल में बाइट्स में माप किया जाता है। ओएस मैपिंग का प्रबंधन करता है:<syntaxhighlight lang="d"> | ||
0 4 GiB | 0 4 GiB | ||
VAS |---vvv----------------------------------------| | VAS |---vvv----------------------------------------| | ||
mapping ||| | mapping ||| | ||
file bytes app | file bytes app | ||
</syntaxhighlight>वी [[मेमोरी-मैप की गई फ़ाइल]] में बाइट्स से मान हैं। फिर, आवश्यक [[डायनामिक-लिंक लाइब्रेरी]] फ़ाइलों को | </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 फ़ाइल में बाइट निष्पादित करना प्रारंभ करती है। | </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>और पृष्ठ फ़ाइल के विभिन्न भाग विभिन्न प्रक्रियाओं के | </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 | </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"/> | ||
माइक्रोसॉफ़्ट विंडोज़ 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> | |||
सी (प्रोग्रामिंग लैंग्वेज) के [[malloc|मॉलोक]] के माध्यम से मेमोरी आवंटित करना स्थापित करता है | |||
पृष्ठ फ़ाइल को किसी भी नए वर्चुअल एड्रेस स्पेस के लिए बैकिंग स्टोर के रूप में। | |||
पृष्ठ फ़ाइल को किसी भी नए वर्चुअल एड्रेस स्पेस के लिए बैकिंग स्टोर के रूप में। चूँकि, एक प्रक्रिया मेमोरी-माप की गई फ़ाइल फ़ाइल बाइट्स भी कर सकती है। | |||
== [[लिनक्स]] == | == [[लिनक्स]] == | ||
x[[86]] | 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
कम्प्यूटिंग में, वर्चुअल एड्रेस स्पेस (वीएएस) या एड्रेस स्पेस वर्चुअल एड्रेस की सीमाओं का सेट है जो ऑपरेटिंग प्रणाली एक प्रक्रिया के लिए उपलब्ध कराता है।[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]
यह भी देखें
टिप्पणियाँ
- ↑ IBM Corporation. "What is an address space?". Retrieved August 24, 2013.
- ↑ "Virtual Address Space". MSDN. Microsoft.
- ↑ "LOADED_IMAGE structure". MSDN. Microsoft.
- ↑ 4.0 4.1 "4-Gigabyte Tuning: BCDEdit and Boot.ini". MSDN. Microsoft.
- ↑ "/LARGEADDRESSAWARE (Handle Large Addresses)". MSDN. Microsoft.
- ↑ "Virtual Address Space". MSDN. Microsoft.
- ↑ "/LARGEADDRESSAWARE (Handle Large Addresses)". MSDN. Microsoft.
- ↑ "/LARGEADDRESSAWARE (Handle Large Addresses)". MSDN. Microsoft.
- ↑ "Linux kernel - x86: Memory split".
संदर्भ
- "Advanced Windows" by Jeffrey Richter, Microsoft Press