14 Flashcards
(11 cards)
Správa paměti v OS
- Stará se o ni vždy operační systém, nelze ji svěřit programátorovi (bylo by to neefektivní a nebezpečné)
- Správa paměti se stará o to kolik paměti bude mít každý proces přístupné, kam v paměti proces umístit a když je procesů mnoho, tak který v paměti zůstane a který z ní bude vyřazen
- Aby proces mohl běžet musí mít přidělenou operační paměť (proces se musí do operační paměti dostat během svého cyklu aspon na chvíli)
- Vnitřní paměť uchovává data a programy právě běžících a připravených procesů (dlouhodobě se programy a data ukládají na vnější paměti)
- Když CPU pracuje s pamětí, tak pracuje se svými vnitřními registry, pokud něco potřebuje do registrů, tak pak nahlédne do Cache, pokud to tam není tak do operační paměti, pokud ani tam, tak jde do HDD/SSD. Když tedy chci spustit nějaký program, který je na HDD, tak se musí nejdřív načíst do operační paměti a pak do Cache a registrů CPU.
Strategie přidělování paměti
- First-fit = použije první dostatečné velkou díru v paměti (rychlé)
- Best-fit = najde díru, která nejvíce odpovídá velikostí, musí projet celý seznam dír v paměti
- Worst-fit = použije největší dírů, opět musí projít celý seznam, předpoklad je, že když zbylá díra bude dostatečné velká i pro další proces
Co je swapování
Swapování = celý blok adres procesu nebo jen jeho část se vymění s jiným, když je potřeba. Proces se dočasně uloží z paměti na disk
Co je stránkování
- Rozdělení adresního prostoru procesu nespojitě, LAP je rozdělen na části o stejné velikosti, tzv. stránky (4 kB), FAP je také rozdělen na části pevné velikosti, tzv. rámce, tedy kompletně to řeší externí fragmentaci, protože vkládám stránky do rámců o stejné velikosti, nejsou zde díry. Vnitřní fragmentace je minimalizována.
- Tabulka stránek pak obsahuje seznam umístění stránek v rámcích (je uložena v paměti)
- Stránka se skládá ze dvou částí: číslo stránky (index v tabulce stránek) a offset (posunutí v rámci stránky)
- Když chci přistoupit na nějaké určité místo v paměti, tak mi číslo stránky udává v jakém rámci to je a offset, je posun v rámci stránky (od začátku stránky, kde se přesně nachází to adresní místo)
- Je zde problém s dvojnásobným přístupem do paměti (musíme jít do paměti, aby jsme věděli kde se něco v paměti nachází), jde to urychlit vyrovnávací pamětí (TLB – Translation look-aside buffer), do které si budeme ukládat navštívené stránky, při opětovném navštívení stejné stránky (místa v paměti) je to pak rychlejší
- Druhý problém je s velikostí tabulky stránek, protože by mohla mít miliony záznamů, řeší se to hierarchickým víceúrovňovým stránkováním, kdy první tabulka stránek (stránkovací adresář) odkazuje na jednu z tisíců dalších tabulek stránek, která obsahuje pak číslo rámce.
Co je virtuální pamět
- Rozdělení adresního prostoru procesu nespojitě, LAP je rozdělen na části o stejné velikosti, tzv. stránky (4 kB), FAP je také rozdělen na části pevné velikosti, tzv. rámce, tedy kompletně to řeší externí fragmentaci, protože vkládám stránky do rámců o stejné velikosti, nejsou zde díry. Vnitřní fragmentace je minimalizována.
- Tabulka stránek pak obsahuje seznam umístění stránek v rámcích (je uložena v paměti)
- Stránka se skládá ze dvou částí: číslo stránky (index v tabulce stránek) a offset (posunutí v rámci stránky)
- Když chci přistoupit na nějaké určité místo v paměti, tak mi číslo stránky udává v jakém rámci to je a offset, je posun v rámci stránky (od začátku stránky, kde se přesně nachází to adresní místo)
- Je zde problém s dvojnásobným přístupem do paměti (musíme jít do paměti, aby jsme věděli kde se něco v paměti nachází), jde to urychlit vyrovnávací pamětí (TLB – Translation look-aside buffer), do které si budeme ukládat navštívené stránky, při opětovném navštívení stejné stránky (místa v paměti) je to pak rychlejší
- Druhý problém je s velikostí tabulky stránek, protože by mohla mít miliony záznamů, řeší se to hierarchickým víceúrovňovým stránkováním, kdy první tabulka stránek (stránkovací adresář) odkazuje na jednu z tisíců dalších tabulek stránek, která obsahuje pak číslo rámce.
K čemu slouží souborové systémy
- Organizují soubory a spravují přístup k datům, poskytují pojmenování pro soubory i složky, přes které se na ně potom odkazujeme (název souboru je vždy cesta od kořenového adresáře)
Rozdeleni MBR a GPT
Master Boot Record (MBR) = je to záznam o umístění všech sektorů na disku, nachází se na prvním sektoru disku, dovoluje disk max. 2TB a max. 4 oddíly, obsahuje spustitelný kód (první část zavaděče operačního systému)
GUID Partition Table (GPT) = stejný princip jako MBR, ale podporuje disky nad 2TB, až 128 oddílů, na konci disku se ukládá záložní kopie tabulky
metody přidělování a fragmentace
- Souvislé přidělování = soubor je uložen v sousedních datových blocích, jednoduchý zápis (číslo bloku a délka), plýtvá se místem, protože se musí nechat místo okolo pro zvětšení souboru a když by zasahoval do jiných dat, tak se musí přesunout
- Nesouvislé přidělování = preferujeme, aby bloky byly uloženy za sebou, ale když to nejde, tak se uloží dál, problémem je zde fragmentace souborů
- Vázané přidělování = každý datový blok obsahuje ukazatel na další datový blok v pořadí, pokud ztratíme jeden blok, tak se ztratí i vše za ním a mícháme data a metadata
- Tabulkové přidělování = odkazování na umístění dalšího datového bloku je v tabulce, není to uloženo jako součást datového bloku, výhodou je oddělení dat a metadat (FAT)
- Indexované přidělování = každý soubor má svůj indexový blok, který obsahuje ukazatele na datové bloky souboru,
je to rychlé, když jeden blok umře, tak se zbytek neztratí (NTFS, EXT)
FAT
FAT
- Jednoduchý systém navržen pro malé disky
- Využívá tabulkové přidělování (alokační tabulka a kořenová složka jsou vytvořeny fixně při formátování)
- FAT12 = 12 bitů pro adresaci (disk max. 16 MB)
- FAT16 = 16 bitů pro adresaci (disk max. 2 GB)
- FAT32 = 28 bitů pro adresaci (disk max. 2 TB)
- ExFAT = 64bit systém, ale pro adresaci jen 32 bitů (teoretická velikost disku až 128 PB)
- Struktura = | boot sektor | alokační tabulka | kořenový adresář | clustery (soubory a adresáře) |
- Boot sektor = obsahuje informace, které jsou používané souborovým systémem pro přístup k oddílům (1 cluster)
- Alokační tabulka = tabulka obsahuje stejný počet záznamů jako je clusterů na disku, základem je vždy název souboru a odkaz na místo v alokační tabulce, která nám dá sekvenci všech clusterů daného souboru a pak jdeme přímo na ty clustery v paměti už (slouží i k hledání volného místa)
- FFFF = konec souboru
- FFF7 = chybný cluster
- 0000 = volný cluster
- Kořenový adresář = obsahuje záznamy souborů a složek v tomto adresáři, kořenová složka je na fixním místě na disku, ostatní složky ne, každý záznam v kořenovém adresáři má 32 B (jméno, atributy, velikost souboru)
- Má krátké názvy souborů (8 znak . 3 znaky), pro delší názvy musí vytvořit více záznamů v alokační tabulce, každý záznam přidá 13 znaků navíc
- FAT32 = adresace 28 bitů, boot sektor je větší (32 clusterů), kořenový adresář není dán fixně
- ExFAT = adresace 32 bitů, názvy souborů v Unicode, obsahuje alikační bitmapu, která obsahuje info o tom, které clustery jsou volné a které ne, lepší výkon (0 neznamená, že je cluster volný, je nedefinovaný, protože alokační tabulka se nepoužívá pro vyhledávání volného místa, pro to je bitmapa), obsahuje také upCase tabulku, která obsahuje data pro převod malých a velkých písmen (ExFAT nerozlišuje malé a valké písmena)
NTFS
- Souborový systém Windowsu
- Je to 64bit souborový systém, limity jsou tedy extrémně velké (velikost oddílu 16 TB při 4 kB clusterech)
- Podporuje dlouhé názvy o až 255 znacích
- Má vestavěné funkce pro oprávnění souborů i uživatelů (základní read, write, execute a pokročilá oprávnění)
- Podporuje šifrování, kompresi, diskové kvóty (limitování místa disku na uživatele)
- Odkazové body = před otevřením souboru se provede nějaký kod (využito pro namontování oddílů do adresářů)
- Řídké soubory = umožňuje vytvářet obrovské soubory neobsahující žádná data
- Struktura = | boot sektor | Master file table | systémové soubory (metadata) | clustery |
- Boot sektor = obsahuje informace systému NTFS, např. umístění Master File Table (až 16 sektorů)
- Master File Table = obsahuje informace o všech souborech i těch systémových (systémové soubory mají kopii zhruba v polovině oddílu), může se zvětšovat a zapisovat se potom i do clusterů na disk
- Každý záznam MFT je velký 1 kB, pokud se vlezou do 1kB tak jsou rezidentní, pokud jsou větší a uloženy mimo MFT, tak se jim říká nerezidentní
- Systémové soubory (metadata) = 16 souborů, které se tvoří při formátovní disku, patří mezi ně i MFT, informace o oddílu, tabulka atributů, alokační bitmapa, nastavené diskové kvóty, upCase tabulka, transakční soubor
- Do transakčního souboru vždy ukládáme transakci, pokud systém spadne, tak můžeme opravit nekonzistentnost dat. Můžeme pak udělat REDO (zopakuje neuspesnou transakci) nebo UNDO (navrácení do stavu před transakcí)
ext2,3,4
ext2
- Všechno existuje v jedinné hierarchii počínaje kořenovým adresářem (klasický linuxový systém)
- Na začátku disku je alespon jeden superblok, který obsahuje všechny informace o souborovém systému,
počet i-uzlů, clusterů, alokační bitmapu, název oddílu atd. (kopie superbloku jsou ukládány na začátek cilindru 0,1 a mocniny 3, 5 a 7)
- Obsahuje alespon jednu tabulku, která obsahuje záznamy (i-uzly) o všech souborech, včetně jejich metadat
- Struktura = | boot sektor | superblok | cilindr 0 | cilindr 1 | …
- Každý cilindr má stejnou strukturu (kopie superbloku, informace o cilindru, bitmapa i-uzlů, bitmapa clusterů, i-uzly a clustery)
- Clustery se seskupují do skupin (cilindrů) aby se snížila fragmentace
- i-uzel = je to záznam, který udržuje informace o konkrétním souboru (obsahuje odkazy na datové bloky, kde je soubor uložen), jsou zde i oprávnění souboru, atributy (i-uzel jsou prakticky metadata souboru)
- Adresář = speciální případ souboru obsahující záznamy o souborech v něm (čísla i-uzlů)
ext3 = ext2 + žurnálování (uchovává informace o operacích a v případě výpadku se rychle vrátí do konzistentního stavu)
ext4 = zvýšení limitu souborového systému, neomezený počet podadresářů, podporuje šifrování, vylepšená časová razítka (předtím sekundy, ted nanosekundy)