Tildeling av minne til prosesser

Like dokumenter
Tildeling av minne til prosesser

Tildeling av minne til prosesser

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer

Innhold. Virtuelt minne. Paging i mer detalj. Felles rammeverk for hukommelseshierarki Hukommelseshierarki-2 1

Generelt om operativsystemer

Håndtering av minne i et OS

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

Operativsystemer og grensesnitt

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Generelt om permanent lagring og filsystemer

Generelt om operativsystemer

Filsystemet fra innsiden

Kapittel 7, Minne RAM DIMM, SIMM ROM, PROM, EPROM, EEPROM FLASH DIM SUM. Cache Virtuelt minne

Scheduling og prosesshåndtering

Minnehåndtering. Lars Vidar Magnusson. October 4, Lars Vidar Magnusson () Forelesning i Operativsystemer October 4, / 20

Definisjon av prosess

Filer i Linux og Bourne-again shell

Filsystemet fra innsiden

Litt om Javas class-filer og byte-kode

EKSAMEN. Operativsystemer og nettverk

Oppsummering av digitalteknikkdelen

Oppgave 2: Gå til roten (/) av systemet. Finn minst tre forskjellige måter å gå tilbake til hjemmekatalogen din på.

INF2270. Minnehierarki

Hvorfor lære om maskinvare*?

Oppgave 1 - Linux kommandolinje (%)

Løsningsforslag for TDT4186 Operativsystemer

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

Innhold. Om denne boka 1. Kapittel 1 Operativsystemer og mellomvare 5

Internminne og Cache. RAM = Random Access Memory

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Eksamen DAT 103. Oppgave 2. Kandidatnr.: 145 1) B 2) B 3) A 4) A 5) D 6) C 7) B 8) A 9) A 10) D

Operativsystemet Internt

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

6105 Windows Server og datanett

UNIVERSITETET I OSLO

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Faglig kontakt under eksamen: Orestis Gkorgkas

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

Filer i Linux og Bourne-again shell

Eksamensoppgave i TDT4186 Operativsystemer

Hva er en fil logisk sett?

Filhåndtering. Fysisk organisering av filer. Hva er en fil logisk sett? Eksempel: Post (record) orientert fil. Kjell Åge Bringsrud INF 103

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

kan adressere et større område som RAM enn det som faktisk er tilgjengelig. Siden data kan plasseres i RAM og/eller på harddisken brukes begrepet

IS Introduksjon til informasjonssystemer

UNIVERSITETET I OSLO

Løsningsforslag eksamen TDT4160 høsten 2005

Dagens temaer. Dagens emner er hentet fra Englander kapittel 11 (side ) Repetisjon av viktige emner i CPU-design.

I multiple choice, sann, usann, i alle oppgaver der du kun skal krysse av, får du poeng for riktig svar, null poeng for feil svar og ikke svar.

Dagens tema. Flere teknikker for å øke hastigheten

TDT4258 Eksamen vår 2013

HØGSKOLEN I SØR-TRØNDELAG

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

AlgDat 10. Forelesning 2. Gunnar Misund

Flerveis søketrær og B-trær

Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer.

Dagens tema. Mer om cache-hukommelse Kapittel 6.5 i Computer Organisation and Architecture ) RAM. Typer, bruksområder og oppbygging 2008 ROM

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring

1. Introduksjon til operativsystemer

P1 P2 P3 P1 P2 P3 P1 P2. OS gjør Contex Switch fra P1 til P2

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hukommelseshierarki. 16/3 cache /3 virtuell hukommelse in 147, våren 1999 hukommelseshierarki 1

VMware ESX og krav til hardware

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser:

Logaritmiske sorteringsalgoritmer

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

IN1020. Minnehierarki

Løsningsforslag til eksamen i INF103

oppgavesett 4 INF1060 H16 Hans Petter Taugbøl Kragset Øystein Dale Christian Resell 27. september 2016 Institutt for informatikk, UiO

ytelsen til hukommelseshierarkier

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Et eksempel: Åtterspillet

Det matematisk-naturvitenskapelige fakultet

Intel Core i7. Omid Mirmotahari 4

Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

IN1020. Datamaskinarkitektur

Innhold. Oversikt over hukommelseshierakiet. Ulike typer minne. Innledning til cache. Konstruksjon av cache Hukommelseshierarki-1 1

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Løsningsforslag for TDT4186 Operativsystemer

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens temaer. Mer om cache-hukommelse (kapittel 6.5 i Computer Organisation and Architecture ) RAM ROM. Hukommelsesbusser

UNIVERSITETET I OSLO

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

dynamiske data dynamiske data statiske data program dynamiske data statiske data reservert program dynamiske data statiske data reservert program

Dagens temaer. Cache (repetisjon) Cache (repetisjon) Cache (repetisjon)

Transkript:

Tildeling av minne til prosesser

Tildeling av minne til en prosess Når en prosess opprettes har den et krav til hvor mye minne som skal reserveres for prosessen Memory Management System (MMS) i OS må da: Forsøke å finne et passende ledig minneområde som matcher kravet fra prosessen Tildele dette området til prosessen Merke minneområdet som opptatt slik at det beskyttes Hele minneområdet må frigis ved terminering av prosessen for å unngå minnelekkasje

Noen teknikker for tildeling av minne* Enkel, sammenhengende tildeling Partisjonert tildeling Virtuelt minne med paging Segmentert minnehåndtering *: OS kan også underveis i eksekveringen av et program tildele mer minne ved behov og frigi minne som ikke lenger er i bruk (garbage collection). Dynamisk håndtering av minnet i runtime omtales ikke her.

Enkel, sammenhengende tildeling Den enkleste formen for minnehåndtering En liten del av minnet settes av til å kjøre OS Hele resten av minnet er bare tilgjengelig for én prosess om gangen

Problemer med enkel, sammenhengende tildeling Bare én prosess er i minnet hver gang, vanskelig å få til ekte multitasking Multitasking kan oppnås ved å dumpe hele RAM for nåværende prosess ut på disk, og deretter lese inn hele RAM-innholdet for neste prosess * Er for langsomt til å kunne brukes generelt Kan brukes i systemer der det oftest bare er én prosess, typisk embedded og real-time systemer * Eldre Microsoft-systemer for PC (MS-DOS) brukte denne teknikken

Partisjonert tildeling Alle prosessene deler på det tilgjengelige minnet OS tildeler ett sammenhengende minneområde til hver prosess Hele minnet blir delt opp (partisjonert) i flere minneområder av ulik størrelse To typer partisjonert tildeling av minne: 1) Statisk (stiv) tildeling 2) Dynamisk (fleksibel) tildeling

Statisk (stiv) tildeling Hele minnet deles opp i faste områder av ulik størrelse: Oppdelingen gjøres ved oppstart av maskinen Oppdelingen kan deretter ikke endres (er statisk) Minne tildeles til nye prosesser med bruk av en minimum-fit - strategi: En prosess tildeles alltid minste ledige minneområde som er større enn minnekravet fra prosessen

Problemer med statisk tildeling Sløser alltid (!) med plass i minnet Max. antall prosesser = antall minneområder (!) Brukes ikke i moderne OS

Dynamisk (fleksibel) tildeling Bruker ikke faste minneområder Tildelingsstrategi til nye prosesser: Finn det minste ledige sammenhengende minneområdet som er større enn krav (minimum-fit) Tildél nøyaktig det som prosessen ber om, fra begynnelsen av minneområdet som er funnet

Fordeler med dynamisk tildeling Mer fleksibelt enn statisk tildeling Ingen fast øvre grense for antall prosesser Vil tilpasse seg automatisk både til systemer med mange små prosesser, og til systemer med få store prosesser.

Problem med dynamisk tildeling: Fragmentering Blir stadig flere ledige mindre områder i minnet: Hver gang vi setter av et minneområde blir det en liten rest igjen som ikke settes av til prosessen Minnet deles opp i flere og flere små fragmenter * Prosesser som krever mye minne kan måtte avvises: Finnes ikke stort nok sammenhengende minneområde Men summen av de små ledige minneområdene kan allikevel være større enn det prosessen krever *: Fragmenteringsproblemet oppstår også på disker, når store filer blir spredt rundt i mange små områder

Mulig løsning: Defragmentering Problemet med fragmentering av minnet kan løses ved å gjøre defragmentering Går jevnlig gjennom hele minnet og finner alle ledige minneområder under en viss størrelse Slår sammen disse områdene til større områder ved å flytte rundt på alt som er lagret i minnet

Problemer med defragmentering Defragmentering er en tung prosess Krever relativt mye kjøretid Medfører endringer i tilstand for alle prosessene Systemet fryser mens defragmenteringen pågår Brukes for disker, men er ikke vanlig brukt i minnehåndtering

Bedre løsning: Paging Deler opp hele primærminnet i småbiter av fast størrelse Hver småbit kalles for en page frame Typisk størrelse er 4096 Bytes = 4 KByte Tilsvarer den minste mengden av data som kan flyttes mellom RAM og disk under skriving/ lesing av data

Minnetildeling med paging Minne tildeles som et antall hele pages Minneområdet til en prosess blir liggende spredt i minnet Fragmenteringsproblemet løses ved å bruke ledige småbiter av RAM til å sette sammen hele minneområdet Paging brukes alltid sammen med virtuelt minne

Virtuelt * minne Hver prosess tildeles et sammenhengende tenkt (virtuelt) minneområde en lineær tabell med minne som kan indekseres fra start til slutt Prosessen aksesserer bare sitt eget minne ved å bruke virtuelle minneadresser, som er indekser i denne tabellen OS håndterer virtuelle minneadresser og tilordner dem til korrekte adresser i det fysiske primærminnet Egen maskinvare memory management units gjør automatisk oversettelse fra virtuell til fysisk minneaddresse * virtual (in computing): not physically existing but made by software to appear to do so

Noen fordeler med virtuelt minne Alle prosesser forholder seg kun til et eget (virtuelt) lineært adresserom, enklere for programmerere OS håndterer og skjuler den fysiske oppdelingen av minnet i for applikasjonene Bedre sikkerhet, prosessene kjenner ikke til minnet utenfor eget tildelt virtuelt minneområde

Virtuelt minne og paging Virtuelle minneområder deles inn i pages ( sider ) Page: En sammenhengende blokk med virtuelt minne * Det virkelige primærminnet deles opp i page frames ( siderammer ) et område av det fysiske minnet som kan lagre inneholdet i én enkelt virtuell page Hver virtuell page tilordnes en fysisk page frame OS-ets minnestyring sørger for at en prosess som adresserer en virtuell page får lest fra/skrevet til riktig page frame *: Størrelsen på en page er typisk 4K på Linux-systemer

Page tables ( sidetabeller ) Brukes av MMS for å oversette korrekt fra prosessenes virtuelle minneadresser til fysiske adresser i primærminnet Hvert element i tabellen lagrer informasjon om én virtuell page OS kan ha én stor pagetabell, én tabell for hver prosess, én for hvert segment av RAM, eller kombinasjoner av dette

Virtuelt minne er ubegrenset Alle maskiner har et begrenset fysisk primærminne Typisk 8-32 GB RAM for en relativt standard PC/Mac Operativsystemet kan håndtere mer virtuelt minne enn det fysisk er plass til i RAM Gjøres ved å lagre virtuelt minne som det ikke er plass til i fysisk RAM på sekundærminne (typisk en disk) i stedet

"Memory is like an orgasm. It's a lot better if you don't have to fake it." Seymour Cray, the father of supercomputing, commenting on virtual memory

Paging og swapping Hvis primærminnet ikke har plass til alt det virtuelle minnet som er satt av til prosessene, bruker MMS disken til midlertidig å lagre innholdet av RAM Det er alltid hele page frames med RAM som lagres En page i virtuelt minne vil lagres i sin helhet fysisk enten i en page frame i primærminnet eller på disk. Prosessen med å lese/skrive en page frame med RAM til/fra disk kalles for swapping

Page faults Pagetabellen lagrer også info. om status: En page ligger enten i RAM eller den er swappet ut til disk Hvis en page er i RAM, inneholder pagetabellen den fysiske RAM-adressen til page frame Hvis en page ikke er i RAM, vil lesing/skriving generere et avbrudd som kalles page fault : Starter en avbruddsrutine som henter riktig page frame fra disk og lagrer den korrekt i RAM Er mye mer tidkrevende enn å lese data fra RAM

Håndtering av page faults OS leser fra disk og inn i RAM den page frame som inneholder ønsket virtuell page Pagetabellen oppdateres med den fysiske RAMadressen til innlest frame Hvis det ikke er plass i RAM til pageframe som skal leses fra disk, må det gjøres en page replacement * En page i minnet velges ut for replacement Innholdet i utvalgt page skrives til disk Ønsket page leses fra disk og erstatter den som nettopp er skrevet ut *: På norsk: Skifte av sideinnhold

Page replacement algoritmer OS må ha en strategi en algoritme for å finne ut hvilken page i RAM som skal flyttes ut på disk når minnet er fullt og det må gjøres en page replacement Algoritmen må prøve å minimere antall (tidkrevende) page faults, og bør selv også være rask og effektiv Mulige valgstrategier: Page lengst i minnet tas ut (First-In-First-Out) Minst brukte page tas ut (krever bokholderi ) Prøv å forhindre nye page faults ( ta med naboer etc.)

Trashing Mange page faults kan gi en flaskehals i systemet Trashing : For mange prosesser bruker for mye RAM Maskinen bruker alt for mye tid på å overføre page frames frem og tilbake mellom RAM og disk Systemet blir svært tregt eller ubrukelig Trashing kan unngås ved å: Sette en øvre grense for antall prosesser Kjøpe mer RAM...

Segmentert minnehåndtering Gir ikke en prosess ett sammenhengende minneområde Det virtuelle minnet består i stedet av flere sammenhengende områder av ulik størrelse, minnesegmenter En prosess kan ha vilkårlig mange segmenter Et segment knyttes ofte til en logisk samling av data: Koden som svarer til en metode i et program Data som ligger lagret i en tabell/array i et program Minnesegmenter kan håndteres indivividuelt mht. tildeling, (bedre) beskyttelse, deling og frigivelse

Implementasjon av segmentert minne Prosessen ser minnet i form av en segmenttabell, som for hvert minnesegment inneholder: Starten på segmentet i minnet Lengden på segmentet Tilgangsinformasjon (delt/beskyttet...) Statusinformasjon (i RAM / swappet ut til disk etc.) Segmentert minne kan implementeres både med og uten bruk av paging Moderne CPU-er støtter segmentert minne i hardware

Segmentert minne med paging Segmenttabellen inneholder adresser i det virtuelle minnet Disse virtuelle minneadressene brukes igjen av systemet i en egen pagetabell for hvert segment, som for vanlig virtuelt minne Segmentering blir bare et ekstra lag med abstraksjon i minnehåndteringen Paging og page faults håndteres på samme måte som for vanlig virtuelt minne Vanlig løsning i moderne OS og maskinvare

Minnehåndtering i Linux for Intel-CPU Standard Linux bruker: Segmentert minnehåndtering med paging 4096 bytes pages Page replacement algoritme: Hver page frame har en verdi (en age ) som indikerer hvor ønskelig det er at den forblir i RAM age oppdateres jevnlig av MMS age øker ved mye aksess til page frame, avtar ellers Velger pages med lav age for swapping

Kommandoer for å se minnebruk i Linux Hele systemet: cat /proc/meminfo top free m vmstat ps aux sort rss gnome system monitor * Enkeltprosesser: ps v PID cat /proc/pid/maps *: Fint verktøy for f.eks. å overvåke stresstesting av et OS

En stresstest av Linux Utsetter systemet for ekstrem/unormal belastning Vil se om minne-, prosess- og feilhåndtering er robust Bruker et program som krever svært mye minne: En Java-implementasjon av Ackermanns funksjon Funksjonen har ekstremt dyp rekursjon og brukes bl.a. i standard testing ( benchmarking ) av kompilatorer Kjører shellscript som starter programmet hele tiden Observerer systemet etterhvert som prosesstabellen og minnet blir fullt, og alle CPU ene har maks belastning * *: Med bruk av gnome system monitor