Kľúčový rozdiel medzi logickou adresou a fyzickou adresou je v tom, že CPU generuje logickú adresu počas vykonávania programu, zatiaľ čo fyzická adresa je miesto v pamäťovej jednotke.
Zjednodušene povedané, CPU generuje logickú adresu alebo virtuálnu adresu. Z pohľadu spusteného programu sa zdá, že položka je umiestnená na adrese poskytnutej logickou adresou. Pamäťová jednotka sleduje fyzickú adresu. Navyše umožňuje prístup k určitej pamäťovej bunke v hlavnej pamäti cez dátovú zbernicu.
Čo je logická adresa?
CPU generuje logickú adresu. Z pohľadu spusteného programu sa zdá, že položka je umiestnená na adrese poskytnutej logickou adresou. Aplikačné programy spustené na počítači nevidia fyzické adresy. Vždy pracujú s použitím logických adries. Priestor logických adries je množina logických adries, ktoré program generuje. Pred použitím je potrebné namapovať logické adresy na fyzické adresy. Tento proces mapovania zabezpečuje hardvérová jednotka správy pamäte (MMU).
Schémy mapovania MMU
MMU sa riadi niekoľkými schémami mapovania. V najjednoduchšej mapovacej schéme sa hodnota v relokačnom registri pripočíta ku každej logickej adrese vytvorenej aplikačnými programami pred ich odoslaním do pamäte. Existujú aj ďalšie zložité metódy na generovanie mapovania. Väzba adresy (t. j. prideľovanie inštrukcií a údajov do pamäťových adries) môže nastať v troch rôznych časoch.
Obrázok 01: Logická a fyzická adresa
Po prvé, môže sa to stať v čase kompilácie, ak sú skutočné miesta v pamäti vopred známe, a to by vygenerovalo absolútny kód v čase kompilácie. Môže sa to stať aj v čase načítania, ak miesta v pamäti nie sú vopred známe. Na tento účel je potrebné v čase kompilácie vygenerovať premiestniteľný kód. Okrem toho môže dôjsť k viazaniu adresy v čase vykonávania. To si vyžaduje hardvérovú podporu pre mapovanie adries. Pri viazaní adries v čase kompilácie a čase načítania sú logické a fyzické adresy rovnaké. Tento postup je však odlišný, keď k viazaniu adresy dôjde v čase vykonania.
Čo je fyzická adresa?
Pamäťová jednotka sleduje fyzickú adresu alebo skutočnú adresu. Umožňuje dátovej zbernici prístup k určitej pamäťovej bunke v hlavnej pamäti. MMU mapuje logickú adresu na fyzickú adresu. Napríklad pomocou najjednoduchšej mapovacej schémy, ktorá k logickej adrese pridáva hodnotu registra premiestňovania (predpokladajme, že hodnota v registri je y), by sa rozsahy logických adries od 0 do x namapovali na rozsah fyzických adries y až x+. r.
Navyše sa to nazýva aj priestor fyzických adries tohto programu. Všetky logické adresy musia byť pred použitím namapované na fyzické adresy.
Aký je rozdiel medzi logickou adresou a fyzickou adresou?
Logická adresa vs fyzická adresa |
|
Logická adresa je adresa, na ktorej sa zdá, že položka sídli z pohľadu spusteného aplikačného programu. | Fyzická adresa je adresa pamäte, ktorá je reprezentovaná vo forme binárneho čísla na obvode adresovej zbernice, aby umožnila dátovej zbernici prístup ku konkrétnej pamäťovej bunke hlavnej pamäte alebo registra pamäte mapovanej I /O zariadenie. |
Viditeľnosť | |
Používateľ môže zobraziť logickú adresu programu. | Používateľ nemôže zobraziť fyzickú adresu programu. |
Metóda generovania | |
CPU generuje logickú adresu. | MMU vypočíta fyzickú adresu. |
Prístupnosť | |
Používateľ môže použiť logickú adresu na prístup k fyzickej adrese. | Používateľ nemá priamy prístup k fyzickej adrese. |
Súhrn – logická adresa vs fyzická adresa
Rozdiel medzi logickou adresou a fyzickou adresou je v tom, že CPU generuje logickú adresu pri spustení programu, zatiaľ čo fyzická adresa je miesto v pamäťovej jednotke. Všetky logické adresy musia byť namapované na fyzické adresy predtým, ako ich môže MMU použiť. Fyzické a logické adresy sú rovnaké pri použití viazania adresy v čase kompilácie a pri načítaní, ale líšia sa pri použití viazania adresy v čase vykonania.