Av Jakob Breivik Grimstveit, Thomas Aanensen og Sindre H. Kvalheim
Oppgåve 1 - Minnehandtering (memory management)
Med page size på 512 bytes vil det seie at dei fyrste 9 bitane blir brukte til å spesifisere kva minneadresse det er snakk om (9 bits kan representere 0-511). Den binære tallrepresentasjonen av 07FAh er 11111111010b, og er 11 bits lang. Ved å fjerne offset-delen har ein igjen to binære posisjonar (11b) til å spesifisere kva page det er snakk om. 11b tilsvarar 3h. Ein kan då slå opp i minneallokeringstabellen og finne at dersom ein snakkar om page 03h, refererer ein eigentleg til frame 3Fh. Ein treng deretter berre omgjere 3Fh til binært, slå dette saman med page-/frame offset (dei 9 Least Significant Bits) og vips - ei fysisk minneaddresse. 3Fh=111111b. Fysisk addresse er dermed 111111111111010b/7FFAh.
Oppgave 2 - Minnestyring
I systemer som tilbyr multiprogrammering er det OS oppgave å tildele minne til prosessene som kjører.
Når et program startes vil det be OS om minne,og OS sin oppgave er da å lage en "prosess" for programmet som kan utføre det. Prosesser har et varierende behov for minne og det er altså OS som må oppfylle disse ønskene.
OS må altså administrere minnet, holde styr på hvor mye av minnet som er ledig og hvilke deler av minnet som er tildelt hvem.
For bedre å utnytte minnet bruker vi en teknikk som heter paging, som går ut på å dele både det fysiske og det logiske minnet opp i like store blokker med fast størrelse.
OS har en sidetabell for hver prosess, og hver av disse kan bli enormt store, så det er ugunstig å laste alt i alle inne i primærhukommelsen. Ofte er kun deler av prosessens sidetabell plassert i minnet, dvs sidetabellen må også kunne ”pages”. Sammen med dette benyttes gjerne en invertert sidetabell som er en rammetabell for det fysiske minnet, og bruker denne til å holde styr på hvilke prosesser som har fått tildelt de enkelte rammene. Siden den inverterte sidetabellen er liten er den også veldig rask på søke i.
Når en prosess så adresserer en side (page) som ikke har fått plass i internminnet vil OS kunne oppdage dette i den inverterete page-tabel, og må da OS søke i prosessens sidetabell for å finne denne.
Når en logisk adresse blir referert skjer det på følgende måte:
OS sjekker om adressen finnes i tabellen over de siste refererte sidene.
OS sjekker i den inverterte sidetabellen om siden allerede finnes i internminnet.
Hvis siden er i den inverterte sidetabellen blir den også listet opp i tabellen over de siste refererte sidene.
Hvis siden ikke finnes i den inverterte sidetabellen inntreffer en sidefeil ("page-fault"). OS må finne eller lage en plass i internminnet til denne siden, oppdatere prosessens sidetabell, den inverterte sidetabellen og tabellen over de senest adresserte sidene.
Oppgave 3 – Filstyring (file management)
I-noder (index noder) inneholder informasjon om filene i et Unix filsystem. Hvert separate filsystem har sin egen i-node tabell, og en fil er unikt identifisert gjennom denne tabellen. Hver i-node inneholder følgende informasjon; filtype (f.eks. vanlig fil, katalog eller spesialfil), låseinformasjon, tilgangskontroll, og siste aksess. Vanlige filer og kataloger har også referanseteller, pekere direkte til de første blokkene i filen, og informasjon om størrelsen.
En i-node er en tabell med pekere som forteller hvilke filer/kataloger som bruker de forskjellige bokkene på lagringsmediet vårt. De første pekerne (vanligvis 12 stk) peker direkte til diskblokker brukt av filen (direkte pekere). Etter disse kommer pekere til blokker som kun inneholder pekere til blokker av filen (indirekte pekere). Deretter kommer en peker til en blokk som inneholder pekere til andre blokker av pekere (dobbel indirekte pekere).Unix avviker mellom blokkenes størrelsen på disken og antallet direkte- og indirekte noder.
Tilgangskontrollen i i-noden indikerer hvem som har tilgang til en fil, og hvilken tilgang de har. De som har tilgang til en fil deler vi i tre kategorier; brukere, grupper og andre. Disse kan tildeles lese, skrive og/eller slette tilgang til en fil eller katalog.
Ulempen med i-noder er at den er sårbar mot ”head-crashes” og ”bad blocks”. På grunn av dette blir tabellen hele tiden replikert.
Sist oppdatert 22 februar, 2000