GNU/Linux >> Znalost Linux >  >> Linux

Správa paměti Linux – virtuální paměť a stránkování poptávky

Správa paměti je jednou z nejsložitějších činností, kterou provádí linuxové jádro. Jsou s ním spojeny různé pojmy/problémy.

Tento článek je součástí naší aktuální série přehledů UNIXových jader.

V předchozím článku série o jádrech jsme diskutovali o přehledu procesů UNIX ao jádrech Reentrant.

V tomto článku se pokusíme dotknout základu virtuální paměti a stránkování poptávky, protože to jsou některé z důležitých konceptů souvisejících se správou paměti.

Virtuální paměť

Koncept virtuální paměti je jedním z velmi účinných aspektů správy paměti. Od počáteční éry počítačů byla pociťována potřeba paměti více než existující fyzické paměti. V průběhu let bylo k překonání tohoto problému použito mnoho řešení a nejúspěšnějším z nich byl koncept virtuální paměti.

Virtuální paměť způsobí, že váš systém bude vypadat, jako by měl více paměti, než ve skutečnosti má. To může znít zajímavě a může člověka nabádat k tomu, jak je to možné. Pojďme tedy pochopit koncept.

  • Abychom mohli začít, musíme nejprve pochopit, že virtuální paměť je vrstva paměťových adres, které se mapují na fyzické adresy.
  • V modelu virtuální paměti, když procesor vykoná instrukci programu, načte instrukci z virtuální paměti a provede ji.
  • Před provedením instrukce nejprve převede adresu virtuální paměti na fyzickou adresu.
  • Tento převod se provádí na základě mapování virtuálních adres na fyzické, které se provádí na základě informací o mapování obsažených v tabulkách stránek (které spravuje operační systém).

Virtuální a fyzická paměť je rozdělena na části s pevnou délkou známé jako stránky. V tomto stránkovaném modelu lze virtuální adresu rozdělit na dvě části:

  • Posun (nejnižší 12 bitů)
  • Číslo rámce virtuální stránky (zbytek bitů)

Kdykoli procesor narazí na virtuální adresu, extrahuje z ní číslo rámce virtuální stránky. Poté převede toto číslo virtuálního rámce stránky na číslo fyzického rámce stránky a offsetové části mu pomohou přejít na přesnou adresu na fyzické stránce. Tento překlad adres se provádí prostřednictvím tabulek stránek.

Teoreticky můžeme považovat tabulku stránek za obsahující následující informace:

  • Příznak, který popisuje, zda je záznam platný či nikoli
  • Číslo fyzického rámce stránky popsané v tomto záznamu
  • Přístup k informacím o stránce (jako je pouze pro čtení, čtení a zápis atd.)

K tabulce stránek se přistupuje přes číslo virtuálního rámce stránky, které se používá jako offset pro záznamy v tabulce stránek. Například číslo virtuálního rámce stránky „2“ ukazuje na položku „1“ v tabulce stránek (čísla položek začínají „0“).

Na obrázku níže VPFN znamená číslo virtuálního rámce stránky a PFN označuje číslo fyzického rámce stránky.

Může se stát, že procesor přejde na záznam tabulky stránek procesů s číslem rámce virtuální stránky a najde záznam jako neplatný. V tomto případě je odpovědností procesoru předat řízení jádru a požádat ho o vyřešení problému. Různé procesory předávají řízení různými způsoby, ale tento jev je známý jako „chyba stránky“. Ale pokud byl záznam platný, procesor vezme číslo fyzického rámce stránky, vynásobí se velikostí stránky, aby získal základní adresu fyzické stránky, a pak přidá offset, aby se dostal k přesné fyzické adrese.

Nyní tedy chápeme, že prostřednictvím konceptu virtuální paměti si každý proces myslí, že má k dispozici celý rozsah virtuálních adres, a proto tento koncept způsobuje, že systém vypadá, jako by měl více fyzické paměti, než je ve skutečnosti k dispozici.

Stránkování na vyžádání

V předchozí části jsme se dozvěděli, že pokud procesor přejde do tabulky stránek procesů s číslem virtuálního rámce stránky, pro které v tabulce nebyla žádná položka, nastanou dva případy.

  1. Buď se proces pokusil o přístup k neplatné adrese paměti
  2. Fyzická stránka odpovídající virtuální adrese nebyla načtena do fyzické paměti

Ze dvou výše uvedených případů je případ 1 případ, kdy se proces pokouší adresovat paměť, což není povoleno. V tomto případě je vygenerována chyba stránky a jádro proces ukončí.

Zatímco v případě „2“, jak již bylo vysvětleno, fyzická stránka odpovídající virtuální adrese ještě není načtena do fyzické paměti. V tomto případě se také vygeneruje chyba stránky a jádro se poté pokusí přenést požadovanou paměťovou stránku do fyzické paměti z pevného disku.

Protože tato operace přenesení stránky z pevného disku do fyzické paměti je časově náročná, v této době dojde k přepnutí kontextu mezi procesy a spustí se nějaký jiný proces. Mezitím je stránka předchozího procesu přenesena do fyzické paměti a tabulky stránek jsou aktualizovány a poté je tento proces znovu uveden do provádění ze stejné instrukce, která způsobila „chybu stránky“.

Toto je známé jako stránkování poptávky, kdy všechny paměťové stránky odpovídající procesu nejsou v daném okamžiku přítomny ve fyzické paměti. To šetří fyzickou paměť před zanášením nevyžadovanými paměťovými stránkami, zatímco v případě potřeby lze tyto stránky přenést do fyzické paměti pomocí  chyby stránky (jak je vysvětleno výše).


Linux
  1. Jak odstranit vyrovnávací paměti a mezipaměť v Linuxu

  2. Monitorování a správa paměti

  3. Správa paměti Linuxu – odkládání, mezipaměti a sdílené virtuální počítače

  1. 5 bezplatný a otevřený software pro správu školy pro Linux

  2. Je možné alokovat velké množství virtuální paměti v linuxu?

  3. Jak nakonfigurovat swappiness v Linux Memory Management?

  1. Využití paměti Linuxu

  2. Linuxová neaktivní paměť

  3. Ubuntu Linux:Proces swap paměti a využití paměti