Virtuální paměť v CPU, implementace a provoz v x86

virtuální paměť je jedním z nejdůležitějších prvků současného počítače, bez jeho podpory bychom na našich počítačích nemohli provozovat složité multitaskingové operační systémy. Poskytneme vám rychlý přehled o tom, co je virtuální paměť a jaké jsou její funkce ve vašich počítačích

Každý procesor, bez ohledu na jeho architekturu, má obecně dva typy pinů pro komunikaci se systémem RAM Paměť.

Virtuální paměť v CPU

  • Datové piny, odkud jsou data přenášena do az paměti.
  • Adresování pinů, kde je paměť označena, kde jsou data.

Co ale naznačuje adresování? Paměť RAM je fyzicky uspořádána v tabulce a když přistupujeme přímo ke konkrétním datům, je třeba označit, ve kterém řádku a sloupci se nachází, pokud je například naše adresování 6 bitů, může mít paměť 64 prvků (2 6 ) z toho asi 3 bity mi řeknou řádek a další 3 bity mi řeknou sloupec, kde jsou data umístěna.

Užitečnost a definice virtuální paměti

MemoriaVirtuální

Virtuální adresování nefunguje přímým odkazováním na adresy paměti, ale místo toho používá virtuální adresy, které jsou organizovány stránkami paměti.

První 8 a 16bitové procesory, které se objevily na domácím trhu, podporovaly pouze fyzické adresování, v té době to nebyl problém, protože tyto systémy provozovaly pouze jednu aplikaci současně, ale postupem času a jak vyšly výkonnější osobní počítače . bylo nutné integrovat sofistikovanější způsoby zacházení s přístupem do paměti RAM za předpokladu, že prostředí s několika spuštěnými aplikacemi nemělo při práci problémy, a proto jedna aplikace nepřistupovala k paměťovému prostoru jiného a dokonce ani operačního systému.

Proto počítač, počínaje 80286, Intel začal do svých procesorů zahrnovat MMU, které řešily paměť podle segmentů, ale sotva se používalo a až s příchodem 80386 se MMU zlepšilo na podporu segmentů a stránek ve směru, kterým operační systémy pro PC daly důležitý pokrok v z hlediska kvality.

Jako historická poznámka, kdy Microsoft propuštěn Windows 3.1 na počátku 90. let, fungovalo to pouze se systémem 386 a to tím, že pro použití bylo nutné používat stránkovací MMU paměti. Od 80386 a dále, všechny systémy x86, včetně 64bitových, používají logické adresování, které je převedeno na fyzické adresování pomocí MMU, aby řadič integrovaný v RAM sám mohl pochopit, jaká data hledat.

Nejen RAM žije CPU

CPU pro komunikaci s jakýmkoli paměťovým zařízením používá virtuální adresování, MMU má na starosti nejen správu komunikace CPU s RAM, pro komunikaci CPU s dalšími I / O periferiemi, jako jsou pevné disky a připojené pevné disky na různá rozhraní MMU komunikuje s IOMMU.

Stránky, tabulky a adresáře

Standard od 80386 byl, že každá stránka má velikost 4 kB (22 bitů adresy).

Od Pentium Pro (P6) dále Intel přidal do svých procesorů schopnost zpracovávat stránky o velikosti 4 MB, ale je třeba vzít v úvahu, že jak jádro Windows NT, tak Linux jádro bylo vytvořeno, když tato možnost Nebylo k dispozici v x86, takže standardní velikost stránek těchto operačních systémů a většina z nich je 4 KB, protože jejich první verze jsou Pre-Pentium Pro a pro zpětnou kompatibilitu s aplikacemi to není změněny a jejich souborové systémy jsou stále založeny na stránkách 4KB, což je to, co použijeme, abychom pochopili, jak to funguje.

Abyste lépe porozuměli organizaci hierarchie, představte si paměťovou stránku jako písemný dokument.

Stránka dokumentu

Tyto dokumenty / stránky jsou uloženy v takzvané tabulce stránek, považujte to za složku, kde jsou dokumenty ukládány a organizovány.

Tabulka stránek

Existuje ale ještě jedna úroveň a složka Tabulka stránek / Dokument je uložena v Adresáři stránek, což je jako kartotéka, kterou nazýváme Stránka adresáře.

Adresář

Operační systém a aplikace odkazují na adresy paměti virtuálním způsobem, adresa paměti začíná nejprve bity, které označují adresář stránky, poté tabulku stránek a poté, kde jsou data na stránce umístěna.

Virtuální paměť na současných procesorech x86

Logox86

Všechny x86 procesory, které jsou aktuálně na trhu, mají 64 bitů, jsou také známé jako x86-64 nebo x64, bez ohledu na to, zda se jedná o Intel nebo AMD, všichni pracují stejným způsobem.

I když je jeho adresování 64 bitů, adresuje opravdu jen asi 48 bitů, je to proto, že prvních 16 bitů jsou speciální bity, které označují, jak má MMU zacházet s paměťovou stránkou, tabulkou nebo adresářem.

  1. NX (bez eXecute) : Bit NX, když je aktivní, naznačuje, že v této stránce, tabulce nebo adresáři virtuální paměti není žádný spustitelný kód, a proto nebude interpretovat určité bity jako instrukce pro CPU, ale pouze jako data.
  2. První bit vyhrazen pro operační systém.
  3. Druhý bit vyhrazen pro operační systém.
  4. Třetí bit vyhrazený pro operační systém.
  5. G (ignorováno): Řekne CPU, aby tuto stránku paměti, tabulku nebo adresář ignoroval a přešel na další.
  6. S (velikost): Označí velikost stránky paměti (4 kB nebo 4 MB).
  7. Hodnota tohoto bitu je vždy 0.
  8. A (k dispozici): Označuje, zda k datům v daném okamžiku přistupuje proces, tento bit je spravován operačním systémem.
  9. D (Špinavý): Používá se k označení, že paměťová stránka nemusí být kopírována do mezipaměti CPU.
  10. Hodnota dalšího bitu je vždy 0.
  11. W (zápis): značky, pokud lze stránku upravit (zápis).
  12. U (Uživatel): Zkontrolovat pokud je stránka paměti přístupná operačnímu systému (supervizor) nebo aplikacím (uživatel).
  13. R (Číst): Zkontrolovat pokud lze číst paměťovou stránku. Zkontrolujte, zda lze číst data na této stránce.
  14. P (současnost): Tento bit je označen, když operační systém přesune stránku paměti na nižší úroveň v hierarchii paměti, například když je zkopírován na pevný disk nebo pevný disk.

Tyto bity umožňují MMU řídit přístup různých aplikací a operačního systému k systémové paměti, je třeba vzít v úvahu, že MMU jedná pouze na příkaz operačního systému systému a právě ten má maximální oprávnění, pokud jde o správu virtuální paměti.

Virtuální paměť a architektury jiné než x86

Architektury založené na jiných sadách registrů a pokynů, jako jsou ARM, PowerPC, MIPS, RISC-V také podporují virtuální paměť, ale podle jejich vlastních standardů. Pro zjednodušení jsme se v této zprávě rozhodli uvést jako příklad provoz CPU s ISA x86-64.