logo

Správa paměti v operačním systému (OS)

V tomto článku podrobně porozumíme správě paměti.

Co myslíš tou správou paměti?

Paměť je důležitou součástí počítače, která se používá k ukládání dat. Jeho správa je pro počítačový systém kritická, protože velikost hlavní paměti dostupné v počítačovém systému je velmi omezená. V každém okamžiku o něj soutěží mnoho procesů. Pro zvýšení výkonu se navíc provádí několik procesů současně. K tomu musíme mít několik procesů v hlavní paměti, takže je ještě důležitější je efektivně řídit.

Správa paměti

Role správy paměti

Níže jsou uvedeny důležité role správy paměti v počítačovém systému:

  • Správce paměti slouží ke sledování stavu paměťových míst, zda je volná nebo přidělená. Primární paměť řeší poskytováním abstrakcí, takže software vnímá, že je mu přidělena velká paměť.
  • Správce paměti umožňuje počítačům s malým množstvím hlavní paměti spouštět programy větší, než je velikost nebo množství dostupné paměti. Dělá to přesouváním informací tam a zpět mezi primární pamětí a sekundární pamětí pomocí konceptu swapování.
  • Správce paměti je zodpovědný za ochranu paměti přidělené každému procesu před poškozením jiným procesem. Pokud to není zajištěno, může systém vykazovat nepředvídatelné chování.
  • Správci paměti by měli umožnit sdílení paměťového prostoru mezi procesy. Dva programy tak mohou být umístěny na stejném místě paměti, i když v různých časech.

Techniky správy paměti:

Techniky správy paměti lze rozdělit do následujících hlavních kategorií:

  • Schémata správy souvislé paměti
  • Nespojitá schémata správy paměti
Správa paměti

Schémata správy souvislé paměti:

Ve schématu správy souvislé paměti každý program zaujímá jeden souvislý blok paměťových míst, tj. sadu paměťových míst s po sobě jdoucími adresami.

Jednotlivá souvislá schémata správy paměti:

Schéma jednoduché správy souvislé paměti je nejjednodušší schéma správy paměti používané v nejranější generaci počítačových systémů. V tomto schématu je hlavní paměť rozdělena na dvě souvislé oblasti nebo oddíly. Operační systémy jsou trvale umístěny v jednom oddílu, obvykle v nižší paměti, a uživatelský proces je načten do druhého oddílu.

Výhody schémat správy jedné souvislé paměti:

  • Jednoduchá implementace.
  • Snadná správa a design.
  • V jednoduchém schématu správy souvislé paměti, jakmile je proces načten, je mu přidělen celý čas procesoru a žádný jiný procesor jej nepřeruší.

Nevýhody jednotlivých schémat správy souvislé paměti:

  • Plýtvání paměťovým prostorem kvůli nevyužité paměti, protože proces pravděpodobně nevyužije veškerý dostupný paměťový prostor.
  • CPU zůstává nečinný a čeká, až disk nahraje binární obraz do hlavní paměti.
  • Nelze jej spustit, pokud je program příliš velký a nevejde se na celý dostupný prostor hlavní paměti.
  • Nepodporuje multiprogramování, to znamená, že nedokáže zpracovat více programů současně.

Vícenásobné rozdělení:

Jednotné schéma správy paměti Contiguous je neefektivní, protože omezuje počítače na provádění pouze jednoho programu najednou, což vede k plýtvání paměťovým prostorem a časem CPU. Problém neefektivního využití CPU lze překonat pomocí multiprogramování, které umožňuje souběžný běh více než jednoho programu. K přepínání mezi dvěma procesy musí operační systémy načíst oba procesy do hlavní paměti. Operační systém potřebuje rozdělit dostupnou hlavní paměť na více částí, aby do hlavní paměti nahrál více procesů. V hlavní paměti tak může být současně umístěno více procesů.

Vícenásobná schémata rozdělení mohou být dvou typů:

  • Pevné rozdělení
  • Dynamické dělení

Pevné rozdělení

Hlavní paměť je rozdělena do několika oddílů s pevnou velikostí podle schématu správy paměti s pevným oddílem nebo statického dělení. Tyto oddíly mohou mít stejnou velikost nebo různé velikosti. Každý oddíl může obsahovat jeden proces. Počet oddílů určuje stupeň multiprogramování, tj. maximální počet procesů v paměti. Tyto oddíly jsou vytvořeny v době generování systému a poté zůstávají pevné.

Výhody schémat správy paměti s pevným rozdělením:

  • Jednoduchá implementace.
  • Snadná správa a design.

Nevýhody schémat správy paměti s pevným rozdělením:

  • Toto schéma trpí vnitřní roztříštěností.
  • Počet oddílů je zadán v době generování systému.

Dynamické dělení

Dynamické dělení bylo navrženo tak, aby překonalo problémy s pevným rozdělovacím schématem. Ve schématu dynamického dělení každý proces zabírá pouze tolik paměti, kolik potřebuje, když je načten pro zpracování. Požadovaným procesům je přidělována paměť, dokud není vyčerpána celá fyzická paměť nebo dokud zbývající prostor nestačí k uložení žádajícího procesu. V tomto schématu mají použité oddíly proměnnou velikost a počet oddílů není definován v době generování systému.

Výhody schémat správy paměti dynamického dělení:

  • Jednoduchá implementace.
  • Snadná správa a design.

Nevýhody schémat správy paměti dynamického dělení:

  • Toto schéma také trpí vnitřní fragmentací.
  • Počet oddílů je specifikován v době segmentace systému.

Nespojitá schémata správy paměti:

V nesouvislém schématu správy paměti je program rozdělen do různých bloků a načten do různých částí paměti, které nemusí nutně sousedit. Toto schéma lze klasifikovat v závislosti na velikosti bloků a na tom, zda jsou bloky umístěny v hlavní paměti nebo ne.

Co je stránkování?

Stránkování je technika, která eliminuje požadavky na souvislé přidělování hlavní paměti. V tomto je hlavní paměť rozdělena na bloky fyzické paměti s pevnou velikostí nazývané rámce. Velikost rámce by měla být stejná jako velikost stránky, aby se maximalizovala hlavní paměť a zabránilo se vnější fragmentaci.

Výhody stránkování:

  • Stránky snižují vnější fragmentaci.
  • Jednoduchá implementace.
  • Paměťově efektivní.
  • Díky stejné velikosti rámečků je výměna velmi snadná.
  • Slouží pro rychlejší přístup k datům.

Co je segmentace?

Segmentace je technika, která eliminuje požadavky na souvislé přidělování hlavní paměti. V tomto je hlavní paměť rozdělena na bloky fyzické paměti s proměnnou velikostí, které se nazývají segmenty. Je založen na způsobu, jakým programátor postupuje při strukturování svých programů. Se segmentovanou alokací paměti je každá úloha rozdělena do několika segmentů různých velikostí, jeden pro každý modul. Funkce, podprogramy, zásobník, pole atd. jsou příklady takových modulů.