Principy a struktury správy souborů a správy paměti

Soubory

Soubor – základní organizační jednotka pro uchování dat na discích či jiných médiích

Souborový systém – Souborový systém je souhrn pravidel definujících chování a vlastnosti jednotlivých souborů, možnosti jejich další logické organizace (do adresářů) a následně konkrétní způsob uložení požadovaných dat spolu s dalšími potřebnými informacemi na fyzickém médiu. Príklady: FAT32, NTFS, ext4, …

Alokační blok – Alokační blok je nejmenší jednotka, s kterou souborový systém schopen pracovat. Velikost bloku bývá zespodu limitována použitým zařízením.

Adresář – základní organizační jednotka pro hierarchickou organizaci souborů. Na jednotlivé soubory se odkazujeme pomocí jejich názvu a názvu jim nadřazených adresářů. K oddělení jednotlivých názvů používá k tomu vymezený znak, nejčastěji lomítko (/) nebo zpětné lomítko (\).

Vlastnosti souboru mohou být:

Jméno (dříve 8 + 3 znaky, dnes už je to vesměs jedno)

Velikost (je vždy menší než skutečná velikost na médiu, protože nezahrnuje metadata a další položky)

Časové informace (datum vytvoření a poslední mofifikace souboru)

Identifikace vlastníka (a skupiny)

Oprávnění přístupu

Umístění (ve kterém je adresáři)

Metadata mohou být kromě výše uvedených informací (a nemusí to být aniu všechny, třeba FAT vlastníky a oprávnění vůbec nezná) ještě například žurnálovací logy a další ptákoviny co si filesystem vymyslí.

Unix navíc rozlišuje několik speciálních typů souborů:

Blokový soubor – data v něm jsou organizována po blocích a většinou jsou vybavena vyrovnávací pamětí. Data jsou nejčastěji čistě binární. Typicky jsou to pevné disky.

Znakový soubor – řeší čistě znaková zařízení, typicky nějaké terminály a sériové porty.

Socket – slouží pro síťovou komunikaci1) Ale protože je Unix síťový OS, není neobvyklé že socket komunikuje pouze v rámci localhosta.

Pojmenovaná roura – obdoba „pajpy“ | ale jako soubor do/z kterého mohou číst různé procesy.

Symlink – zástupce na jiný soubor. Ještě existuje tzv. hardlink, a to je pevný odkaz na soubor na stejné partišně.

Organizace dat na disku

Každý filesystem to dělá trochu jinak.

FAT

File Allocation Table

Fat tabulka je na začátku oddílu spolu s adresářem. Adresář má položky s metadaty o souborech a ukazatel na index ve FAT tabulce. Na té pozici je označený první blok souboru na oddílu a odkaz na další blok (pokud má soubor více bloků).

i-nodes

inode pointer structure

I-uzel obsahuje metadata (název souboru atd.), pár odkazů na alokační bloky a pár odkazů na struktury podobné i-uzlu, které ale neobsahují metadata. Takže se vytvoří stromová struktura (pro velké soubory). Hodně malé soubory mají přímo v i-nodu data, nikoli odkazy na bloky.

Oprávnění

Pokud si v Unixu zobrazíme výpis adresáře pomocí příkazu ls -l, dostaneme výpis i s detaily:

-rw-r--r-- 1 xkalab00 vti 9100 Jun 5 17:57 tcp_ip_komunikace.txt

Pokud si tyto detaily projdeme odzadu, obsahují:

Jméno souboru

Čas a datum poslední modifikace souboru

Velikost v bytech

Skupinu

Vlastníka

Počet odkazů na tento soubor (viz hardlinky)

Oprávnění

To oprávnění jsou tři trojice posloupnosti znaků rwx. (Ta pomlčka úplně na začátku pak představuje různé speciální typy souborů, jako jsou ty blokové, sockety a adresáře.) Trojice rwx pak symbolizuje práva pro čtení (Read), zápis (Write) a spouštění (eXecute). Jednotlivé trojice pak představují práva pro vlasníka, skupinu a všechny ostatní. U adresářů znamená právo pro spouštění otevření adresáře.

Existují ještě další oprávnění, jako sticky bit, setuid, setgid, a další. Vizte chmod a Filesystem permissions.

Na výše uvedeném příkladu uživatel xkalab00 může do souboru číst i psát, ale nemůže je spouštět2) Proč taky spouštět textový soubor? . Uživatelé ze skupiny vti mohou soubor pouze číst, a stejně tak všichni ostatní.

Práva a vlastníky lze měnit příkazy chmod a chown.

Paměť

az potom, behem session se to vazne nestihalo

Shrnutí

soubor, souborový systém, adresář

vlastnosti souboru (metadata)

oprávnění

organizace dat na disku: alokační blok, FAT, i-node

pamět: fyzická a logická

segmentovací přístup, externí fragmentace

stránkování, MMU, page fault (výpadek), tabulky stránek (jedno a víceúrovňové)

vědět:

pamět kernelu se nestránkuje

unixové speciální soubory