mmapयदि आप एक ही फ़ाइल से केवल पढ़ने के फैशन में डेटा तक पहुँचने के लिए कई प्रक्रियाएँ करते हैं, तो यह बहुत अच्छा है, जो कि मेरे द्वारा लिखी जाने वाली सर्वर प्रणालियों में सामान्य है। mmapउन सभी प्रक्रियाओं को एक ही भौतिक मेमोरी पेज को साझा करने की अनुमति देता है, जिससे बहुत सारी मेमोरी बचती है।
mmapपेजिंग संचालन को अनुकूलित करने के लिए ऑपरेटिंग सिस्टम को भी अनुमति देता है। उदाहरण के लिए, दो कार्यक्रमों पर विचार करें; वह प्रोग्राम Aजो किसी 1MBफाइल में बफर बनाने के साथ पढ़ता है malloc, और प्रोग्राम B जिसे mmaps1MB फाइल मेमोरी में रखता है। यदि ऑपरेटिंग सिस्टम को Aमेमोरी मेमोरी का कुछ भाग स्वैप करना है, तो उसे मेमोरी को पुनः उपयोग करने से पहले बफर की सामग्री को स्वैप करना होगा। में Bके मामले में किसी भी असंशोधित mmapओएस जानता है क्योंकि कैसे मौजूदा फ़ाइल वे थे से उन्हें बहाल करने के लिए 'घ पृष्ठ तुरंत पुन: उपयोग किया जा सकता है mmap' से डी। (OS यह पता लगा सकता है कि शुरू में लिखने योग्य mmap'd' पृष्ठों को चिन्हित करके कौन से पृष्ठ अनमॉडिफाइड हैं और कॉपी स्ट्रैटजी के समान, सेग दोष को पकड़ सकते हैं )।
mmapअंतर प्रक्रिया संचार के लिए भी उपयोगी है । आप उन mmapफ़ाइलों को पढ़ / लिख सकते हैं, जिन्हें उस प्रक्रिया में लिखना है और फिर उस mmap'dक्षेत्र में सिंक्रोनाइज़ेशन प्राइमेटिव्स का उपयोग करना है (यह वही है जो MAP_HASSEMAPHOREझंडा है)।
एक जगह mmapअजीब हो सकती है यदि आपको 32 बिट मशीन पर बहुत बड़ी फ़ाइलों के साथ काम करने की आवश्यकता है। ऐसा इसलिए है क्योंकि mmapआपकी प्रक्रिया के पते स्थान में पते का एक सन्निहित ब्लॉक ढूंढना पड़ता है जो फ़ाइल की पूरी रेंज को मैप करने के लिए पर्याप्त है। यह एक समस्या बन सकती है यदि आपका पता स्थान खंडित हो जाता है, जहां आपके पास 2 जीबी पता स्थान खाली हो सकता है, लेकिन इसकी कोई भी व्यक्तिगत श्रेणी 1 जीबी फ़ाइल मैपिंग में फिट नहीं हो सकती है। इस मामले में आपको फ़ाइल को छोटे हिस्से में मैप करना पड़ सकता है, जितना आप इसे फिट बनाना चाहते हैं।
mmapपढ़ने / लिखने के प्रतिस्थापन के रूप में एक और संभावित अजीबता यह है कि आपको पृष्ठ आकार के ऑफसेट पर अपनी मैपिंग शुरू करनी होगी। यदि आप ऑफसेट पर कुछ डेटा प्राप्त करना चाहते हैं, तो आपको Xउस ऑफसेट को ठीक करना होगा ताकि यह संगत हो mmap।
और अंत में, पढ़ना / लिखना एकमात्र तरीका है जिससे आप कुछ प्रकार की फ़ाइलों के साथ काम कर सकते हैं। पाइप और ट्टीmmap जैसी चीजों पर इस्तेमाल नहीं किया जा सकता है ।