Klíčový rozdíl mezi logickou adresou a fyzickou adresou je v tom, že CPU generuje logickou adresu během provádění programu, zatímco fyzická adresa je umístění v paměťové jednotce.
Zjednodušeně řečeno, CPU generuje logickou adresu nebo virtuální adresu. Z pohledu spuštěného programu se zdá, že položka je umístěna na adrese poskytnuté logickou adresou. Paměťová jednotka sleduje fyzickou adresu. Navíc umožňuje přístup ke konkrétní paměťové buňce v hlavní paměti pomocí datové sběrnice.
Co je logická adresa?
CPU generuje logickou adresu. Z pohledu spuštěného programu se zdá, že položka je umístěna na adrese poskytnuté logickou adresou. Aplikační programy spuštěné v počítači nevidí fyzické adresy. Vždy pracují s použitím logických adres. Prostor logických adres je sada logických adres, které program generuje. Před použitím je nutné namapovat logické adresy na fyzické adresy. Tento proces mapování zajišťuje hardwarová jednotka správy paměti (MMU).
Schémata mapování MMU
MMU se řídí několika schématy mapování. V nejjednodušším mapovacím schématu je hodnota v relokačním registru přidána ke každé logické adrese vytvořené aplikačními programy před jejich odesláním do paměti. Existují také některé další složité metody pro generování mapování. Vazba adresy (tj. alokace instrukcí a dat do adres paměti) může nastat ve třech různých časech.
Obrázek 01: Logická a fyzická adresa
Za prvé, může se to stát v době kompilace, pokud jsou skutečná umístění paměti známa předem, a to by vygenerovalo absolutní kód v době kompilace. Může k tomu také dojít při načítání, pokud umístění paměti nejsou předem známa. K tomu je třeba v době kompilace vygenerovat přemístitelný kód. Navíc k vazbě adresy může dojít v době provádění. To vyžaduje hardwarovou podporu pro mapování adres. Ve vazbě adres v době kompilace a době načítání jsou logické a fyzické adresy stejné. Tento postup je však odlišný, když k vázání adresy dojde v době provádění.
Co je fyzická adresa?
Paměťová jednotka sleduje fyzickou nebo skutečnou adresu. Umožňuje datové sběrnici přístup k určité paměťové buňce v hlavní paměti. MMU mapuje logickou adresu na fyzickou adresu. Například při použití nejjednoduššího mapovacího schématu, které k logické adrese přidá hodnotu registru přemístění (předpokládejme, že hodnota v registru je y), by se rozsahy logické adresy od 0 do x namapovaly na rozsah fyzických adres y až x+. y.
Navíc se tomu také říká fyzický adresní prostor daného programu. Všechny logické adresy je třeba před použitím namapovat na fyzické adresy.
Jaký je rozdíl mezi logickou adresou a fyzickou adresou?
Logická adresa vs fyzická adresa |
|
Logická adresa je adresa, na které se zdá, že položka sídlí z pohledu spouštěného aplikačního programu. | Fyzická adresa je adresa paměti, která je reprezentována ve formě binárního čísla na obvodech adresové sběrnice, aby umožnila datové sběrnici přístup ke konkrétní úložné buňce hlavní paměti nebo registru mapované paměti I /O zařízení. |
Viditelnost | |
Uživatel může zobrazit logickou adresu programu. | Uživatel nemůže zobrazit fyzickou adresu programu. |
Metoda generování | |
CPU generuje logickou adresu. | MMU vypočítá fyzickou adresu. |
Přístupnost | |
Uživatel může použít logickou adresu pro přístup k fyzické adrese. | Uživatel nemá přímý přístup k fyzické adrese. |
Shrnutí – logická adresa vs fyzická adresa
Rozdíl mezi logickou adresou a fyzickou adresou je v tom, že CPU generuje logickou adresu při provádění programu, zatímco fyzická adresa je umístění v paměťové jednotce. Všechny logické adresy musí být namapovány na fyzické adresy, než je MMU může použít. Fyzické a logické adresy jsou stejné při použití vazby adresy v době kompilace a době načítání, ale liší se při použití vazby adresy v době provádění.