swapping og paging

16
Swapping og paging processer (swapping) eller dele af processer (pagin dslager og fjernlager. side skal arbejdslager rumme alle processers ede aht. hurtig overførsel af instruktioner og data en side har arbejdslageret ikke plads nok til alle e ! Processer der alligevel ikke kører kan flyttes .. l af procesbillede, der alligevel ikke bruges, kan

Upload: herrod-warren

Post on 30-Dec-2015

37 views

Category:

Documents


2 download

DESCRIPTION

Swapping og paging. Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal arbejdslager rumme alle processers procesbillede aht. hurtig overførsel af instruktioner og data til CPU. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Swapping og paging

Swapping og paging

Flytning af processer (swapping) eller dele af processer (paging)mellem arbejdslager og fjernlager.

Baggrund:• På den ene side skal arbejdslager rumme alle processers procesbillede aht. hurtig overførsel af instruktioner og data til CPU. • På den anden side har arbejdslageret ikke plads nok til alle processerne !

Ide / håb:• Swapping: Processer der alligevel ikke kører kan flyttes ..• Paging: Del af procesbillede, der alligevel ikke bruges, kan flyttes ..

Page 2: Swapping og paging

I/o-tunge processer => multitasking

Cpu: I/o: 20% 80%

Mindst fem samtidige processerfor at udnytte cpu-en

Page 3: Swapping og paging

Sandsynlighedsmodel for cpu-udnyttelse

Antal processer Sandsynlighed for ledig cpu

1 0,8

2 0,8 * 0,8 = 0,64

5 0,8*0,8*0,8*0,8*0,8 = ca. 0,32

n 0,8 i n'te

Antagelser Tanenbaum s. 76-77:• Alle processer har 80% ledighed• Processers ledighed er indbyrdes uafhængig

Page 4: Swapping og paging

Konklusion på model

Vigtigt at få plads til mange processer i arbejdslager.• Køb ekstra RAM !• Udnyt hele arbejdslageret.• Swapping.• Paging.• Optimer ved at processer med samme program deles om tekst-segment• Optimer ved at bruge multitrådning.

Page 5: Swapping og paging

Udnyt hele arbejdslageret

Processer vokser • stak-segment: rekursive procedurekald. • data-segment: plads til data• f.eks. et tekstbehandlingsprogram som bruges til et redigere et dokument som bliver større og større

Ikke nok RAM til at alle processer på forhånd kan allokeres "nok" RAM.

Dynamisk allokering af plads til processer:• en proces kan tildeles mere plads i løbet af dens liv• (men i rimeligt store portioner ad gangen)

Page 6: Swapping og paging

Virtuelle vs. fysiske adresser

Assembler:LOAD N R1 // [R1] <- [N] ADD R1 RO // R1 indeholder allerede 3STORE R1 N // [N] <- [R1]

Alle processer tror de har maskinen for sig selv • I assembler/maskin-program er adressen på variablen i lagt fast en gang for alle, ved oversættelsen.• Udgør den virtuelle adresse på variablen !

Processerne deles rent faktisk om cpu og RAM, • derfor skelnes mellem virtuel adresse og fysisk adresse.

C:i = i+3;

Page 7: Swapping og paging

Fysisk adr. = virtuel adr. + base

LOAD N R1 // [R1] = [N+base] ADD R1 RO // R1 indeholder allerede 3STORE R1 N // [N+base] = [R1]

Her ligger processen

rent faktisk

Her tror processen den ligger

base

N

N+baseCpu kan bruge et registermed base som lægges tilalle adresser.

Forudsætninger:• flere samtidige processer• den enkelte proces lagres sammenhængende

Page 8: Swapping og paging

"Swap disk"

Hvis en proces helt (swapping) eller delvist (paging) midlertidigter slettet fra arbejdslageret, skal stak- og data-segmenterne gemmes på harddisken. (Evt. også tekst-segment).

"Swap disk" ell. "swap space" er Linux-slang for et antal blokkesom reserveres til dette formål.

ProgramProcesskabelse

proces

swapping,paging

RAM HD

Dele af procesgemt på "swap disk"

Page 9: Swapping og paging

Problemer som skal løses ved swapping

Finde plads i arbejdsplager til nye og ind-swappede processer

Finde plads på swapdisk til ud-swappede processer

Hvis et operativsystem bruger swapping uden paging allokeres sammenhængende plads i arbejdslageret.• Hurtigere programafvikling (register med offset tilstrækkelig) • Dårlig udnyttelse af arbejdslager (mange "huller").

Page 10: Swapping og paging

Lageradministration med hægtede lister

Bruges til allokering af sammenhængende plads i arbejdslageret til ny eller ind-swappet proces

((Kan også bruges til at holde styr på data-segmentet for den

enkelte proces))

Valgmulighed mellem first-fit, next-fit, best-fit, m.fl.

P 0 5 H ? 3

P=procesStartadr.

LængdeHægte

Page 11: Swapping og paging

Opgave 1: overtjeneren

1. (Svær) Modificer og udvid din løsning af filosofproblemet med et overtjenerprogram og et kundeprogram.

Ideen med opgaven er at du skal lave et program som kan håndtere flere samtidige klienter, som tilgår de samme ressourcer - i forenklet form det samme problem som skal løses af en webserver med en e-handelsløsning.

I opgaven er overtjenerens formål at modtage kunder. Overtjeneren er den første proces der startes. Derefter startes et eller flere kundeprogrammer. Hvert kundeprogram sender en besked (via en beskedkø) til overtjeneren gående ud på at kunden gerne vil spise.

..

Page 12: Swapping og paging

Hvilke processer skal der være ?

kundeOver-tjener

filosof filosof

kunde

Besked:Jeg søger enplads ved bordet

Filosofprocesstartes hvis der er plads

Beskedersendes tilbagemed status("spiser", "tænker")

Opdeling i kunde/filosof • påtvunget for at det skal ligne ehandels-server etc. !• I kan genbruge jeres gamle filosoffer

Page 13: Swapping og paging

Overtjener: lytter til beskedkø

// overtjener.c

..{opret beskedkø} // navn på kø kendt af kunde ..while (TRUE) { // eller while(OPEN) ?? msgrcv(..); // bloker indtil der er besked help_customer(..);};..help_customer(..) { // parametre ? if ({der er ikke plads}) {afvis kunden}; // kan forbedres ! else { {marker plads som optaget}; // og evt. antal retter pid = fork(); switch(pid) { Case -1: {error}; exit(1); Case 0: {start filosof} // nyt program eller p-kald? } }}..

Page 14: Swapping og paging

Hvilke beskedkøer ?

kundeOver-tjener

filosof

1 beskedkø til alleindkommende beskeder

1 beskedkø per kundetil status m.m.

• Hvordan aftale kunde-afhængig beskedkø ?• Forbedringer til at håndtere "alle pladser optaget" ?

Page 15: Swapping og paging

Arrays og pointerechar txt[] = "hello world!\n";; // skaber txt[0].. txt[14] samt txt // hvor txt er adressen på txt[0]

putchar(txt[0]); // vi vil se det 1. Tegn !putchar(txt[13]); // vi vil se det 14. Tegn ! // txt[13] findes ved at lægge 13 til txt

putchar(*(txt)) // samme som txt[0]putchar(*(txt + 13)) // samme som txt[13]

• Navnet på et array (txt) er en adresse, nemlig adressen på array-ets første element (txt[0]) og har således lighedspunkter med en pointer.

• C tillader "pointer-aritmetik" både med pointere og arraynavne.

Page 16: Swapping og paging

Beregning af længden af en streng

// naturligt program

int strlen(char s[]) { int pos; for (pos=0; s[pos] != '\0'; pos++); // s + pos lægges sammen i hver iteration return pos;}

// optimeret med pointer-aritmetik

int strlen(char *s) { char *pos; for (pos = s; *pos != '\0'; pos++); // .. hvilket er sparet væk her ! return (pos - s);}