GNU/Linux >> Znalost Linux >  >> Linux

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

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

V předchozím článku série kernel jsme diskutovali o virtuální paměti Linuxu a stránkování poptávky.

Přestože virtuální paměť a stránkování poptávky jsou stavebními kameny linuxového systému správy paměti, existují různé další koncepty, díky kterým je správa paměti Linuxu velmi výkonná.

V tomto článku se pokusíme dotknout základu některých z těchto konceptů (Swapping, Caching a Shared virtual memory).

I. Výměna Linuxu

Předpokládejme, že nastane situace, kdy proces potřebuje mít jednu ze svých virtuálních stránek ve fyzické paměti, ale fyzická paměť nemá místo pro vložení dalších stránek.

Co se stane v tomto případě?

No, OS bude muset tuto situaci zvládnout tím, že umožní této stránce být ve fyzické paměti. Ale aby k tomu došlo, musí být stránka, která se již nachází ve fyzické paměti, zahozena.

Nyní, pokud stránka, která má být zahozena, pochází ze spustitelného obrázku nebo datového souboru a stránka nebyla zapsána, pak ji lze snadno zahodit, kdykoli je třeba, stejnou stránku lze snadno vrátit do fyzické paměti ze stejného spustitelného souboru. obrázek nebo datový soubor.

Předpokládejme však, že stránka, kterou OS zahodí, je ta, na kterou bylo zapsáno, pak je tento druh stránky známý jako špinavá stránka.

Špinavá stránka musí být zachována, aby mohla být použita v pozdější fázi. Když jsou špinavé stránky vyřazeny z fyzické paměti, jsou uloženy do speciálního souboru známého jako odkládací soubory. Toto je známé jako swapování .

Doba potřebná k přístupu na swapovací stránku je poměrně značná ve srovnání s rychlostí procesoru.

Vidíme tedy, že OS by měl mít dobrý swapovací algoritmus, aby mohl rozhodnout o vyřazení vs swapování. Neefektivní swapovací algoritmus může vést k jevu, kdy je operační systém tak zaneprázdněn přehazováním souborů a opětovným čtením zpět do fyzické paměti, že ve skutečnosti věnuje mnohem méně času skutečné práci, kterou procesy vyžadují. Tento jev je známý jako thrashing .

Sada stránek, které proces nepřetržitě používá, se také nazývá pracovní sada . Dobrý swapovací algoritmus by jen málokdy umožnil OS dostat se do thrashování a také by zajistil, že pracovní sada všech procesů bude vždy ve fyzické paměti.

Linux rozhoduje o tom, které stránky mají být zachovány v paměti a které stránky mají být odstraněny pomocí schématu „Nejméně používané ‘.

V tomto schématu má každá stránka ve fyzické paměti přiřazený věk. Věk se mění s tím, zda je stránka navštěvována nebo ne. Pokud je stránka navštěvována často, pak se předpokládá, že stránka je poměrně mladá, zatímco pokud stránka není navštěvována, stránka bude starší. Starší stránky jsou nabízeny k výměně/vyřazení z fyzické paměti.

II. Mezipaměti

Aby bylo možné ze systému vytěžit maximum, vyvíjejí se rychlé procesory a operační systémy. I když je to dobré, jedním aspektem, který zrychluje procesor, operační systém a jejich interakci, je koncept mezipaměti.

Některé z důležitých mezipamětí v Linuxu jsou popsány níže.

1. Linux Swap Cache

Jak již bylo uvedeno výše, vymění se pouze špinavé stránky, protože potřebujeme zachovat stránky, které byly upraveny. Předpokládejme také, že pokud byla stránka upravena a byla zaměněna, nyní, pokud byla stejná stránka přenesena zpět do fyzické paměti a nyní je potřeba ji znovu zaměnit, ale stránka již nebyla dále upravována, není třeba ji zaměňovat strana. Jednoduše ji zlikvidujte, protože tato verze stránky již existuje ve swapovacím souboru. To ušetří značné množství času, který by jinak byl promarněn.

Nyní k implementaci výše uvedeného konceptu Linux využívá swap cache.

  • Výměnná mezipaměť není nic jiného než seznam záznamů tabulky stránek s jedním záznamem na fyzickou stránku.
  • Každá položka odpovídá odložené stránce spolu s informacemi o odkládacím souboru, ve kterém je stránka uložena, spolu s jejím přesným umístěním v odkládacím souboru.
  • Pokud je některá položka tabulky stránek ve swap cache nenulová, představuje stránku, která je uložena ve swapovacím souboru a tato stránka nebyla dále upravována.
  • Pokud má stránka svůj záznam ve swap cache a je dále upravena, je její záznam z odkládací mezipaměti odstraněn.
  • Tímto způsobem obsahuje mezipaměť informace pouze o těch stránkách, které se od poslední výměny nezměnily.

Vidíme tedy, že swap cache hodně pomáhá při zvyšování efektivity swapovacího mechanismu.

2. Hardwarová mezipaměť

Jak jsme již probrali v předchozím článku, procesor čte záznamy tabulky stránek, aby převedl virtuální adresu na fyzickou adresu. Procesor obvykle ukládá informace o položkách tabulky stránek do hardwarové mezipaměti .

Tato hardwarová mezipaměť se skládá z translačních vyrovnávací pamětí nebo TLB s.

Kdykoli procesor potřebuje přeložit virtuální adresu, pokusí se získat informace o záznamu tabulky stránek z TLB. Pokud záznam najde, pokračuje dále, ale pokud procesor není schopen žádný takový záznam najít, sdělí OS, že došlo k chybě TLB, a požádá OS, aby věci napravil.

K doručení této informace o chybě TLB do OS se používá nějaký mechanismus výjimek, který je závislý na procesoru. Nyní operační systém najde správnou položku a aktualizuje ji pomocí položky TLB. Když je výjimka vymazána (poté, co OS problém opraví), procesor se znovu pokusí vyhledat záznam v TLB a tentokrát najde platný záznam.

3. Linux Buffer Cache

Vyrovnávací paměť obsahuje datové vyrovnávací paměti, které používají ovladače blokových zařízení.

Ovladač blokového zařízení je ovladač, který pracuje s blokem dat, tj. lze k němu přistupovat čtením nebo zápisem pevných bloků nebo bloků dat. Vyrovnávací mezipaměť je indexována. Identifikátor zařízení se používá pro účely indexování.

mezipaměť dělá čtení/zápis velmi efektivní a rychlé. Uvažujme například blokové zařízení, například pevný disk. Čtení/zápis na pevný disk vyžaduje souborový I/O, což je poměrně drahé, pokud to děláme na pevném disku pokaždé, když se provádí čtení nebo zápis. Tato mezipaměť, která je umístěna mezi nimi, šetří čas při čtení a zápisu a o zbytek se stará mezipaměť.

Chcete-li zobrazit swap, paměť, stránku, blokové IO, pasti, disky a aktivitu procesoru, můžete použít nástroje jako vmstat nebo sar.

III. Sdílená virtuální paměť

Když je kód napsán, vývojáři věnují velkou péči tomu, aby se žádný kus kódu zbytečně neopakoval. Například funkce se používají v programech, takže stejný kus kódu lze kdykoli volat z kódu.

Skupina funkcí, které lze běžně používat, je začleněna do knihoven. V tom přichází koncept sdílené paměti, která je jednou načtena do paměti a může být používána více procesy.

Virtuální paměť usnadňuje procesům sdílení paměti, protože fyzické adresy jsou mapovány prostřednictvím tabulek stránek a je velmi pravděpodobné, že stejné číslo fyzického rámce stránky by mohlo být mapováno v tabulce stránek více procesů. Tento koncept je známý jako sdílená virtuální paměť .


Linux
  1. Příklady příkazů ipcs v Linuxu

  2. Jak používat sdílenou paměť s Linuxem v C

  3. Sdílená paměť Linuxu:shmget() vs mmap()?

  1. Jak nakonfigurovat swappiness v Linux Memory Management?

  2. Linuxová neaktivní paměť

  3. Provádí Linux oportunní swapování, nebo je to mýtus?

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

  2. Windows – sdílená složka mezi hostem Qemu Windows a hostitelem Linuxu?

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