2011-12-17 16 views
7

32-बिट मशीन में प्रत्येक प्रक्रिया को 4 जीबी वर्चुअल स्पेस मिलता है। इस मामले में कोई चिंता कर सकता है कि विखंडन के कारण हमें परेशानी का सामना करना पड़ सकता है। लेकिन 64-बिट मशीन के मामले में हम सैद्धांतिक रूप से एक बड़ी एड्रेसेबल वर्चुअल मेमोरी है, तो 64-बिट मशीन में स्मृति विखंडन अभी भी एक मुद्दा (यदि यह है) क्यों है?स्मृति विखंडन 64-बिट मशीन पर एक समस्या क्यों है?

+2

यह 64-बिट ऑपरेटिंग सिस्टम पर कोई मुद्दा नहीं है। –

+0

क्या यह टिप्पणी उत्तर नहीं देनी चाहिए? मौजूदा उत्तरों का मतलब यह है कि यह 64 बिट – paulm

उत्तर

5

प्रत्येक आभासी पता जिसे आप एक्सेस करने का प्रयास करते हैं उसे ऑपरेटिंग सिस्टम द्वारा भौतिक स्मृति में मैप किया जाता है। पृष्ठों में भौतिक स्मृति आवंटित की जाती है (उदाहरण के लिए 4K आकार में)। यदि आप ऑफ़सेट 1000000 * एन पर एक बाइट आवंटित करते हैं और इसे 1 से 1000000 तक एन के लिए करते हैं (मुझे लगता है कि आप एमएमएपी के साथ कर सकते हैं), तो ओएस को इसे एक लाख पृष्ठों भौतिक के साथ वापस करना होगा स्मृति, जो 4 जी की तरह कुछ है। वह भौतिक स्मृति किसी और चीज़ के लिए उपलब्ध नहीं होगी। यदि आपने बाइट्स को संयोजित रूप से आवंटित किया था, तो आपको अपने मिलियन बाइट्स के लिए केवल 1 एम भौतिक मेमोरी (256 पेज) की आवश्यकता होगी।

यदि आप वैध कारणों से 4 जी आवंटित करते हैं, और फिर इसके कुछ हिस्सों को आवंटित करते हैं, तो आवंटित प्रत्येक पृष्ठ को ध्यान में रखते हुए आप एक समान स्थिति में आ सकते हैं। ओएस वास्तव में किसी भी चीज़ के लिए मुक्त स्मृति का पुन: उपयोग करने में सक्षम नहीं होगा क्योंकि कोई भौतिक पृष्ठ नहीं है जो पूरी तरह से मुक्त है। तो यह एक विखंडन समस्या है।

सिद्धांत रूप में, आप कल्पना कर सकते हैं कि आभासी पते 1000000 और 2000000 विखंडन से परहेज, भौतिक स्मृति के उसी पृष्ठ पर मैप करेंगे। लेकिन व्यावहारिक रूप से, और अच्छे कारणों से, वर्चुअल मेमोरी मैपिंग पृष्ठ पर पृष्ठ के आधार पर किया जाता है। आप इसके बारे में यहां और अधिक पढ़ सकते हैं: http://en.wikipedia.org/wiki/Page_table

+0

चूंकि 64 बिट में पागल वर्चुअल एड्रेस स्पेस है, इनमें से कोई भी मायने नहीं रखता है? जब तक आपके पास टीबी की रैम न हो और 50 टीबी की तरह ऐसा न करें? – paulm

+0

अधिक सावधानी से पढ़ें: यह बताता है कि जब आपके विखंडन होते हैं तो * भौतिक * पृष्ठ बर्बाद हो जाते हैं। –

+0

हाँ लेकिन सवाल यह है कि "स्मृति विखंडन 64-बिट मशीन पर एक मुद्दा क्यों है?" तो निश्चित रूप से उत्तर की शुरुआत "यह नहीं है" होना चाहिए? – paulm

0

क्योंकि वह स्मृति "बर्बाद" है, उस एप्लिकेशन पर विचार करें जहां आपके पास बहुत सारे आंतरिक विखंडन हैं। उस प्रक्रिया को स्मृति में अधिक पृष्ठों की आवश्यकता होती है क्योंकि कामकाजी सेट अब स्मृति में बिखरा हुआ है और इसका मतलब है कि इसकी मेमोरी पदचिह्न बहुत अधिक है। यदि यह एप्लिकेशन रैम में भौतिक स्लॉट के लिए संघर्ष कर रहा है (मशीनों में अभी भी वास्तव में केवल 4 - 8 जीबी रैम एक विशिष्ट घरेलू सेटअप के लिए है) तो यह अधिक पेज स्वैपिंग का कारण बनता है। आम तौर पर आप अन्य अनुप्रयोगों के साथ स्मृति दबाव और विवाद से बचने के लिए अपने अनुप्रयोग स्मृति पदचिह्न को कम करना चाहते हैं।

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

+0

में एक समस्या है लेकिन "स्मृति विखंडन" के बारे में क्या है? इसकी प्रतिक्रिया में संभावित रूप से वर्चुअल मेमोरी आवंटित करने और मैप करने में माल्को, ओएस और हार्डवेयर कारकों को कवर करने की संभावना होनी चाहिए ... –

+0

@pst जो मैंने समझा है, उससे सवाल केवल परिणामों के बारे में नहीं पूछा गया कि यह पहले स्थान पर कैसे हुआ (हालांकि मैं इसे गलत पढ़ सकता था)। –

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