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 operacyjnemedium

Czym są file descriptors i jak działa buforowanie I/O?

Tagi
#file-descriptors#io#buffering
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

File descriptor to numeryczny uchwyt do otwartego pliku lub socketu. Buforowanie grupuje I/O w pamięci, zmniejsza liczbę syscalli i poprawia throughput kosztem opóźnionych zapisów.

Odpowiedź zaawansowana

Głębiej

Deskryptory to referencje zarządzane przez OS:

  • Każdy proces ma tablicę deskryptorów.
  • Deskryptory wskazują obiekty kernela (pliki, sockety, pipe’y).
  • Buforowanie zmniejsza narzut syscalli i umożliwia readahead.
  • fsync/flush wymusza trwałość, gdy to ważne.

Przykłady

Buforowany zapis:

write() -> bufor user -> bufor kernel -> dysk później
fsync() -> wymuszenie zapisu na dysk

Typowe pułapki

  • Niezamykanie deskryptorów (leaks).
  • Zakładanie, że buforowany zapis jest trwały.
  • Mieszanie buforowanego i niebuforowanego I/O.

Pytania uzupełniające na rozmowie

  • Co to jest partial write?
  • Jak pipe’y używają deskryptorów?
  • Kiedy potrzebujesz fsync lub O_DIRECT?

Powiązane pytania

Systemy operacyjne
Czym jest memory-mapped I/O (mmap) i kiedy go używać?
#mmap#memory#io
Java
Co to jest try-with-resources i czemu warto go używać?
#try-with-resources#autocloseable#io