OSFile
system plików na bazie Unixa
Cele
Dostarczenie API dostępnego z poziomu
systemu operacyjnego dającego możliwość
zarządzania wirtualnym systemem plików.
Założenia
● Cała struktura będzie znajdowała się w
jednym pliku
● API będzie zbliżone do unixowego
● Dane będą przechowywane w drzewiastej
strukturze
● Pozwoli na przechowywanie danych i
metadanych plików
API - w systemie UNIX
fd = open(path, oflag, mode);
liczba = read(fd, buf, count);
API w OSFile
fd = osf_open(path, mode);
liczba = osf_read(fd, buf, count);
osf_write(fd, buf, count);
/* prefix “osf_” */
/* brak określonego trybu pracy i blokad */
API - w systemie UNIX
dirp = opendir(const char *filename);
direntp = readdir(dirp);
rewinddir(dirp);
closedir();
API w OSFile
dirp = osf_opendir(const char *filename);
direntp = osf_readdir(dirp);
osf_closedir();
OSFile API - Inne
osf_chown( dirp, int id );
int osf_chown(dirp);
osf_chmod( dirp, int id );
int osf_chmod(dirp);
Struktura drzewa katalogów
Hard Links
V-node
Rozmieszczenie danych (dinode)
i-nodes
dinodes
Wiele systemów plików (unix)
Dysk
Co będzie wspierane
Implementuje

Nie implementuje

Rozmiar znaków ma znaczenie.

Brak vfs (virtual file system)

Drzewiasta struktura

Brak twardych dowiązań (ang hard links)

Uprawnienia rwx, przydział do grupy i
użytkownika (uid & gid)

Brak blokad plików

Opóźniony zapis (NV RAM)

Brak trigerów

Uproszczona struktura vnode, in-core
inode & on-disc inode
https://github.com/SebastianPozoga/OSFile
Biblografia
“Jądro systemu UNIX” - Vahalia - Nowe
horyzonty

OSFile