Kritisk region Operativsystemer Kritisk region Begrepet kritisk region
Kritisk region Operativsystemer
Kritisk region Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer. Generelt kan en kritisk region defineres som et sted der det kan oppstå kollisjoner. Operativsystemer
Kritisk region I trafikken vil et veikryss være en kritisk region fordi biler lett kan kollidere der. Derfor er veikryss regulert enten av trafikklys, rundkjøringer eller regler for vikeplikt. Operativsystemer
Kritisk region En definisjon på kritisk region i dataprogram et En kritisk region er et stykke programkode som forsøker å få tilgang til en ressurs som ikke kan deles. Operativsystemer
Kritisk region Om flere tråder får tilgang til samme ressurs kan det føre til kollisjoner. Dette kan igjen føre til at programmet ikke fungerer på normal måte. Operativsystemer
Kritisk region Vi skal se på et eksempel på en kollisjon mellom to tråder. Vi har to tråder som bruker en felles tallvariabel som heter sum. Den ene tråden øker verdien til sum med 1. Den andre tråden avtar verdien til sum med 1. Operativsystemer
Kritisk region Vi har følgende situasjon double sum=0. 0; Tråd 1 Tråd 2 // Felles variabel sum += 1; sum -= 1; Operativsystemer
Kritisk region I tråd 1 legges 1 til i sum. I tråd 2 trekkes 1 fra sum. Dette vil som oftest fungere bra. Men det kan gå galt hvis trådene forsøker å gjøre dette samtidig når det skjer en trådutskifting i prosessor. Operativsystemer
Kritisk region Det som kan skje er at tråd 1 er i prosessor og blir avbrutt av en trådutskifting akkurat når den skal utføre sum += 1 Da blir tråd 1 tatt ut av prosessor og tråd 2 blir lastet inn i prosessor. Operativsystemer
Kritisk region La oss si at tråd 1 akkurat har lest inn at sum er lik 4 før den tas ut av prosessor. Når tråd 1 blir avbrutt vil trådutskiftingen føre til at register verdiene til tråden lagres. Det vil si at verdien 4 lagres for variabelen sum. Operativsystemer
Kritisk region Når tråd 2 starter å kjøre i prosessor vil tråd 2 også lese inn at verdien til sum er lik 4. Tråd 2 vil så utføre sum -= 1 Verdien til sum er nå lik 3. Operativsystemer
Kritisk region Når tråd 1 allokeres inn i prosessor på ny vil verdiene i registeret som ble lagret, leses inn. Tråd 1 vil bruke registerverdien til sum fordi denne var akkurat lest inn for bruk, når tråd 1 skulle utføre sum += 1 Operativsystemer
Kritisk region Tråd 1 vil så utføre sum += 1 Siden tråd 1 bruker at sum var lik 4 vil verdien til sum bli lik 5. Dette medfører at oppdateringen av sum som ble gjort av tråd 2 vil bli mistet. Operativsystemer
Kritisk region Konsekvensen av at de to trådene har oppdatert variabelen sum samtidig er at den ene oppdateringen er mistet. Og dette vil føre til programfeil. Operativsystemer
Kritisk region Tråd 1 og tråd 2 har begge en kritisk region i koden sin Tråd 1 Tråd 2 sum += 1 sum -= 1 Det er derfor behov for et system som sørger for at tråd 1 og tråd 2 ikke er inne i sin kritiske region samtidig. Operativsystemer
Kritisk region For å sørge for at tråd 1 og tråd 2 ikke er inne i sin kritiske region samtidig kan vi bruke en semafor. Eller vi kan bruke klassen Monitor som sørger for at variabelen sum bare nås av en tråd om gangen. Operativsystemer
Kritisk region Kritiske regioner i programkode må reguleres med synkroniseringsmekanismer. Synkroniseringsmekanismer har derfor en viktig oppgave å unngå programfeil. Operativsystemer
Synkroniseringsmekanismer i Windows operativsystem Operativsystemer
Synkroniseringsmekanismer I Windows operativsystem benyttes mange ulike synkroniseringsmekanismer. Noen av dem er Keyed Events Spinlocks Fast Mutex og Guarded Mutex Pushlocks Operativsystemer
Keyed Events Windows bruker en synkroniserings- mekanisme som kalles Keyed Events brukes i tilfeller hvor tråder samarbeider om en oppgave. Dette er i tilfeller der en tråd må vente på at en hendelse (Event) har skjedd før den selv kan utføre en handling. Operativsystemer
Keyed Events En Keyed Event tillater en tråd til å spesifisere en nøkkel (key) som angir hvilken hendelse den venter på. Tråden vil da vente inntil en annen tråd signaliserer at en hendelse med den samme key har skjedd. Operativsystemer
Spinlocks Spinlock er en låsmekanisme som benyttes av kjernen i Windows operativsystem til å oppnå eksklusiv rådighet til ressurser. Før en tråd i kjernen skal få tilgang til en kritisk region, må den spørre en Spinlock om tilgang. Operativsystemer
Spinlocks Tråden venter i en løkke (spinner) inntil Spinlocken blir ledig. Tråden vil derfor være i ventetilstand, det vil si være ikke aktiv, mens den venter på at Spinlocken skal bli ledig. Operativsystemer
Spinlocks Når en tråd har fått tilgang til en Spinlock vil den ha eksklusiv rådighet til den helt til den gir slipp på den igjen. Å bruke en Spinlock er derfor bare effektivt om en tråd bare skal ha Spinlocken et kort tidsrom. Operativsystemer
Spinlocks Noe som kalles Queued Spinlocks benyttes ofte istedenfor vanlige Spinlocks. Queued Spinlocks benytter køer til å henge forespørsler på. Operativsystemer
Fast Mutex gir ofte bedre ytelse enn en vanlig mutex. Årsaken er at de kan gå utenom vanlig prosessplanlegging. Dette gir Fast Mutex spesielt god ytelse i miljøer med flere prosessorer. Operativsystemer
Guarded Mutex som benyttes av Windows Server 2003 og senere versjoner av Windows brukes til samme oppgaver som Fast Mutex, men er enda raskere. Operativsystemer
Pushlocks brukes istedenfor Spinlocks for å beskytte datastrukturer i kjernen. Pushlocks benyttes kun av Windows operativsystem, men det fins også noen drivere som benytter Pushlocks. En fordel med Pushlocks er at de tar liten plass. Operativsystemer
Pushlocks Tilgang til en Pushlock kan være både eksklusiv og delt. Tilgangen kan være delt hvis data bare skal leses. Hvis en tråd skal forandre på dataene må tilgangen vær eksklusiv. Operativsystemer
Vranglås Operativsystemer
Vranglås Kritiske regioner kan føre til en situasjon som kalles vranglås (Deadlock). En vranglås oppstår når to tråder begge forsøker å få tak i en ressurs som den andre kontrollerer. Operativsystemer
Vranglås I et datamaskin system er det mange ressurser som kan bli brukt av bare en prosess av gangen. Dette er ressurser som skjerm, printere, CD spillere, filer, … Operativsystemer
Vranglås For en prosess er det ofte behov for tilgang ikke bare til en ressurs, men til flere. Hvis flere prosesser forsøker å få tilgang til mer enn en ressurs hver kan dette gi opphav til vranglås. Operativsystemer
Vranglås Et eksempel på vranglås er når to tråder har åpen hver sin fil for skriving og begge ønsker å åpne den andre trådens fil. Tråd A har åpen fil 1 Tråd B har åpen fil 2 Tråd A ønsker å åpne fil 2 og tråd B ønsker å åpne fil 1. Begge vil vente evig. Operativsystemer
Vranglås Et annet eksempel på vranglås er følgende. To prosesser ønsker samtidig å skanne et dokument og skrive det til en CD. Begge prosesser har derfor bruk for både skanneren og CD-en. Operativsystemer
Vranglås Den ene prosessen prøver først å få tilgang til skanneren. Den andre prosessen er programmert annerledes og prøver først å få tilgang til CD-en. Operativsystemer
Vranglås Når så prosess 1 forsøker å få tilgang til CD- en og prosess 2 forsøker å få tilgang skanneren samtidig oppstår vranglås. Operativsystemer
Vranglås Situasjonen er følgende Prosess 1 Prosess 2 Skanner CD-ROM Operativsystemer
Vranglås kan også oppstå i nettverk. Ofte er printere, skannere og liknende utstyr en felles ressurs i nettverket. Vranglås kan derfor oppstå hvis flere maskiner prøver å få tak i delte ressurser i et nettverk samtidig. Operativsystemer
Vranglås kan også oppstå i situasjoner hvor det ikke er input/output utstyr som inngår. Vranglås kan for eksempel oppstå ved bruk av en database. Operativsystemer
Vranglås To prosesser bruker en database. Prosess A har lukket noen data i databasen. Prosess B har lukket noen andre data i databasen. Hvis nå begge prosesser forsøker å få tak dataene som den andre prosessen har lukket, oppstår vranglås. Operativsystemer
Vranglås Et teoretisk tilfelle av vranglås kan oppstå ved trådutskifting i prosessor. Vi skal igjen se på eksempelet der vi har to tråder som bruker en felles tallvariabel. Den ene tråden legger til et tall i variabelen og den andre tråden trekker fra et tall. Operativsystemer
Vranglås double sum; //Felles variabel I tråd 1 Enter(sum); sum += 1; Exit(sum) ; I tråd 2 Enter(sum) ; sum -= 1; Exit(sum) ; Operativsystemer
Vranglås Det som kan skje er at akkurat når tråd 1 har utført lukking av sum så er tiden ute for tråd 1 i prosessor og tråd 2 lastes inn i prosessor. Det som så skjer er at Enter(sum) også skjer i tråd 2. Operativsystemer
Vranglås Følgen av at begge tråder har klart stenge tilgangen til variabelen sum er vranglås. Variabelen sum vil være låst for både tråd 1 og tråd 2. Begge tråder vil vente i evig tid på å få tilgang til variabelen sum. Operativsystemer
Vranglås En definisjon på vranglås er følgende Noen prosesser er i vranglås hvis hver prosess venter på en hendelse som bare en av de andre prosessene kan forårsake. Siden alle prosessene venter vil ingen av dem gjøre noe som åpner for de andre prosessene. Operativsystemer
Vranglås For at vranglås skal oppstå må følgende betingelser være oppfylt 1. Eksklusiv rådighet betingelsen. 2. Holde og vente betingelsen. 3. Ikke operativsystemstyrt betingelsen. 4. Sirkulær vente betingelsen. Operativsystemer
Vranglås n Eksklusiv rådighet betingelsen innebærer at om en tråd har fått adgang til en ressurs vil ingen andre tråder få tilgang til ressursen. Operativsystemer
Vranglås n n Holde og vente betingelsen beskriver situasjonen ved vranglås. Trådene holder på en ressurs og venter på tilgang til en annen ressurs. Operativsystemer
Vranglås n n Ikke operativsystemstyrt betingelsen innebærer at en ressurs ikke kan tas fra en prosess. En prosess vil holde på en ressurs inntil den selv gir slipp på den. Operativsystemer
Vranglås n Sirkulær vente betingelsen er når tråder venter på hverandre. n n n Prosess p 1 har ressurs R 1 og vil ha ressurs R 2. Prosess p 2 har ressurs R 2 og vil ha ressurs R 1. Denne situasjonen kan også involvere flere enn to tråder. Derfor navnet sirkulær venting. Operativsystemer
Vranglås n Eksempel på Sirkulær venting med tre tråder involvert. R 1 p 3 p 1 R 3 p 2 R 2 Operativsystemer
Vranglås Operativsystemet kan forholde seg til vranglås på fire måter 1. Ignorere vranglåsen. 2. Finne vranglåsen og rette den opp. 3. Prøve å unngå at vranglås oppstår når ressurser allokeres. 4. Prøve å unngå at vranglås oppstår ved å unngå at betingelsene for dem oppstår. Operativsystemer
Vranglås n n En måte å forholde seg til vranglås på er å ignorere den. Dette kan være akseptabelt hvis vranglås er et sjeldent fenomen. At et program stopper å virke en gang i året pga vranglås har liten betydning. Operativsystemer
Vranglås Et operativsystem kan forsøke å finne vranglås og rette den opp. Det er utviklet teknikker for å registrere vranglås. Operativsystemer som gjør dette prøver som oftest ikke å forhindre vranglås. Operativsystemer
Vranglås Hvis operativsystemet har oppdaget vranglås er det forskjellige strategier å fjerne den 1. Gjenoppretting ved at operativsystemet griper inn. 2. Gjenoppretting ved tilbakestilling. 3. Gjenoppretting ved å stanse prosesser. Operativsystemer
Vranglås Gjenoppretting ved at operativsystemet griper innebærer at operativsystemet tar en ressurs fra en prosess og gir den til en annen prosess. Imidlertid er det ofte vanskelig eller umulig å rette opp en vranglås på denne måten. Operativsystemer
Vranglås Gjenoppretting ved tilbakestilling innbærer at en prosess som er med i vranglåsen settes tilbake i tid, slik at den kan begynne allokeringen av ressurser på nye. For å få tilbakestilling av prosesser benyttes noe som kalles sjekkpunkter. Operativsystemer
Vranglås Sjekkpunkter i en prosess vil si at status for prosessen lagres på en fil på bestemte tidspunkter. Dette gjør at prosessen kan startes på ny fra et sjekkpunkt. Operativsystemer
Vranglås Gjenoppretting ved å stanse prosesser innebærer at operativsystemet avslutter en eller flere prosesser for å fjerne en vranglås. Dette medfører at de andre prosessene kanskje vil kunne forsette. Operativsystemer
Vranglås Istedenfor å forsøke å finne og rette opp vranglås kan operativsystemer forsøke å unngå vranglås. Operativsystemet kan prøve å unngå at vranglås oppstår når ressurser allokeres. Operativsystemer
Vranglås Operativsystemet kan også prøve å unngå at vranglås ved unngå de fire betingelsene for vranglås 1. Eksklusiv rådighet betingelsen. 2. Holde og vente betingelsen. 3. Ikke operativsystemstyrt betingelsen. 4. Sirkulær vente betingelsen. Operativsystemer
Vranglås n n n Eksklusiv rådighet betingelsen innbærer at for at vranglås skal oppstå er det kun en prosess som har tilgang til ressursen. Hver ressurs er tilgjengelig for kun en prosess om gangen. Denne betingelsen er imidlertid nødvendig for mange ressurser som printere, filer, … Operativsystemer
Vranglås n n Holde og vente betingelsen innbærer at for at vranglås skal oppstå vil prosesser holde på en ressurs mens den forsøker å få tilgang til en annen. En måte å unngå dette på er å kreve at en prosess oppgir ressurser den har før den får tilgang til en ny ressurs. Operativsystemer
Vranglås Ikke operativsystemstyrt betingelsen innbærer at for at vranglås skal oppstå tas prosesser ut av prosessor ved trådutskifting. Hvis en prosess får lov til å bli ferdig med en ressurs før den tas ut av prosessor vil vranglås ikke oppstå. Operativsystemer
Vranglås Sirkulær vente betingelsen innebærer at for at vranglås skal oppstå må en prosess forsøke å få tilgang til flere ressurser samtidig. Dette innebærer at hvis en prosess kun forsøker å få tilgang til en ressurs om gangen vil vranglås unngås. Operativsystemer
Vranglås Kommunikasjon vranglås er en type vranglås som ikke har med ressurser å gjøre. Sett at en prosess A sender en forespørsel til prosess B, og så blokkerer inntil den får svar. Hvis svaret fra prosess B blir borte, får vi en vranglås. Operativsystemer
Vranglås Sulting (Starvation) er et problem som er nær knyttet til vranglås. En tråd som ikke kommer inn i prosessor er i en låst situasjon som ligner vranglås. Operativsystemer
Vranglås er et mulig problem i et hvert operativsystem. Vranglås kan oppstå på en rekke forskjellige måter. To eller flere prosesser vil være involvert i en vranglås. Operativsystemer
Vranglås Ved bruk av Monitor kan vranglås unngås ved å angi et tidsintervall. if (Monitor: : Try. Enter(sum, 300)) { // kode beskyttet av Monitor her } else { // kode å utføre om Try. Enter mislykkes } Operativsystemer
Vranglås fører til en situasjon der en eller to tråder aldri vil bli ferdig med sin oppgave uten at operativsystemet griper inn. Operativsystemer
Vranglås Operativsystemet har en del strategier for å unngå vranglås. Operativsystemet undersøker om vranglås eksisterer, spesielt hvis det merker at systemet går tregt. Operativsystemer
Vranglås Hvis operativsystemet finner vranglås forsøker det å få bort vranglåsen. Måten operativsystemet forsøker rette opp vranglås på er å få systemet tilbake til det stadium som var før vranglåsen oppsto. Operativsystemer
Vranglås Windows Server operativsystem har en ressursbehandler (Resource Manager). Å unngå vranglås på servere er en oppgave for ressursbehandleren. Ressursbehandleren prøver å oppdage og korrigere vranglås. Operativsystemer
Vranglås Driver Verifier er en mekanisme i Windows operativsystem som kan benyttes til å finne feil i drivere og annen kode i kjernen. Microsoft bruker Driver Verifier til å kontrollere egne drivere og andres drivere som skal være kompatible med Windows. Operativsystemer
Vranglås I tillegg til å være et verktøy er Driver Verifier også et hjelpemiddel for systemadministratorer som kommer ut for et system krasj. Driver Verifier kan blant annet benyttes ved vranglås. Operativsystemer
Vranglås Man kan benytte Driver Verifier til å sjekke om det er vranglås. Driver Verifier holder rede på bruk av Spinlocks og Mutexer. Driver Verifier kan derfor se etter mønster som kan fremkalle en vranglås. Operativsystemer
Synkroniseringsmekanismer Operativsystemer
Synkroniseringsmekanismer Ofte er det mange tråder som kjører samtidig på en datamaskin. Disse trådene må på en eller annen måte samkjøres. Det er derfor behov for mekanismer som tar seg av denne samkjøringen. Operativsystemer
Synkroniseringsmekanismer Vi har sett på følgende mekanismer for samkjøring av tråder. Semafor Mutex Event Monitor Operativsystemer
Synkroniseringsmekanismer Disse synkroniseringsmekanismene kan deles i to grupper etter hvordan de fungerer. 1. Lukker 2. Signaliserer Operativsystemer
Synkroniseringsmekanismer Semafor, mutex og monitor lukker en ressurs slik at andre tråder ikke kommer til. Event derimot er en mekanisme som signaliserer når en hendelse er inntruffet. Operativsystemer
Synkroniseringsmekanismer Både, semaforer, mutex, monitor og events kan benyttes til interprosess kommunikasjon. Interprosess kommunikasjon vil si kommunikasjon mellom ulike programmer, ikke bare tråder. Operativsystemer
Synkroniseringsmekanismer For at en semafor skal kunne benyttes til interprosess kommunikasjon må den gis et navn. Når et program har opprettet en semafor i minnet, kan andre programmer få tak i den i minnet via navnet. Operativsystemer
Synkroniseringsmekanismer Semaforer med navn kan benyttes av andre programmer som kjører på operativsystemet. Å bruke navn som kan nås overalt i et operativsystem krever forsiktighet. Hvis to semaforer har samme navn vil dette kunne føre til at feil semafor blir tatt i bruk. Operativsystemer
Synkroniseringsmekanismer i. NET Framework Library Operativsystemer
Synkroniseringsmekanismer Det finnes flere andre klasser i Class Library som kan benyttes til synkronisering enn de vi har sett på til nå. Noen er class Threadpool class Interlocked class Reader. Writer. Lock Operativsystemer
Class Threadpool n n n class Threadpool gir en enkel måte å synkronisere bakgrunnstråder. Alt vi behøver å gjøre er å henge tråden på en liste. Da vil operativsystemet ta seg av synkroniseringen. Operativsystemer
Class Threadpool n Man kaller Thread. Pool: : Queue. User. Work. Item(gcnew Wait. Callback(min. Traad)); En tråd med funksjonen min. Traad vil da henges på en liste og systemet sørger for synkronisering. Operativsystemer
Class Interlocked n n n class Interlocked Denne klassen gir en metode til å synkronisere en variabel som brukes av flere tråder. Klassen sørger for at kollisjoner mellom tråder ikke gjør at operasjoner går tapt. Operativsystemer
Class Interlocked n n n class Interlocked Denne klassen gir en metode til å synkronisere en variabel som brukes av flere tråder. Klassen sørger for at kollisjoner mellom tråder ikke gjør at operasjoner går tapt. Operativsystemer
Eksempel på Class Interlocked if (0 == Interlocked: : Exchange(bruker. Ressurs, 1)) { // Har tilgang til ressursen// } int bruker. Ressurs; bruker. Ressurs er en variabel som angir hvor mange tråder som bruker ressursen. Operativsystemer
Class Reader. Writer. Lock n class Reader. Writer. Lock synkroniserer tilgangen til en ressurs. 1. Klassen lar flere tråder lese fra en ressurs samtidig. 2. Men hvis en tråd skal skrive til ressursen vil ressursen lukkes slik at bare denne tråden har tilgang til ressursen. Operativsystemer
Class Reader. Writer. Lock n class Reader. Writer. Lock fungerer best når det er flest tråder som skal lese ressursen og få som skal skrive. Tråder som skal lese og tråder som skal skrive henges på forskjellige køer. Køen med tråder som skal lese gjøres gjerne ferdig før tråder som skal skrive slippes til. Operativsystemer
Class Auto. Reset. Event n class Auto. Reset. Event Denne klassen gir beskjed til en tråd som venter, om at en hendelse har skjedd. Klassen kan derfor brukes til synkronisering av tråder som samarbeider. Operativsystemer
Class Manual. Reset. Event class Manual. Reset. Event Dette er en annen klassen som kan brukes til synkronisering av tråder som samarbeider. Vi skal se på forskjellen på class Auto. Reset. Event og class Manual. Reset. Event. Operativsystemer
Class Event. Wait. Handle Vi har tidligere sett på class Event. Wait. Handle Denne klassen har en input parameter Event. Reset. Mode. Verdien for Event. Reset. Mode avgjør om en hendelse skal registreres automatisk eller manuelt. Operativsystemer
Enumeration Event. Reset. Mode Valg Auto. Reset : Når signalisert med Set() vil hendelsen registreres automatisk og tråden vil løslates. Kall på Wait. One() vil lukke adgang for andre tråder. Operativsystemer
Enumeration Event. Reset. Mode Valg Manual. Reset : Når signalisert med Set() vil alle ventende tråder løslates og hendelsen vil vente på å registreres manuelt. Kall på Wait. One() i en tråd vil derfor ikke lukke adgang for andre tråder. Operativsystemer
Enumeration Event. Reset. Mode Auto. Reset: Tillater bare en tråd tilgang til en ressurs om gangen Manual. Reset: Tillater flere tråder tilgang til en ressurs samtidig. Operativsystemer
Minnebehandling i Windows
Minnebehandling omhandler 1. 2. Hvordan allokere minne til programmer. Hvordan frigjøre minne det ikke er bruk for. Operativsystemer
Minnebehandling Hvordan minnet behandles, vil ha innvirkning på datamaskinens ytelse. Minnebehandling er derfor en viktig oppgave på en datamaskin. Operativsystemer
Problemer med minnebehandling Følgende gir en oversikt over noen problemer med minnebehandling. Det må være plass til flere programmer i minnet samtidig. Det er ikke bestandig plass til alle programmer i minnet. Programmer vil ha ulike adresser i minnet ved ulike kjøringer. Operativsystemer
Swapping Hvis det ikke er plass til flere programmer i minnet samtidig, kan man benytte avvekslende inn- og ut-lasting av programmer. Operativsystemer
Swapping Ved avvekslende inn- og ut-lasting av programmer bytter prosesser på å være i minnet. En prosess lastes inn i minnet og kjører en stund, for deretter å fjernes fra minnet igjen. Deretter lastes en ny prosess inn i minnet som får kjøre en stund. Operativsystemer
Swapping Denne utbyttingen av prosesser i minnet kalles swapping på engelsk. Swapping er en gammeldags metode som ble benyttet tidligere. Operativsystemer
Minnemodellene De fleste moderne minnemodeller faller i følgende tre kategorier. 1. Flat minnemodell 2. Sideinndelt minnemodell 3. Segmentert minnemodell Operativsystemer
Flat Memory Model En flat minnemodell benytter lineær indeksering. Indeksene starter på 0 og går opp til et maksimum. Prosessor bruker indeksene til å få direkte adgang til data lagret i minnet. Operativsystemer
Flat Memory Model En flat modell gir en enkel organisering av minnet. Det er behov for lite ressurser til minnebehandling og man får rask tilgang til data. Operativsystemer
Paged Memory Model Sideinndelt minnemodell er mer komplisert enn flat modell og gir litt langsommere tilgang til data. Sideinndeling (Paging) er en måte å hente og lagre data på fra et lagringsmedia til minnet. Data behandles som et sett med like store blokker kalt sider (Pages). Operativsystemer
Paged Memory Model Fordelen med sideinndeling er at Det er ikke nødvendig å laste hele programmer inn i minnet på en gang. Man jobber hele tiden med like store enheter. Sideinndeling er en viktig del av teknikken som benyttes ved virtuelt minne. Operativsystemer
Segmented Memory Model Segmentert minnemodell likner sideinndelt minnemodell, men sidene varierer i størrelse. Dette gjør segmentert minnemodell mer fleksibelt og effektivt en sideinndeling. Operativsystemer
Segmented Memory Model Ved segmentering er programmer delt i uavhengig adresserte segmenter. Segmentene er lagret i minnet uten å være sammenhengende. Operativsystemer
Segmented Memory Model Ulempen med segmentert minnemodell er det er et komplisert system å behandle. Det er vanskelig å programmere det opp og det kan lett oppstå feil. Operativsystemer
Virtuelt minne er en teknikk som gir programmer inntrykk av at datamaskinen har et enhetlig og sammenhengende minne. Dette selv om minnet kan være plassert fysisk på forskjellige medier. Operativsystemer
Virtuelt minne Fordelen med en virtuell minnearkitektur er at deler av en prosess kan ligge på harddisken om det ikke er nok plass i minnet. Operativsystemer
Virtuelt minne Nesten all implementering av virtuelt minne deler det virtuelle adresserommet inn i sider. Når en prosess kjører i prosessor leses den inn side for side på samme måte som når vi leser en bok. Operativsystemer
Virtuelt minne Operativsystemer benytter teknikken med virtuelt minne til å gjøre det lettere å bruke det fysiske minnet. Virtuelt minne gjør det lettere for store dataprogrammer å kjøre på systemet. Operativsystemer
Virtuelt minne Alle moderne operativsystemer benytter teknikker med virtuelt minne. Operativsystemer
Minnebehandling i Windows Minnebehandleren (Memory Manager) i Windows benytter en virtuell minnearkitektur. I Windows har hver prosess et virtuelt adresserom. Det virtuelle adresserommet er delt opp i sider. Operativsystemer
Minnebehandling i Windows bruker en virtuell minnebehandler. En virtuell minnebehandler benytter sideinndeling (Paging). Den laster derfor ikke inn hele programmer når de skal kjøres, men kun aktive deler. Operativsystemer
Minnebehandling i Windows støtter sideetterspurt virtuelt minne (Demand-paged Virtual Memory). Med sideetterspurt menes at operativsystemet bare laster inn sider i minnet som blir etterspurt av en prosess som kjører. Operativsystemer
Minnebehandleren (Memory Manager) tar seg av behandlingen av minnet. Den allokerer plass for programmer i minnet når det er behov for det. Og den fjerner programmer fra minnet igjen når de er ferdig. Operativsystemer
Minnebehandleren gjør følgende Implementerer virtuelt minne. Utfører oppgaver på minne. Gir støtte for store minner. Gjør tjenester liksom å holde rede på filer som er en del av minnet. Gir støtte til hurtigbufringsbehandleren. Operativsystemer
Frilagerbehandleren Dynamisk minneallokering er avsetting av minne til et program som kjører på datamaskinen. En del av minnet som er avsatt til et dataprogram kalles for frilageret (the Heap). Operativsystemer
Frilagerbehandleren Programmerere kan bruke frilageret til å opprette variabler og objekter. Variabler og objekter som opprettes i frilageret vil være der til de slettes av programmet eller av søppeloppsamleren (garbage collector). Operativsystemer
Frilagerbehandleren Hver prosess har minst et frilager. Når prosessen starter opprettes et standard prosessfrilager som eksisterer helt til prosessen blir avsluttet. Prosesser kan også opprette flere private frilager. Operativsystemer
Stakklagre Når en tråd kjører må den ha tilgang til en midlertidig lagringsplass hvor den kan lagre lokale variabler, funksjonsparametre og returneringsadresser etter et funksjonskall. Den delen av minnet som benyttes til dette kalles et stakklager (Stack). Operativsystemer
Stakklagre I Windows benytter minnebehandleren to stakklagre for hver tråd. En brukerstakk og en kjernestakk. Operativsystemer
Stakklagre Når en tråd lages vil det automatisk opprettes en brukerstakk som vanligvis er på 1 MB. Kjerne stakker er gjerne mye mindre, en vanlig størrelse har vært 12 KB. Operativsystemer
- Slides: 131