Operační systémy pro mobilní zařízení (OSMZ)

Týden V. (8.3.-12.3.2021)

Správa paměti je obvykle rozdělena do tří úrovní - úrovně technického vybavení, operačního systému a aplikací. Technickou úroveň v tomto předmětu neřešíme a zaměříme se tak jen na zbylé dvě. Na úrovni operačního systému musí být paměť přidělována uživatelským programům a není-li dále programem vyžadována, pak je znovu použita pro jiné programy. Operační systém může předstírat, že má počítač mnohem více paměti než odpovídá skutečnosti, případně že každý program má celou dostupnou paměť pouze pro svou potřebu - tyto situace řeší systém virtuální paměti. Na úrovni aplikačních programů pak zahrnuje správa paměti přidělování úseků omezené dostupné paměti pro objekty a datové struktury programu a obvykle i opakované použití paměti, která již není obsazena.

Než přejdeme k virtuální paměti, popišme si nejdříve jednoduché stránkování. Pojem stránky (pages) odpovídá malým úsekům paměti stejných velikostí na které je rozdělen každý program. Operační paměť je také rozdělena na malé úseky stejné velikosti nazývané rámce (frames). Typická velikost rámce je 4 kB. Velikost rámce a stránky musí být stejná. Operační systém nahrává při spuštění kompletní program do volných rámců operační paměti, zároveň si musí pamatovat, které rámce přidělil jednotlivým procesům (např. pomocí tabulek stránek) a také evidovat volné rámce v paměti. Virtuální paměť je pak většinou tvořena kombinací stránkování a odkládání na disk (ve fyzické paměti se drží pouze aktuálně používané rámce, přičemž zbytek procesu je na disku).

Překlad virtuálních adres na fyzické adresy provádí jednotka MMU (Memory Management Unit). Ta se také stará o ochranu paměti, kontrolu koherence cache pamětí a řízení paměťové sběrnice. Pokud se stane, že virtuální stránka není mapována do fyzické paměti, MMU zjistí výpadek stránky (page fault) a požádá operační systém o nahrání příslušné stránky do fyzické paměti. Systém pak rozhodne, který rámec fyzické paměti již není potřeba, může ho uvolnit a poté do něj nahraje obsah požadované virtuální stránky z disku. Klíčovým přínosem MMU je ochrana paměti: jádro operačního systému může použít MMU k ochraně proti chybám v programech, když detekuje (či znemožní) přístup do paměti, která danému procesu nepatří. Výhodou použití MMU je také eliminace problému s fragmentovanou pamětí. Souvislý blok virtuálních adres může totiž být namapován na více bloků fyzické paměti, které nemusí být uloženy vcelku.

Pokud by tabulka stránek obsahovala záznamy pro celý virtuální prostor, byla by extrémně velká. Jen u 32-bitového virtuální adresního prostoru by měla při velikosti stránek 4 kB jeden milión záznamů. Každý proces navíc potřebuje svou vlastní tabulku stránek (každý proces má svůj vlastní adresní prostor). Řešením je efektivně organizovat tabulky stránek do více úrovni a zároveň evidovat jen ty položky v tabulce stránek, které jsou reálně využívána. Pro rychlý překlad se využívá i speciální hardwarová cache v procesoru - Translation Lookaside Buffer (TLB). TLB se snaží udržovat záznamy o těch mapování, která byla nedávno použita a u kterých je (tedy) předpoklad použití v bezprostřední budoucnosti. Implementaci správy paměti a víceúrovňové tabulky naleznete v Linuxu v /mm/memory.c Pro doplnění si můžete přečíst podrobnější vysvětlení stránkování v Linuxu

PREZENTACE

LITERATURA

Andrew S. Tanenbaum - Moderní operační systémy. 4. vydání:

  • Kapitola 3 Memory Management (str. 185 – 221)
  • Sekce 3.5.3 Page Size (str. 225 – 227 )
  • Sekce 3.6.2 Page Fault Handling (str. 234 – 235)
  • Sekce 3.7 Segmentation (str. 240 – 247)

BONUS MATERIÁLY

Ukázka funkce TLB (video EN)
Organizace paměti v C (video EN)
Vlastnosti TLB a měření rychlosti nalezení shody stojí za útoky Meltdown a Spectre.
Správa paměti z pohledu programovacích jazyků.

OTÁZKY

Po přečtení výše uvedených textů byste měli být schopni odpovědět na další otázky z okruhů ke zkoušce, konkrétně:

  • Stručně charakterizujte funkci MMU – překlad adres, vysvětlete pojmy fyzická a virtuální adresa.
  • Stručně popište schéma řízení paměti u jednoprocesového programování (monoprogramming) bez odkládání a stránkování.
  • Stručně popište schéma řízení paměti u víceprocesového programování s pevnými oddíly (fixedpartition).
  • Vysvětlete pojem realocation (přemístění).
  • Popište správu paměti bitmapami a propojenými seznamy (linked-lists).
  • Stručně vysvětlete pojem stránkování (princip virtuální paměti)