2013-05-20 6 views
6

के पाठ \ कोड खंड \ खंड में लोड मैं सी प्रोग्रामिंग पर और whilst मैं एक पूरी शुरुआत नहीं कर रहा हूँ देखने के लिए शुरू कर दिया है है (मैं जावा और वेब विकास का ज्ञान होना) के लिए बहुत कुछ कर रहे हैं मुझे समझ नहीं आता।सभी प्रोग्राम कोड स्मृति

मेरा प्रश्न यह है कि जब कोई प्रोग्राम पहली बार मेमोरी में लोड होता है। मुझे यह समझने में परेशानी हो रही है कि वास्तव में यहां क्या होता है।

प्रोग्राम प्रोग्राम लॉन्च होने पर या प्रोग्राम की लॉन्च होने पर केवल सभी प्रोग्राम कोड मेमोरी में लोड हो जाते हैं?

इस के बाद निर्देश के लिए इस कोड \ सेट में और भौतिक डिस्क प्रक्रिया CPU समय हो जाता है या स्मृति में कोड ठहरने भरी हुई है, जबकि कार्यक्रम चल रहा है के रूप में की बदली होता है? दो प्रक्रियाओं निर्देश के एक ही सेट साझा कर सकते हैं

यदि यह मतलब है प्रत्येक प्रक्रिया अपने आभासी स्मृति अंतरिक्ष में एक अलग कोड खंड हो जाता है?

मैं माफी चाहता हूँ अगर मेरे सवालों का बुनियादी या खराब शब्दों में कर रहे हैं, लेकिन मैं केवल इस अंतिम सप्ताह में तलाश शुरू कर दी और पढ़ने का एक सप्ताह के अंत में होने के बाद मैं जवाब की तुलना में कहीं अधिक प्रश्न हैं!

+0

अच्छा सवाल !! –

उत्तर

4

प्रोग्राम कोड के सभी जब कार्यक्रम शुरू की है या केवल क्या में लोड जरूरत है मेमोरी में लोड कर रहा है?

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

इस के बाद निर्देश के लिए इस कोड \ सेट में और बाहर भौतिक डिस्क प्रक्रिया CPU समय हो जाता है या के रूप में की स्मृति में लोड करता कोड ठहरने जबकि कार्यक्रम चल रहा है बदली होता है?

ओएस फैसला करता है कि कुछ स्मृति की जरूरत है यह अच्छी तरह से कोड के कुछ बाहर फेंक कर सकते हैं और फिर से लोड यह जब यह इसे बाद में की जरूरत है [अगर यह कभी फिर से इसकी आवश्यकता है - अगर यह प्रारंभ में से कुछ हिस्सा था यह, फिर कभी हिट नहीं हो सकता]।

दो प्रक्रियाओं निर्देश के एक ही सेट साझा कर सकते हैं अगर यह मतलब है प्रत्येक प्रक्रिया अपने आभासी स्मृति अंतरिक्ष में एक अलग कोड खंड हो जाता है?

एक ही एप्लिकेशन की कई प्रतियों के बीच कोड साझा करना निश्चित रूप से संभव है। फिर, चाहे कोई विशेष ओएस यह करता है या नहीं, ओएस पर निर्भर करता है। लिनक्स निश्चित रूप से दो (असंबद्ध) प्रक्रियाओं के बीच एक ही अनुप्रयोग से कोड प्रतियां साझा करता है [जाहिर है, एक फोर्कड प्रक्रिया परिभाषा द्वारा कोड साझा करता है]। मेरा मानना ​​है कि विंडोज भी करता है।

साझा पुस्तकालय (क्रमशः लिनक्स/यूनिक्स और विंडोज के लिए ".so" और ".dll" फ़ाइलें) प्रक्रियाओं के बीच कोड साझा करने के लिए भी उपयोग किए जाते हैं - एक ही साझा लाइब्रेरी का उपयोग कई अलग-अलग अनुप्रयोगों के लिए किया जाता है।

डाटा अंतरिक्ष निश्चित रूप से प्रत्येक आवेदन के लिए अलग और साझा पुस्तकालयों भी पुस्तकालय साझा करने की प्रक्रिया के अनुसार अपने स्वयं के डेटा अनुभाग मिल जाएगा है।

+0

मैट्स उस उत्तर के लिए धन्यवाद, जिसमें मुझे पता होना चाहिए कि सब कुछ शामिल है, दुर्भाग्यवश (आमतौर पर मामला है) इसने मुझे अधिक संबंधित प्रश्नों के साथ छोड़ दिया है! यदि किसी विधि के लिए निर्देश लोड किए गए थे और इस विधि को प्रोग्राम के जीवन में कई बार बुलाया जा सकता है तो क्या यह स्मृति में रहेगा? और मेरा दूसरा सवाल ग्राफ़िकल डिस्प्ले जेनरेट करने के लिए कोड के बारे में है? मुझे लगता है कि इस कोड को कार्यक्रम के जीवनकाल के लिए अनिवार्य रूप से लोड किया जाना चाहिए या क्या मैं इसे सोचने में गलत हूं? – berimbolo

+0

जब तक स्मृति की इतनी कमी नहीं होती है कि ओएस को किसी और चीज़ के लिए स्मृति की आवश्यकता होती है, तो यह स्मृति में रहता है। मुझे नहीं लगता कि "ग्राफिकल डिस्प्ले जेनरेट करने के लिए कोड" किसी भी अन्य कोड से अलग है - यह कोड है, गणित करने वाले कोड की तरह, किसी तालिका में खोज करता है या कुछ पूर्णांक में लोगों की संख्या की गणना करता है। [जाहिर है, वास्तव में स्क्रीन पर खींचे जाने वाले ड्राइवर के लिए कोड एक कर्नेल मॉड्यूल या सिस्टम ड्राइवर होता है, और ये आमतौर पर "swappable" नहीं होते हैं - और ये आमतौर पर "मांग लोड नहीं" होते हैं, लेकिन सभी एक बार में लोड होते हैं, और एक ठेठ मामले में अनलोड नहीं किया गया]। –

+0

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

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