EMZETT.
Giriş yap

mmap: dosyaları belleğe eşlemek

Kısaca: mmap ile işletim sistemi bir dosyayı programın adres uzayına eşler; böylece dosya, bellekteki bir dizi gibi okunur ve yazılır.

Biraz daha ayrıntılı: Program artık read çağrıları yapmaz. Bir sayfaya ilk erişimde bir sayfa hatası diskten yüklemeyi tetikler.

Ayrıntılı

  • Çağrı: mmap(NULL, uzunluk, PROT_READ, MAP_SHARED, fd, 0) bir işaretçi döndürür. Python’da: mmap.mmap(...).
  • Avantajlar: Çekirdek ve program belleği arasında kopya yok, rahat rastgele erişim, birden çok süreç aynı sayfaları paylaşır (paylaşılan bellek).
  • Anonim mmap: Dosyasız; bellek ayırıcılar (büyük bloklar için malloc) belleği böyle ister.
  • Tuzaklar: Kısaltılmış bir dosyaya erişim sinyallere (SIGBUS) yol açar. Çok sayıda küçük dosyada veya ardışık okumada normal okuma çoğu zaman aynı hızdadır.
  • Kullanım: Veritabanları (LMDB, eskiden MongoDB), çalıştırılabilir dosyalar ve kütüphaneler zaten mmap ile yüklenir, YZ’de büyük model dosyaları.
  • Sayfa önbelleği: Veriler çekirdeğin sayfa önbelleğinde durur ve bellek darlığında tahliye edilir.

Ayrıca bak: Copy-on-write