Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Systemy operacyjne
Systemy operacyjnehard

Czym jest memory-mapped I/O (mmap) i kiedy go używać?

Tagi
#mmap#memory#io
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

mmap mapuje plik lub urządzenie do przestrzeni adresowej procesu, aby dostęp był jak do pamięci. Jest dobre dla dużych plików, losowego dostępu i zero-copy sharing.

Odpowiedź zaawansowana

Głębiej

mmap zamienia jawne I/O na mechanizmy pamięci wirtualnej:

  • OS ładuje strony na żądanie przez page fault.
  • Może zmniejszyć liczbę syscalli i kopiowania.
  • Przydatne do shared memory między procesami.
  • Wymaga ostrożności przy page faultach i wyrównaniu.

Przykłady

Losowy dostęp do dużego pliku:

mmap pliku -> arytmetyka wskaźników -> OS doładowuje strony

Typowe pułapki

  • Założenie, że mmap jest zawsze szybszy od read/write.
  • Brak obsługi SIGBUS przy skróconych plikach.
  • Zły wzorzec dostępu powodujący thrashing.

Pytania uzupełniające na rozmowie

  • Kiedy wybierzesz read/write zamiast mmap?
  • Jak mmap współgra z page cache?
  • Jakie są ryzyka przy równoległych zapisach?

Powiązane pytania

Systemy operacyjne
Czym są file descriptors i jak działa buforowanie I/O?
#file-descriptors#io#buffering
Java
Generacyjny GC: dlaczego JVM dzieli pamięć na young/old?
#java#gc#jvm
Struktury danych
Reprezentacja macierzy rzadkiej: kiedy użyć CSR/COO zamiast tablicy gęstej?
#sparse-matrix#csr#coo
Struktury danych
Co to jest Bloom filter i jaki robi trade-off?
#bloom-filter#probabilistic#hashing
Struktury danych
Bitset/bitmap: co to jest i kiedy to dobry wybór?
#bitset#bitmap#memory