mmap
aynı 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. mmap
tüm bu işlemlerin aynı fiziksel bellek sayfalarını paylaşmasını sağlayarak çok fazla bellek tasarrufu sağlar.
mmap
ayrıca işletim sisteminin disk belleği işlemlerini optimize etmesini sağlar. Örneğin, iki programı düşünün; Program A
, bir okur 1MB
ile oluşturan bir tampon içine dosya malloc
ve programı B olan mmaps
1 MB dosya belleğe. İşletim sisteminin A
belleğ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 B
durumda, değiştirilmemiş tüm mmap
sayfalar 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 ).
mmap
süreçler arası iletişim için de yararlıdır . mmap
Bir dosyayı iletişim kurması gereken süreçlerde okuma / yazma olarak yapabilir ve daha sonra mmap'd
bölgede senkronizasyon ilkellerini kullanabilirsiniz ( MAP_HASSEMAPHORE
bayrağın amacı budur).
Bir yerde mmap
garip 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.
mmap
Okuma / yazma yerine başka bir olası gariplik , eşlemenizi sayfa boyutunun ofsetlerinde başlatmanız gerektiğidir. Sadece ofsette bazı veriler almak X
istiyorsanı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 .