====== 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((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 ===
[[wp>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 ===
[[wp>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 ''[[man>ls|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í (**R**ead), zápis (**W**rite) a spouštění (e**X**ecute). 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 [[wp>chmod]] a [[wp>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ět((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 [[man>chmod]] a [[man>chown]].
===== Paměť =====
FIXME 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