====== 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