mmapaynı dosyadan salt okunur bir şekilde verilere erişen birden çok işleminiz varsa, bu da yazdığım sunucu sistemleri türünde yaygın olan bir işlemdir. mmaptüm bu işlemlerin aynı fiziksel bellek sayfalarını paylaşmasını sağlayarak çok fazla bellek tasarrufu sağlar.
mmapayrıca işletim sisteminin disk belleği işlemlerini optimize etmesini sağlar. Örneğin, iki programı düşünün; Program A, bir okur 1MBile oluşturan bir tampon içine dosya mallocve programı B olan mmaps1 MB dosya belleğe. İşletim sisteminin Abelleğinin bir kısmını değiştirmek zorunda kalması durumunda, belleği yeniden kullanabilmesi için değiştirilecek arabellek içeriğini yazması gerekir. Bu Bdurumda, değiştirilmemiş tüm mmapsayfalar derhal yeniden kullanılabilir çünkü işletim sistemi, bulundukları dosyadan nasıl geri yükleneceğini bilir mmap. (İşletim sistemi, yazılabilir mmap'd sayfalarını başlangıçta salt okunur olarak işaretleyerek ve Yazarken Kopyala stratejisine benzer şekilde segment hatalarını yakalayarak hangi sayfaların değiştirilmediğini algılayabilir ).
mmapsüreçler arası iletişim için de yararlıdır . mmapBir dosyayı iletişim kurması gereken süreçlerde okuma / yazma olarak yapabilir ve daha sonra mmap'dbölgede senkronizasyon ilkellerini kullanabilirsiniz ( MAP_HASSEMAPHOREbayrağın amacı budur).
Bir yerde mmapgarip olabilir bir 32 bit makinede çok büyük dosyalarla çalışmak gerekiyorsa. Bunun nedeni mmap, işleminizin adres alanında eşlenen dosyanın tüm aralığına sığacak kadar büyük bir bitişik adres bloğu bulması gerektiğidir. Adres alanınız parçalanırsa, 2 GB'lık adres alanınız boş olabilir, ancak tek bir aralığı 1 GB dosya eşlemesine sığamazsa bu sorun olabilir. Bu durumda, dosyayı sığdırmak istediğinizden daha küçük parçalar halinde eşlemeniz gerekebilir.
mmapOkuma / yazma yerine başka bir olası gariplik , eşlemenizi sayfa boyutunun ofsetlerinde başlatmanız gerektiğidir. Sadece ofsette bazı veriler almak Xistiyorsanız, bu ofseti ile uyumlu olması için düzeltmeniz gerekecektir mmap.
Ve son olarak, okuma / yazma yalnızca yoldur okumak yapabilirsiniz dosyaları bazı türleri ile çalışır. boru ve ttymmap gibi şeylerde kullanılamaz .