Memory management unit

Fra Wikipedia, den frie encyklopædi
Spring til navigation Spring til søgning

En memory management unit (MMU) er en computerkomponent, der behandler alle referencer til computerens hovedlager. Dens vigtigste opgave er at oversætte virtuelle adresser til fysiske adresser i hovedlageret. Det sker, når der skal læses instruktioner eller data fra lageret, eller der skal skrives til lageret. MMU'en er ofte en del af cpu'en, men findes også som et særskilt integreret kredsløb i nogle maskiner.

Opgaver[redigér | redigér wikikode]

MMU'en håndterer administration af virtuelt lager, idet den samtidig håndterer de forskellige beskyttelsesmekanismer, der kan findes, administrerer evt. cpu-cache og står for interrupthåndteringen. På enklere og ofte ældre computere, gerne med 8-bits cpu'er kan MMU'en udføre bank switching, en mekanisme der lader en cpu med et begrænset adresserum (64 kilobyte) skifte mellem flere ”banks”, og dermed udnytte en større hukommelse.

Skematisk fremstilling af en MMUs funktion[1]:186 ff.

Virtuelle adresser[redigér | redigér wikikode]

En moderne MMU vil oftest dele det virtuelle adresserum (de adresser som cpu'en kan håndtere internt) op i sider (pages) på nogle tusinde ord eller bytes (de kan være meget større), altid en potens af 2. De mindst betydende bit i en virtuelle adresse bevares og fungerer som et offset ind i en side. De mest betydende bit i en virtuel adresse er så sidens nummer, et nummer som MMUen skal administrere og senere konvertere til adresser i det fysiske lager.[2]

Page table[redigér | redigér wikikode]

De fleste MMUer administrerer en page table med et page table entry for hver virtuel side. Tabellen mapper hver virtuelle side til den tilsvarende fysiske side i hovedlageret. MMU'en benytter ofte en translation look-aside buffer (på MMUens egen chip), der muliggør meget hurtige opslag i tabellen. I andre MMUer ligger tabellen i hovedlageret.

Under alle omstændigheder vil page table for hver side angive, om en fysisk side aktuelt befinder sig i hovedlageret og i givet fald hvor (dvs. hvorledes skal adresserne ændres). Er siden ikke i lageret for tiden, vil den blive indlæst fra baggrundslager (normalt en form for disk) eller skabt første gang, den benyttes. Desuden vil tabellen indeholde oplysninger om, hvad der må ske med hver side (må et bruger-program skrive til siden eller kun læse), hvilke programmer må tilgå en side, hvornår er den sidst blevet brugt, og er der sket ændringer af siden (det kaldes dirty bit)? Hvis siden er uændret, og der bliver mangel på plads i det fysiske lager, skal nogle sider swappes ud på disken. Operativsystemet vil her fortrinsvis vælge sjældent benyttede sider. Er en fysisk side ikke ændret, behøver operativsystemet ikke skrive siden ud igen.

MMUen vil fange et programs forsøg på at tilgå en side, der ikke er i lageret, og lade operativsystemet finde siden på disken og swappe den ind, inden programmet kører videre. Forsøger et program at tilgå en adresse, det ikke har adgang til, eller forsøger det at skrive til en skrivebeskyttet side, vil programmet ligeledes fange det og udføre et passende interrupt.

Noter og henvisninger[redigér | redigér wikikode]

  1. ^ Tanenbaum, Andrew S. (2009). Modern operating systems. Upper Saddle River (New Jersey): Prentice-Hall. ISBN 0-13-600663-9. 
  2. ^ Frank Uyeda (2009). "Lecture 7: Memory Management" (PDF). CSE 120: Principles of Operating Systems (UC San Diego). Hentet 2013-12-04.