Virtuell till fysisk adressöversättning:En resa genom minnet
Virtuella adresser är de adresser som används av program, medan fysiska adresser är de faktiska platserna i RAM där data lagras. Denna översättning är avgörande av flera skäl:
1. Skydd: Varje process körs i sitt eget virtuella adressutrymme och förhindrar att en process stör en annan.
2. Effektivitet: Processer kan laddas och lossas i minnet utan att påverka andra processer, maximera minnesanvändningen.
3. Flexibilitet: Samma virtuella adress kan peka på olika fysiska adresser, vilket möjliggör dynamisk minnesallokering.
Här är hur virtuell till fysisk adressöversättning fungerar:
1. Memory Management Unit (MMU): Denna hårdvarukomponent är ansvarig för översättningsprocessen. Den använder en sidtabell För att kartlägga virtuella adresser till fysiska adresser.
2. Sidtabell: Denna tabell är en datastruktur som lagrar kartläggningar mellan virtuella och fysiska adresser. Varje post i sidtabellen representerar en -sida i minnet, som är en enhet med fast storlek (vanligtvis 4KB).
3. Virtuell adressnedbrytning: Den virtuella adressen är uppdelad i två delar:
* Sidnummer: Identifierar sidan som innehåller önskade data.
* offset: Identifierar platsen för data på sidan.
4. Sidtabelluppslag: MMU använder sidnumret för att hitta motsvarande post i sidtabellen. Den här posten innehåller den fysiska adressen på sidan i minnet.
5. Beräkning av fysisk adress: Den fysiska adressen beräknas genom att kombinera den fysiska sidadressen från sidtabellen med förskjutningen från den virtuella adressen.
Exempel:
* virtuell adress: 0x12345678
* Sidstorlek: 4KB (4096 byte)
* Sidnummer: 0x12345 (beräknat genom att dela den virtuella adressen efter sidstorleken)
* offset: 0x678 (den återstående delen av den virtuella adressen)
MMU letar upp sidnumret (0x12345) i sidtabellen och hittar motsvarande fysiska sidadress, säg 0xabcdef00.
* Fysisk adress: 0xabcdef00 + 0x678 =0xabcdef678
Ytterligare detaljer:
* Page-tabeller på flera nivåer: För att förbättra effektiviteten för större adressutrymmen kan sidtabeller vara hierarkiska med flera nivåer.
* Translation Lookaside Buffer (TLB): MMU använder ofta en cache som heter TLB för att lagra nyligen använda översättningar. Detta påskyndar adressöversättningen genom att undvika upprepade sidtabelluppslag.
* virtuellt minne: Begreppet virtuellt adressutrymme möjliggör användning av virtuellt minne, där data kan lagras på sekundär lagring (som hårddisk) och bytas ut i RAM efter behov.
Att förstå denna process är avgörande för att förstå hur operativsystem hanterar minne och hur program har tillgång till data i RAM.