Den viktigaste skillnaden mellan logisk adress och fysisk adress är att CPU genererar logisk adress under programkörning medan den fysiska adressen är en plats i minnesenheten.
I enkla termer genererar CPU den logiska adressen eller den virtuella adressen. Ur perspektivet av ett program som körs verkar ett objekt befinna sig på adressen som den logiska adressen tillhandahåller. Minnesenheten observerar den fysiska adressen. Dessutom tillåter den åtkomst till en speciell minnescell i huvudminnet via databussen.
Vad är logisk adress?
CPU genererar logisk adress. Ur perspektivet av ett program som körs verkar ett objekt befinna sig på adressen som den logiska adressen tillhandahåller. Program som körs på datorn ser inte de fysiska adresserna. De arbetar alltid med de logiska adresserna. Det logiska adressutrymmet är den uppsättning logiska adresser som ett program genererar. Det är nödvändigt att mappa de logiska adresserna till fysiska adresser innan du använder dem. Hårdvaruenheten Memory Management Unit (MMU) hanterar denna mappning.
MMU-kartläggningsscheman
MMU följer flera kartläggningsscheman. I det enklaste mappningsschemat läggs värdet i omlokaliseringsregistret till varje logisk adress som produceras av applikationsprogram innan de skickas till minnet. Det finns också några andra komplexa metoder för att generera kartläggningen. Adressbindning (dvs. allokering av instruktioner och data till minnesadresser) kan ske vid tre olika tidpunkter.
Figur 01: Logisk och fysisk adress
För det första kan det hända under kompileringstid om de faktiska minnesplatserna är kända i förväg, och detta skulle generera den absoluta koden under kompileringstiden. Det kan också hända vid laddningstid om minnesplatserna inte är kända i förväg. För detta måste omlokaliseringsbar kod genereras vid kompileringstillfället. Dessutom kan adressbindning ske vid utförandetidpunkten. Detta kräver hårdvarustöd för adressmappning. Vid kompileringstid och laddningstidsadressbindning är logiska och fysiska adresser desamma. Men den här proceduren är annorlunda när adressbindning sker under körningstid.
Vad är fysisk adress?
Minnesenheten observerar den fysiska adressen eller den verkliga adressen. Det tillåter databussen att komma åt en viss minnescell i huvudminnet. MMU mappar den logiska adressen till fysisk adress. Om man till exempel använder det enklaste mappningsschemat, som lägger till omlokaliseringsregistret (antag att värdet i registret är y) till den logiska adressen, skulle en logisk adress från 0 till x mappas till ett fysiskt adressområde y till x+ å.
Dessutom kallas detta även det fysiska adressutrymmet för det programmet. Alla logiska adresser måste mappas till fysiska adresser innan de kan användas.
Vad är skillnaden mellan logisk adress och fysisk adress?
Logisk adress kontra fysisk adress |
|
Logisk adress är adressen där ett objekt tycks ligga ur ett körande applikationsprograms perspektiv. | Fysisk adress är en minnesadress som representeras i form av ett binärt tal på adressbusskretsen för att göra det möjligt för databussen att komma åt en speciell lagringscell i huvudminnet, eller ett minnesregister avbildat I /O-enhet. |
Synlighet | |
Användaren kan se den logiska adressen till ett program. | Användaren kan inte se programmets fysiska adress. |
Method of Generation | |
CPU genererar den logiska adressen. | MMU beräknar den fysiska adressen. |
Tillgänglighet | |
Användaren kan använda den logiska adressen för att komma åt den fysiska adressen. | Användaren har inte direkt tillgång till fysisk adress. |
Sammanfattning – logisk adress vs fysisk adress
Skillnaden mellan logisk adress och fysisk adress är att CPU genererar logisk adress när programmet körs medan den fysiska adressen är en plats i minnesenheten. Alla logiska adresser måste mappas till fysiska adresser innan MMU kan använda dem. Fysiska och logiska adresser är samma när man använder kompileringstid och laddningstid adressbindning, men de skiljer sig när man använder exekveringstidsadressbindning.