क्या 32-बिट OS मशीन सभी 8GB RAM + 20GB पेज फ़ाइल का उपयोग कर सकती है?


98

मैं 32-बिट OS के बारे में क्या समझता हूं, पता 32 बिट्स में व्यक्त किया गया है, इसलिए अधिकांश OS में 2 32 = 4 जी मेमोरी स्पेस का उपयोग किया जा सकता है - मुझे लगता है कि यूनिट बाइट्स है, इसलिए 4 जीबी।

क्या इसका मतलब यह है कि अगर 32-बिट OS वाली कोई मशीन (विंडोज या यूनिक्स हो) हार्ड डिस्क पर 4GB से अधिक रैम + पेज फ़ाइल है, उदाहरण के लिए 8 जीबी रैम और 20 जीबी पेज की फाइल, तो इसकी मेमोरी कभी भी उपयोग नहीं की जाएगी। "?

तक "का इस्तेमाल किया" मेरा मतलब है कि बढ़ती RAM या पृष्ठ फ़ाइल प्रदर्शन में मदद नहीं करेगा; बेशक, यह हमेशा संभव है कि कोई एप्लिकेशन ओएस से मेमोरी का अनुरोध करता रहेगा लेकिन विफल रहता है।

इसी तरह, अगर इस 32-बिट OS मशीन में 2GB रैम और 2GB पेज फाइल है, तो पेज फाइल का आकार बढ़ाने से प्रदर्शन में मदद नहीं मिलेगी। क्या ये सच है?


2
साइड नोट के रूप में, यदि आपके पास अधिक है तो 4GB RAM और केवल 32 बिट OS है, तो आप RAM डिस्क बना सकते हैं। यह आपकी रैम में एक हार्ड ड्राइव है, और आप इसे उपयोग करने के लिए अप्रयुक्त / अनड्रेसड रैम का उपयोग कर सकते हैं।
सिमोन वेरबेके

10
आप नहीं कर सकते। एक रैमडिस्क को अभी भी ओएस के माध्यम से बनाया जाना है, अगर ओएस उस मेमोरी का उपयोग नहीं कर सकता है जिसे आप वहां भी रैमडिस्क नहीं बना सकते हैं। (जब तक आपका बायोस एक रैमडिस्क नहीं बना सकता है, जो दुर्लभ है)।
एवी

1
छोटा जवाब हां है"। यद्यपि आमतौर पर एक प्रक्रिया को उपयोग करने के लिए 32 बिट पता स्थान दिया जाता है, ओएस स्वयं से अधिक का उपयोग कर सकता है (या तो बैंक स्विचिंग द्वारा जैसे कि हमने 80 के दशक में किया था या इंटेल के पीएई के रूप में एड्रेस एक्सटेंशन ट्रिक स्कूल द्वारा किया गया था। इसके अलावा, याद रखें कि आप इससे अधिक चलाते हैं। एक समय में एक प्रोग्राम, जो एक से अधिक प्रक्रिया से बना हो सकता है (क्रोम विभिन्न प्रक्रियाओं में टैब डालता है)। और ओएस स्वयं स्थानीय फिक्स्ड डिस्क से डेटा कैशिंग जैसे चीजों के लिए मेमोरी का उपयोग करेगा ताकि आप पहले से ही डेटा तक तेजी से पहुंच का अनुभव करें। उपयोग किया जाता है।
rbanffy

जवाबों:


145

मैं 32-बिट OS के बारे में क्या समझता हूं, यह पता 32 बिट्स में व्यक्त किया गया है, इसलिए अधिकांश OS 2 ^ 32 = 4GB स्पेस का उपयोग कर सकते हैं

प्रक्रिया को संबोधित करने वाला सबसे अधिक 4GB है। आप संभावित रूप से मेमोरी को एड्रेस स्पेस के साथ भ्रमित कर रहे हैं । एड्रेस स्पेस की तुलना में एक प्रक्रिया में अधिक मेमोरी हो सकती है। यह पूरी तरह से कानूनी और वीडियो प्रसंस्करण और अन्य मेमोरी इंटेंसिव एप्लिकेशन में काफी सामान्य है। एक प्रक्रिया में दर्जनों जीबी मेमोरी आवंटित की जा सकती है और इसे वसीयत में पते की जगह से बाहर स्वैप किया जा सकता है। एक बार में केवल 2 जीबी ही यूजर एड्रेस स्पेस में जा सकता है।

यदि आपके घर पर चार-कार गैरेज है, तो आप अभी भी पचास कारों के मालिक हो सकते हैं। आप बस उन्हें अपने गैराज में नहीं रख सकते। आपके पास कम से कम 46 स्टोर करने के लिए आपके पास सहायक भंडारण कहीं और होना चाहिए; कौन सी कारें आप अपने गैराज में रखते हैं और कौन सी सड़क पर आप पार्किंग में रखते हैं यह आप पर निर्भर है।

क्या इसका मतलब किसी भी 32-बिट ओएस है, चाहे वह विंडोज या यूनिक्स हो, अगर मशीन में रैम + पेज फाइल 4GB से अधिक हार्ड डिस्क पर है, उदाहरण के लिए 8 जीबी रैम और 20 जीबी पेज की फाइल, तो "मेमोरी यूज" कभी नहीं होगी?

बिल्कुल इसका मतलब यह नहीं है कि। एक एकल प्रक्रिया इससे अधिक मेमोरी का उपयोग कर सकती है! फिर से एक प्रक्रिया का उपयोग करता है स्मृति की मात्रा आभासी पते अंतरिक्ष की एक प्रक्रिया का उपयोग करता है की राशि के लिए लगभग पूरी तरह से असंबंधित है। ठीक उसी तरह जिस तरह आप अपने गैरेज में रखते हैं, उस कार की संख्या पूरी तरह असंबंधित होती है।

इसके अलावा, दो प्रक्रियाएं गैर-निजी मेमोरी पेज साझा कर सकती हैं । यदि बीस प्रक्रियाएँ सभी समान DLL को लोड करती हैं, तो सभी प्रक्रियाएँ उस कोड के लिए मेमोरी पेज साझा करती हैं। वे वर्चुअल मेमोरी एड्रेस स्पेस साझा नहीं करते हैं , वे मेमोरी साझा करते हैं

मेरी बात, यदि यह स्पष्ट नहीं है, तो यह है कि आपको मेमोरी और एड्रेस स्पेस को एक ही चीज़ के रूप में सोचना बंद कर देना चाहिए, क्योंकि वे एक ही चीज़ नहीं हैं।

यदि इस 32-बिट OS मशीन में 2GB रैम और 2GB पेज फ़ाइल है, तो पेज फ़ाइल का आकार बढ़ाने से प्रदर्शन में मदद नहीं मिलेगी। क्या ये सच है?

आपके पास पचास कारें और चार कार गैरेज हैं, और सड़क के नीचे 100 कार पार्किंग है। आप पार्किंग के आकार को 200 स्पॉट तक बढ़ाते हैं। क्या आपकी कारों में से कोई भी तेजी से हो रही है जिसके परिणामस्वरूप अब आपके पास 50 अतिरिक्त पार्किंग स्थानों के बजाय 150 अतिरिक्त पार्किंग स्थान हैं?


26
मुझे यह जवाब हाथ में सवाल नहीं पता है और लगभग बिंदुओं पर भ्रामक है।
ऋग

48
@ रिग: बहुत बढ़िया, मुझे आपकी रचनात्मक आलोचना सुनकर खुशी हुई। अब एक बेहतर उत्तर लिखने और आपके द्वारा हमें आपके द्वारा दिए गए उत्तर को दिखाने का मौका कम भ्रामक और अधिक प्रासंगिक है।
एरिक लिपर्ट

4
@BlueRaja: मुझे लगता है कि आप भ्रमित कर रहे हैं भौतिक स्मृति के साथ स्मृति । भौतिक मेमोरी केवल एक अनुकूलन है जो मेमोरी तक तेजी से पहुंच की अनुमति देता है। जिस तरह प्रोसेसर कैश एक ऑप्टिमाइज़ेशन है जो मेमोरी तक तेज़ पहुंच की अनुमति देता है। मेमोरी पेज फ़ाइल में आरक्षित सभी इरादों और उद्देश्यों के लिए है। चाहे पृष्ठ फ़ाइल में कोई पृष्ठ दिया गया हो (1) एक वर्चुअल मेमोरी एड्रेस पर मैप किया गया हो या (2) डिस्क से भौतिक मेमोरी में कॉपी किया गया हो, इस सवाल के लिए अप्रासंगिक है कि यह आवंटित है या नहीं।
एरिक लिपिपर्ट

4
@ ब्ल्यूराज: रेमंड चेन के विषय पर लेख मदद कर सकता है। वह दिखाता है कि पेज फ़ाइल में से 4GB कैसे आवंटित किया जाए; यह स्मृति है कि प्रक्रिया का मालिक है । इस प्रक्रिया में एक बार में पूरी बात को संबोधित नहीं किया जा सकता है , लेकिन यह किसी पृष्ठ को अप्रयुक्त वीएम पृष्ठ में मैप करके, कुछ समय के लिए इसका उपयोग करके, और फिर इसे त्यागकर किसी भी पृष्ठ को संबोधित कर सकता है। blogs.msdn.com/b/oldnewthing/archive/2004/08/10/211890.aspx
एरिक

3
यह उत्तर स्पष्ट होगा, एरिक, यदि आपने स्पष्ट रूप से कहा था कि विंडोज (और अन्य OSes) आपको वास्तव में आपके वर्चुअल एड्रेस स्पेस में होने के बिना "रिजर्व" मेमोरी की अनुमति देता है, और फिर स्पष्ट प्रश्न का उत्तर देने के लिए "तो आप कैसे हैं" पता डालो?"। मुझे लगता है कि इसका जवाब "पेज आईडी का कुछ प्रकार है जिसे आप वर्चुअल एड्रेस स्पेस में पेज करने के लिए इसे संदर्भित करने के लिए उपयोग करते हैं, और फिर आप इसे वहां संबोधित कर सकते हैं", लेकिन मुझे नहीं पता, और आपका उत्तर यह नहीं कहता है :)
तैम्वी

67

यह सच है कि सीपीयू केवल अधिकतम 4 जीबी रैम को संबोधित कर सकता है। हालाँकि, वर्तमान CPU का उपयोग एमएमयू ( मेमोरी मैनेजमेंट यूनिट ) प्रक्रिया-विशिष्ट मेमोरी पतों को भौतिक मेमोरी पतों में अनुवाद करने के लिए करता है।

इस MMU का उपयोग मेमोरी आइसोलेशन (प्रोसेस A, मेमोरी B की प्रक्रिया में हेरफेर नहीं कर सकता है) से लेकर मेमोरी शेयरिंग तक के लिए किया जाता है (प्रोसेस A, प्रोसेस B के समान भौतिक मेमोरी क्षेत्र तक पहुंच सकता है और इस तरह से डेटा का आदान-प्रदान कर सकता है)।

हालांकि 32-बिट सीपीयू प्रति प्रक्रिया केवल 4 जीबी मेमोरी का समर्थन करता है, यह फिजिकल एड्रेस एक्सटेंशन का उपयोग करते समय 64 जीबी तक रैम को संबोधित कर सकता है । यह प्रोसेस A को मेमोरी के पहले 4Gb का उपयोग करने की अनुमति देता है, जबकि प्रोसेस B अगले 4Gb का उपयोग करता है। कुल मिलाकर, 4 जी बी से अधिक भौतिक मेमोरी का उपयोग किया जाता है, लेकिन मेमोरी की एक एकल प्रक्रिया का उपयोग करने वाली कुल राशि अभी भी 4 जीबी पर छाया हुआ है

पीएई लिनक्स पर कर्नेल संस्करण 2.3.23 और विंडोज सर्वर के कुछ 32-बिट फ्लेवर पर समर्थित है, लेकिन 32-बिट विंडोज एक्सपी, विस्टा या 7 पर नहीं।

यदि आपका सीपीयू पीएई का समर्थन नहीं करता है तो आप 4 जीबी की भौतिक मेमोरी (या अन्य कारकों के आधार पर कम) तक सीमित होंगे।

कृपया ध्यान दें कि आपका ऑपरेटिंग सिस्टम सीपीयू का समर्थन किए बिना पीएई की परवाह किए बिना डिस्क (पेज फ़ाइल) में भौतिक मेमोरी के कुछ हिस्सों को निकाल सकता है। यह सुनिश्चित करता है कि आप कई प्रक्रियाओं को शुरू कर सकते हैं जो 4 जी बी से अधिक का उपयोग करते हैं। केवल एक ही प्रभाव PAE है कि क्या आप प्रक्रिया A को चलाते समय भौतिक स्मृति में B की प्रक्रिया को 4Gb रख सकते हैं।


क्या इसका मतलब यह है कि अगर यह समर्थन नहीं करता है, तो मैंने इसके ऊपर जो कहा वह सही है?

10
Windows XP PAE (SP2 के साथ शुरू, मुझे लगता है) का समर्थन करता है, लेकिन जब मशीन PAE का समर्थन करता है तब भी 4GB से अधिक रैम को अनदेखा करता है; यहाँ देखें । इसका उपयोग हार्डवेयर-आधारित डेटा निष्पादन रोकथाम के लिए किया जाता है - NX / XD बिट केवल PAE पृष्ठ तालिका प्रविष्टि में उपलब्ध है, न कि "नियमित" पृष्ठ तालिका प्रविष्टि।
वायज़र्ड

चिपसेट इस बात का एक सीमित कारक भी हो सकता है कि आप किस ओएस या हैक को चुनते हैं, इसकी परवाह किए बिना कितनी मेमोरी को सपोर्ट / उपयोग किया जा सकता है।
मोआब

5
मैं चाहता हूं कि 32 बिट विंडो के उपभोक्ता संस्करण 4 जीबी रैम का समर्थन नहीं करते हैं, यही कारण है कि हार्डवेयर ड्राइव की एक महत्वपूर्ण संख्या को उस मेमोरी के साथ सही ढंग से काम नहीं करने के लिए पाया गया था; और उस समय से> 4GB RAM सर्वर / अल्ट्रा हाई एंड वर्कस्टेशंस के बाहर बेहद दुर्लभ था, जो कि ज्यादातर कंपनियों ने ड्राइवरों को बनाए रखा, ड्राइवरों को अपडेट करने के लिए पैसे खर्च करने में कोई दिलचस्पी नहीं थी जो केवल उनके ग्राहक आधार का 0.1% उपयोग किया जाएगा।
दान नीली

6
@DanNeely ओएस करता है समर्थन स्मृति के लिए, यह सीमित है लाइसेंस के मुद्दों की वजह से । जबकि मैं मानता हूं कि यह एक तृतीय-पक्ष हैक है, यह केवल विंडोज के उपभोक्ता वेरिएंट के लिए है। विंडोज 2000 से शुरू होने वाले सर्वर आधारित विंडोज डिस्ट्रीब्यूशन को 4GB से अधिक मेमोरी (Ref। पहला लिंक) के लिए समर्थन मिला है।
ब्रेकथ्रू

15

विशेष रूप से 32-बिट विंडोज वेरिएंट के बारे में बोलते हुए, उनके पास विंडोज 2003 वेरिएंट के बाद से 4 जीबी से अधिक रैम का समर्थन है (और आप विंडोज 7 के लिए कर्नेल हैक भी प्राप्त कर सकते हैं, जिससे आप 32-बिट में अपने रैम का उपयोग कर सकते हैं)। हालाँकि, यह एक लागत पर आता है, जैसा कि आपने अपने प्रश्न के पहले भाग में बताया है।

32-बिट ऑपरेटिंग सिस्टम में, एक पॉइंटर (मेमोरी एड्रेस) का आकार सीपीयू की शब्द लंबाई, 32-बिट्स के समान होता है, जो कि (जैसा कि आपने उल्लेख किया है) 2 ^ 32 = 4 जीबी मेमोरी स्पेस देता है। विंडोज़ अनुप्रयोगों के लिए "वर्चुअल मेमोरी" दृष्टिकोण भी लेता है, इसलिए प्रत्येक एप्लिकेशन का अपना मेमोरी स्पेस होता है।

चूंकि प्रत्येक पॉइंटर केवल 32-बिट चौड़ा है, प्रत्येक एप्लिकेशन के पॉइंटर्स केवल 4GB तक मेमोरी को संबोधित कर सकते हैं, भले ही सिस्टम 4GB रैम का अधिक समर्थन कर सकता है। जहां तक ​​मुझे पता है, 32-बिट ऑपरेटिंग सिस्टम में 4GB से अधिक रैम का उपयोग करने वाला यह एकमात्र कैविएट है। कुल मिलाकर, आपके पास 4GB से अधिक रैम संयुक्त का उपयोग करके कई एप्लिकेशन हो सकते हैं, लेकिन कोई भी एक विशेष प्रक्रिया केवल 4GB तक ही आवंटित / उपयोग कर सकती है।


अपने प्रश्न पर वापस, मान लें कि आपके पास एक प्रोग्राम है जिसमें 2GB RAM का उपयोग किया गया है। यदि आपके पास इस कार्यक्रम के 10 उदाहरण हैं, तो यह 20GB है। आपके सभी 8GB रैम का उपयोग किया जाएगा, साथ ही पेजफाइल का एक और 12GB। तो हाँ, 32-बिट ऑपरेटिंग सिस्टम के तहत, इस मेमोरी का उपयोग करना संभव है।

यदि इस 32-बिट OS मशीन में 2GB रैम और 2GB पेज फ़ाइल है, तो पेज फ़ाइल का आकार बढ़ाने से प्रदर्शन में मदद नहीं मिलेगी। क्या ये सच है?

पेजफाइल का आकार बढ़ने से आमतौर पर प्रदर्शन में वृद्धि नहीं होगी (जब तक कि आपकी रैम और पेजफाइल पूर्ण न्यूनतम पर सेट नहीं हो जाती है, या आपके कंप्यूटर को लगातार थ्रैश कम करता है)। हालाँकि, यह आपके कंप्यूटर को (वर्चुअल) मेमोरी से बाहर निकलने से रोक सकता है। जब भी किसी चीज़ को पेजफाइल को शुद्ध करने की आवश्यकता होती है, तो आप पहले से ही एक विशाल प्रदर्शन हिट कर रहे हैं (चूंकि हार्ड ड्राइव परिमाण का आदेश है तो आपकी रैम)।


प्रत्येक स्थान को मिलने वाले 4GB पते के स्थान में से केवल 2GB प्रोग्राम के उपयोग के लिए उपलब्ध है; अन्य 2GB कर्नेल द्वारा उपयोग के लिए आरक्षित है। / 3GB बूट विकल्प कुछ कार्यक्रमों अधिक रैम उपयोग करने की अनुमति कर सकते हैं।
वायज़र्ड

1
@ ब्रीकथ्रू: "पेजफाइल का आकार बढ़ने से प्रदर्शन कभी नहीं बढ़ेगा" मुझे नहीं लगता कि यह सच है। उदाहरण के लिए, यदि अधिक स्वैप है, तो OS अप्रयुक्त प्रोग्राम डेटा को अधिक आक्रामक रूप से स्वैप कर सकता है, और उदाहरण के लिए डिस्क कैशिंग के लिए मुफ्त रैम का उपयोग कर सकता है। कुछ कॉन्फ़िगरेशन में, यह बेहतर प्रदर्शन प्राप्त कर सकता है। Serverfault पर एक अच्छा जवाब है कि क्यों एक
पेजफाइल

2
कंबल बयानों से सावधान रहें जैसे "पेजफाइल का आकार बढ़ाना प्रदर्शन को कभी नहीं बढ़ाएगा" , यह एक पेज फ़ाइल के लिए पूरी तरह से संभव है जो कि बड़े पेज फाइल होने की तुलना में अधिक डिस्क थ्रेशिंग के परिणामस्वरूप बहुत छोटा है! इस प्रश्न में उत्तर और टिप्पणियाँ देखें ।
मार्क बूथ

1
@ साल्सेक गुड पॉइंट, मैंने इसे "आमतौर पर नहीं" प्रकार की चीज़ के रूप में अद्यतन किया। जबकि मैं मानता हूं कि यह एक सर्वर में बहुत बड़ा अंतर ला सकता है, ज्यादातर लोगों के लिए, जिस बिंदु पर मैं कोशिश कर रहा था वह यह है कि वे सिर्फ रैम प्राप्त करना बेहतर होगा (क्योंकि जब आप पेजिंग कर रहे हैं, तो प्रदर्शन बहुत धीमा है जैसा भी मिल सकता है)।
ब्रेकथ्रू

-1

जब एक प्रोसेसर को 32-बिट कहा जाता है, तो इसका मतलब है कि यह एकल निर्देश का उपयोग करके 32-बिट संख्या के साथ काम कर सकता है। इसका पता बस की चौड़ाई से बहुत कम है, जो कि 1995 में जारी पेंटियम प्रो के बाद से इंटेल आर्किटेक्चर पर 36-बिट है ।

प्रसिद्ध 4 जीबी सीमा इस तथ्य से आती है कि अधिकांश पीसी सॉफ्टवेयर फ्लैट मेमोरी मॉडल का उपयोग करते हैं जहां प्रत्येक बाइट मेमोरी को एक पॉइंटर द्वारा संबोधित किया जा सकता है। चूंकि एक पॉइंटर का उपयोग करने के लिए एक रजिस्टर में फिट होना चाहिए, और रजिस्टर 32-बिट चौड़े हैं, आप 4GB तक सीमित हैं।


यह गलत है, जैसा कि पहले अन्य उत्तर में बताया गया है।
क्रिसइंमोंटॉन

क्या आप एक विशेष तथ्य को इंगित कर सकते हैं कि मैं गलत हो गया हूं?
दिमित्री ग्रिगोरीव

1
एक एकल प्रक्रिया 4 जीबी से अधिक का उपयोग कर सकती है। विशेष रूप से, पिछले उत्तर बताते हैं "एक प्रक्रिया में पता स्थान से अधिक मेमोरी हो सकती है"।
क्रिसइंमोंटॉन

2
उदाहरण के लिए देखें, blog.superuser.com/2011/04/23/… अब, निश्चित रूप से, आप एक साथ 4 जीबी से अधिक का उपयोग नहीं कर सकते हैं, लेकिन एक एकल प्रक्रिया मेमोरी को अनमैप और रीमैप कर सकती है, इसलिए इससे अधिक का उपयोग कर सकते हैं एक ही प्रक्रिया में 4 जीबी, बस बहीखाता का एक सा है। वह ब्लॉग पोस्ट विंडोज़-विशिष्ट है। मैंने डेटाबेस सर्वर को 32-बिट लिनक्स इंस्टॉल पर> 4 जीबी मेमोरी आवंटित किया है। इन दिनों, ज़ाहिर है, आप सिर्फ 64-बिट लिनक्स चलाएंगे।
क्रिसइन्डमॉन्टन

1
ठीक है, मेरी क्षमायाचना। मैंने mmapअतिरिक्त मेमोरी की संभावना के बारे में नहीं सोचा था ।
दिमित्री ग्रिगोरीव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.