2009-02-20 19 views
8

जो मैं समझता हूं, 32 बिट प्रक्रिया केवल 3 जीबी स्विच के बिना 32 बिट विंडोज़ पर 2 जीबी मेमोरी तक पहुंच सकती है, और उस स्मृति में से कुछ को अपने स्वयं के शैक्षिक कारणों से ओएस द्वारा लिया जाता है। ऐसा लगता है कि मेरे अनुभवों के साथ जाल लगता है क्योंकि हमारे पास एक ऐप है जो दुर्घटनाग्रस्त हो जाता है जब यह लगभग 1.2 - 1.5 जीबी रैम मेमोरी अपवादों के साथ पहुंचता है, भले ही स्मृति उपलब्ध हो।क्या 32 बिट प्रक्रिया 64 बिट विंडोज ओएस पर अधिक मेमोरी तक पहुंच सकती है?

मेरा सवाल यह है कि, इस 32 बिट ऐप को 64 बिट विंडोज़ में ले जाने से यह 1.5 जीबी से अधिक या इतनी मेमोरी तक पहुंच सकता है? या ऐप को 64 बिट तक अपग्रेड करना होगा?

+0

क्या आपका मतलब है, क्या यह पूर्ण 4 जीबी तक पहुंच सकता है जो 32-बिट सूचक सुझाएगा? यह निश्चित रूप से कुछ काम किए बिना 4 जीबी से अधिक नहीं संबोधित कर सकता है, लेकिन मुझे यह जानने में दिलचस्पी होगी कि यह 32-बिट विंडोज के तहत सक्षम होने से अधिक उपयोग कर सकता है या नहीं। – erickson

उत्तर

12

विजुअल स्टूडियो के नए संस्करणों में एक नया झंडा है जो 32-बिट ऐप्स "बड़ा पता स्थान जागरूक" बनाता है। असल में यह क्या करता है यह कहता है कि यदि यह विंडोज़ के 64-बिट संस्करण पर लोड किया गया है, तो उसे 4 जीबी (32-बिट पॉइंटर्स की सीमा) मिल जाएगी। विंडोज़ के 32-बिट संस्करणों पर आपको 2 या 3 जीबी की तुलना में यह निश्चित रूप से बेहतर है। http://msdn.microsoft.com/en-us/library/aa366778.aspx देखें:

सबसे विशेष रूप से यह कहते हैं: स्मृति और पता स्थान पर

सीमाएं मंच, ऑपरेटिंग सिस्टम, द्वारा और क्या LOADED_IMAGE संरचना के IMAGE_FILE_LARGE_ADDRESS_AWARE मूल्य और 4-गीगाबाइट के हिसाब से बदलती ट्यूनिंग (4 जीटी) उपयोग में हैं। IMAGE_FILE_LARGE_ADDRESS_AWARE सेट किया गया है या /LARGEADDRESSAWARE लिंकर विकल्प का उपयोग करके साफ़ किया गया है।

यह भी देखें: http://msdn.microsoft.com/en-us/library/wz223b1z.aspx

1

आपका ऐप आपके उदाहरण 32 बिट्स में सूचक आकार से सीमित होगा।

यदि आपका ऐप अधिक मेमोरी तक पहुंचने के लिए था तो आपको कुछ प्रकार की सेगमेंट मेमोरी आर्किटेक्चर की आवश्यकता होगी जैसे कि हमारे पास 16 बिट दिनों में था जहां ऐप्स ने 32 बिट पॉइंटर्स और ऑफ़सेट को 32 बिट मेमोरी स्पेस तक पहुंचने के लिए इस्तेमाल किया था।

1

WOW64 पर 64-बिट Windows 32-बिट विंडोज़ अनुप्रयोग का उपयोग कर, असली 64-बिट संकेत करने के लिए 32-बिट संकेत अनुवाद करने की अनुमति देता है। और वास्तव में 32-बिट एड्रेसिंग को 4 जीबी मेमोरी तक पहुंचने की इजाजत देनी चाहिए।

+0

32 बिट पॉइंटर्स का 64 बिट तक कोई अनुवाद नहीं है जबकि 32 बिट कोड चल रहा है। WOW64 केवल 64 बिट कोड में और बाहर संक्रमण करते समय शामिल हो जाता है। –

4

हां, सही परिस्थितियों में, विंडोज़ पर 32-बिट प्रक्रिया 2 जीबी की सामान्य 4 जीबी की बजाय पूर्ण 4 जीबी मेमोरी तक पहुंच सकती है।

इस कार्य के लिए, आपको निम्न की आवश्यकता:

  • एप्लिकेशन एक 64-बिट ओएस
  • एप्लिकेशन/LARGEADDRESSAWARE ध्वज के साथ संकलित किया जाना चाहिए पर चलना चाहिए।
  • ऐप को यह सुनिश्चित करने के लिए परीक्षण किया जाना चाहिए कि यह वास्तव में इस मामले में ठीक से काम करता है। ;) (विशेष रूप से, कोड जो 2 जीबी सीमा से नीचे के पते पर इंगित सभी पॉइंटर्स पर निर्भर करता है, स्पष्ट रूप से यहां काम नहीं करेगा)