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 komunikaci
1)
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.
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). 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