मैं pmap -x
कमांड का उपयोग कर लिनक्स x86-64 पर किसी प्रक्रिया के मेमोरी मैप को देखने का प्रयास कर रहा था। मैं pmap के आउटपुट को देखकर भ्रमित हो गया। गतिशील पुस्तकालयों के मानचित्रण के लिए विशेष रूप से प्रविष्टियों के लिए। उनके लिए कई प्रविष्टियां हैं (वास्तव में उनमें से सभी के लिए 4, जिनमें से कुछ 3 प्रविष्टियां हैं)। निम्नलिखित उदाहरणसमझने के लिए pmap आउटपुट
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
प्रत्येक लाइब्रेरी के लिए दूसरी पंक्ति में हमेशा 2 एमबी का आकार होता है जबकि इसकी कोई पृष्ठ अनुमति नहीं होती है। सभी पुस्तकालयों में ऐसा लगता है कि इसका आरएसएस हमेशा शून्य है। पिछले दो पंक्तियों में भी एक ही आकार (जो मूल पृष्ठ आकार है) और समान अनुमतियां हैं (एक मुट्ठी भर पुस्तकालयों में आरडब्ल्यू मैपिंग नहीं है)।
क्या किसी के पास इसके लिए कुछ स्पष्टीकरण है? मुझे एक भावना है कि संभावित रूप से केवल पढ़ने के लिए सुरक्षा के साथ मैपिंग लोडर द्वारा लाइब्रेरी के मेटाडेटा को पढ़ने के लिए किया जाता है जबकि एक्जिक्यूटिव अनुमति के साथ भाग वास्तव में लाइब्रेरी के लिए कोड होता है। हालांकि हो सकता है कि मैं गलत हूं।
लेकिन मुझे उस मध्य पंक्ति के बारे में कोई जानकारी नहीं है। कोई अनुमति नहीं और कोई उपयोग नहीं? किसी के पास ज्ञान के कुछ शब्द हैं?
मैंने कुछ पेजों को अज्ञात स्मृति पर होने की सूचना दी और कोई मोड बिट सेट नहीं है। ये क्या प्रतिनिधित्व करते हैं?
[/ proc/$ pid/maps का संभावित डुप्लिकेट x86 \ _64 linux पर कोई rwx अनुमतियों वाले पृष्ठों को दिखाता है] (http://stackoverflow.com/questions/16524895/proc-pid-maps-shows-pages-with -no-rwx-permissions-on-x86-64-linux) –
ने टाइपो को ठीक करने का प्रयास किया: * निष्पादन योग्य अनुमति के साथ भाग वास्तव में लाइब्रेरी के लिए कोड * ... ऐसा लगता है कि "है" गायब है लेकिन नहीं हो सकता 100% निश्चित; क्या आप सहायता कर सकते हैं? –