2009-03-12 11 views
74

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

+0

http://msdn.microsoft.com/en-us/library/Aa366521 –

उत्तर

74

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

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

+4

क्या कोई बता सकता है कि प्रक्रियाएं पूर्ण 4 जीबी तक क्यों नहीं पहुंच सकतीं? – BlueTrin

+0

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

+0

क्या ऐसा इसलिए है क्योंकि पॉइंटर खतरनाक रूप से दो पूरक के साथ व्याख्या किया जा सकता है? – rosstex

17

4 जीबी ऋण यदि आप/LARGEADDRESSAWARE से लिंक करते हैं तो सिस्टम द्वारा उपयोग में क्या है।

Of course, you should be even more careful with pointer arithmetic if you set that flag.

+0

-1: सिस्टम 64 बिट पते का उपयोग स्वयं के लिए करेगा, इसलिए –

+0

@ थॉमसडब्ल्यू को घटाए जाने की कोई आवश्यकता नहीं है, यह सच नहीं है, कम से कम विंडोज़ पर। 64-बिट सिस्टम कॉल के लिए WOW64 को अभी भी 32-बिट थंक्स की आवश्यकता है। Http://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx – MSN

+1

देखें क्या आप उन 605 केबी डीएलएल का मतलब है? क्षमा करें, मुझे यह नहीं मिला क्योंकि सवाल जीबी की स्मृति के बारे में अधिक था। –

-1

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

7

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

+2

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

-7

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

लोगों को लगता है कि इसका 3 जीबी यह है कि ओएस 3 जीबी मुक्त होता है जब उनके पास वास्तव में 4 जीबी सिस्टम रैम होता है।

इसकी कुल रैम 4 जीबी है। तो यदि आपके पास 1 जीबी वीडियो कार्ड है जो 32 बिट ओएस द्वारा देखे गए कुल रैम के हिस्से के रूप में गिना जाता है।

4 गीग नहीं 3 नहीं 2 इसे मिला?

+2

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

+3

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

+1

यह गलत है। माइक्रोसॉफ्ट ने विंडोज एनटी के साथ वर्चुअल * 32-बिट एड्रेस स्पेस को विभाजित करने के लिए (डिज़ाइन पसंद) चुना है, जैसे कि 2 जीबी ओएस (ड्राइवर/एपीआई/सिस्टम कॉल इत्यादि) मैपिंग के लिए आरक्षित था और ऐप उपयोग के लिए 2 जीबी शेष था।/3 जीबी बूट स्विच इस व्यवहार को बदलता है (ओएस मैपिंग के लिए 1 जीबी, ऐप कोड के लिए 3 जीबी)। मैं पुराने विंडोज एनटी 3.x वर्चुअल मेमोरी आर्किटेक्चर डॉक्स को पाठक के लिए अभ्यास के रूप में ढूंढना छोड़ रहा हूं :-) – ripvlan

14

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

+7

आप भौतिक RAM के बारे में बात कर रहे हैं, जहां ओपी वर्चुअल मेमोरी के बारे में बात कर रहा है। यहां तक ​​कि 32 बिट सिस्टम पर भी आप कई एप्लिकेशन चला सकते हैं, जब तक कि आपकी पृष्ठ फ़ाइल पर्याप्त न हो। –

2

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

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

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

https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx देखें।

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

+1

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

+0

@ पीटरकॉर्डस - क्षमा करें, और धन्यवाद - मैंने 2 जीबी/4 जीबी सीमा के बारे में जवाब अपडेट किया है। –

संबंधित मुद्दे