Appearance
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)
10.05.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
10.05.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
10.05.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
10.05.2024
10. File Functions
7
fflush
- Erzwingt das leeren eines Buffers und blockiert
- auch möglich mit
fclose
10.05.2024