64 बिट ऑपरेटिंग सिस्टम पर 32 बिट प्रोसेस कितना मेमोरी एक्सेस कर सकता है?


86

विंडोज पर, सामान्य परिस्थितियों में एक 32 बिट प्रक्रिया केवल 2GB RAM (या बूट.इन फ़ाइल में एक विशेष स्विच के साथ 3GB) का उपयोग कर सकती है। 64 बिट ऑपरेटिंग सिस्टम पर 32 बिट प्रक्रिया चलाने पर, कितनी मेमोरी मिलती है? क्या कोई विशेष स्विच या सेटिंग्स हैं जो इसे बदल सकते हैं?


जवाबों:


92

डिफ़ॉल्ट रूप से 2 जीबी। यदि आवेदन बड़े पते की जगह से अवगत है (/ LARGEADDRESSAWARE के साथ जुड़ा हुआ है), तो यह 4 जीबी (3 जीबी नहीं, http://msdn.microsoft.com/en-us/library/aa366778.aspx देखें )

वे अभी भी 2 जीबी तक सीमित हैं क्योंकि कई एप्लिकेशन पॉइंटर्स के शीर्ष बिट पर शून्य होने पर निर्भर करते हैं।


5
क्या कोई समझा सकता है कि प्रक्रियाएँ पूर्ण 4GB तक क्यों नहीं पहुँच सकती हैं?
ब्लूट्रिन

1
आपका क्या अर्थ है? यदि आप इसे स्वयं बनाते हैं, तो आप / LARGEADDRESSAWARE ध्वज का उपयोग कर सकते हैं और इसे 4GB के साथ काम कर सकते हैं, यदि आपने ऐसा नहीं किया है तो आप उन डेवलपर्स की दया पर हैं जिन्होंने किया था।
सिल्वरबैकनेट

क्या इसलिए कि सूचक को खतरनाक रूप से दो के पूरक के साथ व्याख्या की जा सकती है?
रोजस्टेक्स

1
इसके द्वारा - since many application depends on the top bit of pointers to be zeroआपका मतलब है कि प्रक्रिया के पता स्थान को ट्रेस करते समय 32 वें बिट को संबोधित करने की योजना पर विचार नहीं किया जाता है या इसका उपयोग नहीं किया जाता है। क्या मुझे पता है?
RBT

21

यदि आप / LARGEADDRESSAWARE के साथ लिंक करते हैं तो 4 GB माइनस सिस्टम द्वारा उपयोग में क्या है।

यदि आप उस ध्वज को स्थापित करते हैं, तो निश्चित रूप से, आपको सूचक अंकगणित के साथ और भी अधिक सावधान रहना चाहिए।


-1: सिस्टम अपने लिए 64 बिट पतों का उपयोग करेगा, इसलिए किसी चीज़ को घटाने की आवश्यकता नहीं है
थॉमस वेलर

@ThomasW।, यह सच नहीं है, कम से कम विंडोज पर। WOW64 को अभी भी 64-बिट सिस्टम कॉल के लिए 32-बिट थ्रो की आवश्यकता है। Msdn.microsoft.com/en-us/library/windows/desktop/…
MSN

1
आप उन 605 kB DLL का मतलब है? क्षमा करें, मुझे यह नहीं मिला क्योंकि यह प्रश्न जीबी के मेमोरी के बारे में अधिक था।
थॉमस वेलर

7
@ThomasW।, यही कारण है कि मैंने कहा "शून्य से सिस्टम द्वारा उपयोग में क्या है।"
एमएसएन

FYI करें इस पर मृत लिंक
jjxtra

14

कोई भी इस तथ्य को छूने के लिए नहीं लगता है कि यदि आपके पास कई अलग-अलग 32-बिट अनुप्रयोग हैं, तो wow64 सबसिस्टम उन्हें 4 जी से ऊपर की मेमोरी में कहीं भी मैप कर सकता है, इसलिए पर्याप्त मेमोरी के साथ 64-बिट विंडोज़ पर, आप कई और 32-बिट एप्लिकेशन चला सकते हैं एक देशी 32-बिट सिस्टम की तुलना में।


7
आप भौतिक रैम के बारे में बात कर रहे हैं, जहां ओपी आभासी मेमोरी के बारे में बात कर रहा है। यहां तक ​​कि 32 बिट सिस्टम पर आप कई एप्लिकेशन चला सकते हैं, जब तक कि आपकी पेज फाइल काफी बड़ी है।
थॉमस वेलर

8

32-बिट प्रक्रिया अभी भी 64-बिट OS में समान बाधाओं तक सीमित है। मुद्दा यह है कि मेमोरी पॉइंट केवल 32-बिट्स चौड़े हैं, इसलिए प्रोग्राम 32 बिट्स से बड़े किसी भी मेमोरी एड्रेस को असाइन / हल नहीं कर सकता है।


4
यह उपयोगी होता अगर आप यह स्पष्ट कर देते कि 32 बिट्स 4 जीबी स्थान को संबोधित करते हैं।
इंजीनियर

4

64-बिट OS के तहत एक 32-बिट प्रक्रिया 2Gb तक सीमित है। लेकिन अगर इसे IMAGE_FILE_LARGE_ADDRESS_AWAREबिट सेट के साथ एक EXE फ़ाइल में संकलित किया जाता है , तो इसमें 4 जीबी की सीमा होती है, 2Gb की नहीं - https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx देखें

आपके द्वारा विशेष बूट फ़्लैग, 3 जीबी, /3GBस्विच, या /uservaसभी के बारे में 32-बिट ऑपरेटिंग सिस्टम के बारे में सुनी जाने वाली बातें और 64-बिट विंडोज पर लागू नहीं होती हैं।

अधिक जानकारी के लिए https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx देखें ।

32-बिट ऑपरेटिंग सिस्टम के बारे में, विश्वास के विपरीत, 32-बिट ऑपरेटिंग सिस्टम के लिए 4GB की कोई भौतिक सीमा नहीं है। उदाहरण के लिए, 32-बिट सर्वर ऑपरेटिंग सिस्टम जैसे माइक्रोसॉफ्ट विंडोज सर्वर 2008 32-बिट 64 जीबी तक पहुंच सकता है(विंडोज सर्वर 2008 एंटरप्राइज एंड डाटासेंटर एडिशन) - फिजिकल एड्रेस एक्सटेंशन (पीएई) के माध्यम से, जिसे पहले पेंटियम प्रो में इंटेल द्वारा पेश किया गया था, और बाद में एथलॉन प्रोसेसर में एएमडी द्वारा - यह तीन स्तरों के एक पृष्ठ तालिका पदानुक्रम को परिभाषित करता है, 32 के बजाय 64 बिट्स की तालिका प्रविष्टियों के साथ, इन सीपीयू को सीधे 4 गीगाबाइट से बड़े भौतिक पते वाले स्थान तक पहुंचने की अनुमति मिलती है - इसलिए सैद्धांतिक रूप से, 32-बिट ओएस सैद्धांतिक रूप से 2 ^ 64 बाइट्स या 17,179,869,184 गीगाबाइट तक पहुंच सकता है, लेकिन खंड है 4GB तक सीमित है। हालाँकि, मार्केटिंग कारणों के कारण, Microsoft ने गैर-सर्वर ऑपरेटिंग सिस्टम पर अधिकतम सुलभ मेमोरी को केवल 4GB तक सीमित कर दिया है, या, यहाँ तक कि 3GB प्रभावी रूप से। इस प्रकार, 32-बिट OS पर एक एकल प्रक्रिया 4GB से अधिक का उपयोग कर सकती है - और Microsoft SQL सर्वर एक उदाहरण है।

64-बिट विंडोज के तहत 32-बिट प्रक्रियाओं में साझा कर्नेल के वर्चुअल एड्रेस स्पेस (जिसे सिस्टम स्पेस भी कहा जाता है ) का उपयोग करने में 64-बिट प्रक्रियाओं की तुलना में कोई नुकसान नहीं है । सभी प्रक्रियाओं, 64-बिट या 32-बिट, 64-बिट विंडोज के तहत समान 64-बिट सिस्टम स्थान साझा करें।

इस तथ्य को देखते हुए कि 32-बिट विंडोज पर सिस्टम स्पेस को सभी प्रक्रियाओं में साझा किया जाता है , बड़ी मात्रा में हैंडल (जैसे थ्रेड्स, सेमाफोर्स, फाइल्स आदि) बनाने वाली प्रक्रियाएं कर्नेल ऑब्जेक्ट्स द्वारा सिस्टम स्पेस का उपभोग करती हैं और मेमोरी से बाहर भी चला सकती हैं। यदि आपके पास कुल में बहुत सी मेमोरी उपलब्ध है। इसके विपरीत, 64-बिट विंडोज पर , कर्नेल स्थान 64-बिट है और 4 जीबी द्वारा सीमित नहीं है। 32-बिट एप्लिकेशन द्वारा किए गए सभी सिस्टम कॉल उपयोगकर्ता मोड में देशी 64-बिट कॉल में परिवर्तित हो जाते हैं ।


1
यह सवाल इस बारे में पूछ रहा है कि एकल प्रक्रिया कितनी मेमोरी तक पहुंच सकती है। यह 32-बिट वर्चुअल मेमोरी एड्रेस-स्पेस द्वारा सीमित है। सुनिश्चित करें कि आपके पास एक ही कंप्यूटर पर 4GB का उपयोग करके प्रत्येक 32-बिट प्रक्रिया हो सकती है , यहां तक ​​कि PAE का उपयोग करके 32-बिट OS के साथ। लेकिन यह सवाल यह नहीं पूछ रहा है।
पीटर कॉर्ड्स

@PeterCordes - क्षमा करें, और आपको धन्यवाद - मैंने 2GB / 4GB सीमा के बारे में उत्तर अपडेट कर दिया है।
मैक्सिम मासियुटिन

@PeterCordes, आपकी टिप्पणी के लिए धन्यवाद, मैंने इस बात पर जोर देने के लिए उत्तर दिया है कि एकाधिक 32-बिट प्रक्रियाएं समान कंप्यूटर पर 4GB का उपयोग कर सकती हैं, यहां तक ​​कि PAE का उपयोग करते हुए 32-बिट OS के साथ, और 64- के तहत 32-बिट प्रक्रियाएँ बिट ओएस 2GB सिस्टम स्पेस लिमिट से ग्रस्त नहीं है जो कि 32-बिट OS के तहत एक समस्या थी।
मैक्सिम मासियूटिन

-1

Win64 के तहत 32 बिट प्रक्रिया चलाने पर आपको एक ही मूल प्रतिबंध मिला है। आपका ऐप 32 में चलता है लेकिन सबसिस्टम जो Win32 की तरह दिखने की पूरी कोशिश करता है, और इसमें आपकी प्रक्रिया के लिए मेमोरी प्रतिबंध शामिल होंगे (आपके लिए कम 2GB, OS के लिए ऊपरी 2GB)


-11

सीमा 2 जी नहीं है या 32 बिट के लिए 4 जीबी 3 जीबी नहीं है।

लोगों को लगता है कि इसका 3Gb यह है कि OS 3gb मुफ्त दिखाता है जब उनके पास वास्तव में 4gb सिस्टम RAM है।

इसकी कुल रैम 4GB की है। तो अगर आपके पास 1 gb का वीडियो कार्ड है जो 32bit OS द्वारा देखे गए कुल RAM के भाग के रूप में गिना जाता है।

4 जी नहीं 3 नहीं 2 मिला?


2
यह गलत है। एक मानक x86 सिस्टम (कोई मेमोरी एक्सटेंशन नहीं) के लिए, कर्नेल मेमोरी स्पेस के पूर्ण 4GiB तक पहुंच सकता है (भले ही कंप्यूटर में पेजिंग के कारण केवल 1GiB हो)। कर्नेल के पास ऊपरी 2GiB (कुछ कर्नेल आरक्षित 1GiB या 3GiB इसके बजाय) का उपयोग करने के लिए सुरक्षित है। प्रत्येक प्रक्रिया की वर्चुअल मेमोरी में कर्नेल की आरक्षित मेमोरी मैप की गई होती है और इस प्रकार यह प्रक्रिया 2GiB मेमोरी का उपयोग नहीं कर सकती है।
एलेक्स जोर्गेनसन

3
इसके अलावा, वीडियो कार्ड का उस मेमोरी की मात्रा से कोई लेना-देना नहीं है जिसका एक प्रक्रिया उपयोग कर सकती है। एसीपीआई टेबल, मेमोरी मैप्ड आईओ, आदि भौतिक मेमोरी एड्रेस का उपयोग करते हैं, लेकिन वर्चुअल मेमोरी के लिए धन्यवाद से बचा जाता है।
एलेक्स जोर्गेनसन

1
यह गलत है। Microsoft ने वर्चुअल 32-बिट एड्रेस स्पेस को विंडोज NT के साथ विभाजित करने के लिए (डिज़ाइन पसंद) चुना जैसे कि 2GB OS (ड्राइवर / एपीआई / सिस्टम कॉल आदि) की मैपिंग के लिए आरक्षित था और ऐप उपयोग के लिए 2GB शेष था। / 3 जीबी बूट स्विच इस व्यवहार को बदलता है (ओएस मैपिंग के लिए 1 जीबी, ऐप कोड के लिए 3 जीबी)। मैं पुराने विंडोज एनटी 3.x वर्चुअल मेमोरी आर्किटेक्चर डॉक्स को पाठक के लिए एक अभ्यास के रूप में छोड़ रहा हूं :-)
ripvlan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.