Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal.

Lignende præsentationer


Præsentationer af emnet: "Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal."— Præsentationens transcript:

1 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..

2 I/o-tunge processer => multitasking Cpu:I/o: 20% 80% Mindst fem samtidige processer for at udnytte cpu-en

3 Sandsynlighedsmodel for cpu-udnyttelse Antal processerSandsynlighed for ledig cpu 10,8 20,8 * 0,8 = 0,64 50,8*0,8*0,8*0,8*0,8 = ca. 0,32 n0,8 i n'te Antagelser Tanenbaum s. 76-77: Alle processer har 80% ledighed Processers ledighed er indbyrdes uafhængig

4 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.

5 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)

6 Virtuelle vs. fysiske adresser Assembler: LOAD N R1 // [R1] <- [N] ADD R1 RO // R1 indeholder allerede 3 STORE 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;

7 Fysisk adr. = virtuel adr. + base LOAD N R1 // [R1] = [N+base] ADD R1 RO // R1 indeholder allerede 3 STORE R1 N // [N+base] = [R1] Her ligger processen rent faktisk Her tror processen den ligger base N N+base Cpu kan bruge et register med base som lægges til alle adresser. Forudsætninger: flere samtidige processer den enkelte proces lagres sammenhængende

8 "Swap disk" Hvis en proces helt (swapping) eller delvist (paging) midlertidigt er 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 blokke som reserveres til dette formål. Program Processkabelse proces swapping, paging RAM HD Dele af proces gemt på "swap disk"

9 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").

10 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. P05H?3 P=proces Startadr. Længde Hægte

11 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...

12 Hvilke processer skal der være ? kunde Over- tjener filosof kunde Besked: Jeg søger en plads ved bordet Filosofproces startes hvis der er plads Beskeder sendes tilbage med status ("spiser", "tænker") Opdeling i kunde/filosof påtvunget for at det skal ligne ehandels-server etc. ! I kan genbruge jeres gamle filosoffer

13 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? }..

14 Hvilke beskedkøer ? kunde Over- tjener filosof 1 beskedkø til alle indkommende beskeder 1 beskedkø per kunde til status m.m. Hvordan aftale kunde-afhængig beskedkø ? Forbedringer til at håndtere "alle pladser optaget" ?

15 Arrays og pointere char 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.

16 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); }


Download ppt "Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal."

Lignende præsentationer


Annoncer fra Google