Skip to content
10. File Functions
1

File Functions ​

05.03.2024
10. File Functions
2

Library Function Calls vs. System Function Calls ​

05.03.2024
10. File Functions
3

Zugriff aus Applikationen (via glibc) ​

  • Greiffen immer via Library Call auf das Syscall-Interface zu.
    • ... verbessert Portierbarkeit
  • Aufruf eines Systemcalls dauert wesentlich länger als ein Functioncall.
  • Führt zu einem Context-Switch (Wechsel aus dem User- in den Kernelspace)
05.03.2024
10. File Functions
4

Unbuffered File-IO ​

  • Auf Character Device findet im Kernel kein Buffering statt
  • Kein Page Cache / Kein Block IO
  • Bei Blockdevices sind Zugriffe via Page Cache / und BlockIO gebuffert
05.03.2024
10. File Functions
5

Unbuffered File System Calls ​

  • Wrapper Funktionen sind in der libc implementiert
  • open, read, write, lseek, ioctl, mmap, close
  • Info via man 2 <systemcall>
  • Weitere Calls für
    • Sockets
    • Prozesskontrolle
    • Speicherverwaltung
    • IPC
05.03.2024
10. File Functions
6

Buffered Calls ​

  • Wrapperfunction in <stdio.h> in C / C++ verfügbar
  • libc buffert System Calls
    • ... um weniger Context-Switches zu erreichen.
    • wünschenswert bei Zugriff auf Blockspeicher / viele kurze Transfers
    • unerwünscht bei Characterdevices mit Ziel kurze Latenzzeiten zu gewährleisten
  • fopen, fread, fwrite, fprintf, fclose, fputs, fflush
05.03.2024
10. File Functions
7

fflush ​

  • Erzwingt das leeren eines Buffers und blockiert
  • auch möglich mit fclose
05.03.2024