Fra hvilken bog stammer disse noter (datamatarkitektur/operativsystem)
Der er nogen henvisninger til billeder/figurer er der nogen der kan genkende det......PAGING
Ideen i paging er at inddele RAM og den logiske RAM i frames og matchende pages, hvorefter programmer ikke behøver at ligge kontinuerligt i hukommelsen. Det sekundære medie bør også være delt op i den samme størrelse blokke som siderne, eller programerne skal understøtte opdeling i passende størrelser. Denne størrelse kan være alt fra 512 bytes til 16 eller mere megabytes, alt efter behov og arkitektur. Er altid (oftest) en power af 2 for at lette oversættelsen til en logisk adresse, som er binær.
Selvo oversættelsen foregår som på fig 9.6 side 270. Første del af den logiske adresse bliver til pagenummeret og den anden del bliver til offsettet i pagen. Giv eksempel på side 272, fig 9.8. Dette er en form for dynamisk relocering, lidt ligesom at bruge et relocerings register pr page. Med paging har vi ingen extern fragmentering, men der kan, alt efter størrelsen af framesne, være meget intern fragmentering. Man kan for eksempel ricikere at en process skal bruge n frames plus én byte. I det tilfælde ville der være framestørrelse – 1 byte intern fragmentering. Den interne framgmentering vil alt andet lige stige med størrelsen på framesne, mens hastigheden dog også vil stige. Ligeledes er I/O mere effektiv med store pages, i hvert fald hvis vi bruger DMA eller ligende. Typiske page størrelser er i dag 2 til 8 KB, der er dog systemer der understøtter variable page størrelser, blandt andet Solaris.
I bogen skriver de at en page entry normalt er 4 byte og vil så med en page størrelse på 4 K kunne adressere 64 GB fysisk RAM. Derfor må enten page størrelserne eller længden af en page entry være vokset, da nutidige systemer kan adressere meget mere. (Eller der bruges multilevel paging, se nedenfor.).
Der er i paging stor forskel på brugerens syn på RAMen og på den fysiske placering.
OSet må have en frame tabel til at give overblik over hvor mange pages der er, hvilker er frie og hvem de optagede tilhører.
Det er ikke optimalt at bruge paging hvis man skal adressere store mængder logisk RAM, da page tabellerne så vil blive alt for store. En løsning til dette er at bruge multilevel paging, som går ud på at page page tabellen. Dette vil, med samme arkitektur (32 bit), ofte gøre pagesne lidt mindre, men give meget større mængde mulige sider. Eks på side 279. Der er enda eksempler på brug af tre eller flere page tabeller. Dog skal man være opmærksom på, at hver ekstra pagetabel kræver et ekstra opslag i memory for at finde en adresse, med deraf følgende slowdown.
Er der mange der bruger det samme kode, og det er read only, er der mulighed for at bruge shares paging.
Segmenteret paging er en yderligere opdeling, hvor den logiske adresse deles i to, hvor den første del bruges til at finde det rette segment, og den anden del er offsettet i dette segment. Resusltatet, en linær adresse, bruges så som logisk adresse i et normalt paging miljø. Fig side 292. Fordele: Deling af kode??
