Interfejs systemu plików i strumieniowe wejście/wyjście #
Zakres wykładu #
- Koncepcja pliku. Struktury, atrybuty i podstawowe operacje na pliku.
- Otwieranie pliku. Sesja pliku. Blokada pliku.
- Tryby dostępu do pliku: sekwencyjny, bezpośredni (random access), indeksowy.
- Organizacja systemu plików: partycje, katalagi, formatowanie.
- Organizacja katalogów: cele i implementacje: jedno- i dwupoziomowa, drzewiasta, struktura grafu acyklicznego bądź dowolnego grafu.
- Montaż systemu plików.
- Współdzielenie dostępu do pliku: koncepcja, semantyka, ochrona.
Niskopoziomowe API POSIX:
- Otwieranie i zamykanie sesji plikowej:
open()
,close()
- Atrybuty plików w systemie UNIX i funkcje odpytywania:
stat(), lstat(),fstat()
- Funkcje odczytu/zapisu:
read(), write(), pread(), pwrite(), readv(), writev()
- Swobodny dostęp:
lseek()
- Duplikowanie deskryptorów:
dup(), dup2()
- Zmiany w tablicach deskryptorów, otwartych plików i i-węzłów związane z wywołaniem
open(), dup()/dup2(), fork()
- Związki pomiędzy strumieniami, a deskryptorami:
fdopen(), fileno()
- Synchronizacja deskryptorów:
fsync(), sync()
Standardowe API języka C:
- Strumienie a deskryptory dostępu do pliku.
- Buforowanie strumieni.
- Otwieranie/zamykanie strumieni. Wykrywanie/kasowanie znaczników końca danych (EOF) i błędów.
- Pozycjonowanie w strumieniu i operacje odczytu/zapisu.
- Katalogi POSIX: koncepcja, katalog bieżący i główny procesu.
- Strumień katalogu i operacje na nim.
Materiały #
- Podręcznik: rozdział 11 (Interfejs systemu plików).
- Prezentacja wykładowa (PDF)
- Programy wykładowe
- The GNU C library documentation: Input/output concepts
- The GNU C library documentation: Low-Level Input/Output (13.1-13.5,13.8)
- Fragmenty standardu “POSIX IEEE Std 1003.1 2017” - definicje pojęć związanych z procesami
- Stare slajdy: FS_interfejs.pdf, IO_1.pdf IO_2.pdf