380 likes | 516 Views
Datalogi 1F Forår 2003. OS[2]: Processor, tråde og skedulering Jørgen Sværke Hansen cyller@diku.dk. Planen for idag. Processer: Procesbegrebet Processkift Processers familieliv Kommunikerende processer Tråde En lettere form for parallelisme Skedulering
E N D
Datalogi 1FForår 2003 OS[2]: Processor, tråde og skedulering Jørgen Sværke Hansen cyller@diku.dk
Planen for idag • Processer: • Procesbegrebet • Processkift • Processers familieliv • Kommunikerende processer • Tråde • En lettere form for parallelisme • Skedulering • Hvordan udnyttes ressourcerne bedst muligt • Hvordan sikres lave ventetider Datalogi 1F: Operativsystemer[2]
Hvad er en proces? • Operativsystemet afvikler bruger- og systemprogrammer • Programmernes funktionalitet er specificeret en serie af instruktioner: • Eksekverbar kode • Højniveausprog og fortolker • En proces er et program under afvikling: • Specifikation • Køretidstilstand • Processer udføres sekventielt Datalogi 1F: Operativsystemer[2]
Livscyklus for en proces En proces P bevæger sig mellem følgende tilstande gennem sin levetid: ny: P er ved at blive oprettet kørende: P’s instruktioner bliver pt. udført ventende: P venter på resultat af en operation klar: P er klar til at blive udført men venter på CPU tid afsluttet: P er termineret Datalogi 1F: Operativsystemer[2]
Tilstandsdiagram for en proces´ livscyklus Datalogi 1F: Operativsystemer[2]
Hvad består en proces af? • En aktiv instans af et program: • Program kode (ens for alle instanser) • Program data • CPU registre • Systemressourcer: • Lager • Åbne filer • Bogføringsinformation: • Proces ID • Forbrug af systemressourcer Datalogi 1F: Operativsystemer[2]
Process Control Block Datalogi 1F: Operativsystemer[2]
Processkift (kontekstskift) Datalogi 1F: Operativsystemer[2]
Processkift (2) • Processkift er dyrt: • Umiddelbar omkostninger: • Opmagasinering/reetablering af CPU registre • Skift af datastrukturer for virtuel hukommelse • Evt. afbrydelseshåndtering • Afledte omkostninger: • CPU cache fyldt op med data fra gammel proces • Andre caches har lignende problemer (eks. TLB) • Hardware understøttelse af processkift: • CPU har flere registersæt • Intel hyperthreading (2 aktive processer per CPU) Datalogi 1F: Operativsystemer[2]
Hvor opholder processerne sig henne når de ikke er kørende? Når en proces ikke er aktiv, placeres dens PCB i en ventekø: Klar-kø: svarende til klar-tilstanden Ventekø: proces venter på hændelse: I/O-kø: typisk en kø for hver ydre enhed Synkroniseringskø: ved begrænset adgang til routiner kan det være nødvendigt at vente Datalogi 1F: Operativsystemer[2]
OS proceskøer Datalogi 1F: Operativsystemer[2]
Sammenhængen mellem køerne Datalogi 1F: Operativsystemer[2]
Processers familieliv • Processer (en forælder) kan starte nye processer (børn) • Et barn kan arve (dele af) systemressourcer fra forælder: • Åbne filer • Lagerområder • Et barn kan startes som en instans af et andet program (typisk arves ingenting fra forælder) • Udførsel af børn: • Forældre kan vente på afslutningen af børnene • Forældre og børn udføres samtidigt • Hvis en forælder dør: • Slås alle børn ihjel • Forælderrettighed overgives til stamfaderen Datalogi 1F: Operativsystemer[2]
UNIX eksempel • fork() kloner en proces: • Opretter kopi af arbejdslageret (kan ske dovent) • Returværdi af kaldet er: • 0 hvis det er en børneproces • Proces_id for børneproces hos kaldene forælder • wait() venter på en børneproces afsluttes: • Zombie processer – afsluttede processer hvor forælder endnu ikke har ventet på dem • execv(prog) udfører det nye program ”prog” Datalogi 1F: Operativsystemer[2]
UNIX pstree eksempel Datalogi 1F: Operativsystemer[2]
UNIX ps eksempel Datalogi 1F: Operativsystemer[2]
Samarbejdende processer • Uafhængige processer påvirkes ikke af udførslen af andre processer • Samarbejdende processer kan påvirke hinanden • Fordele ved samarbejde: • Dele data • Hurtigere udførsel af en opgave • Modularitet • Flere processer er naturligt til opgave Datalogi 1F: Operativsystemer[2]
Koordinering af processer:Inter Process Communication (IPC) • Sammenkædning af inddata med uddata: • UNIX pipes, f.eks.: gunzip –v text.txt.gz | less • Beskedudveksling: • Direkte: • send(453,besked): send besked til process med ID 453 • modtag(id, besked): modtag besked fra en eller anden • Indirekte (via postkasser): • Nemmere at etablere mange til mange relationer • Navngivne postkasser afkobler identifikation fra proces ID • Delt lager Datalogi 1F: Operativsystemer[2]
Producent-konsument problemet • Paradigme for samarbejdende processer: en producent proces skaber data som bruges af en konsument proces • Buffer plads: • Ubegrænset = ikke de store problemer • Begrænset = P’s hastighed skal afstemmes med Ks • Delt lager: • buffer: en tabel • in: peger på næste frie indgang i buffer • out: peger på næste færdige element Datalogi 1F: Operativsystemer[2]
item nextProduced; while (1) { while (((in + 1) % BUFFER_SIZE) == out) yield(); /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; } item nextConsumed; while (1) { while (in == out) yield(); /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; } buffer fuld betingelse buffer tom betingelse Producent-konsument via delt lager Datalogi 1F: Operativsystemer[2]
Tråde • ”Internt” i en proces kan der være flere parallelle arbejdsopgaver, f.eks.: • Web-server: hver forespørgsel kan behandles separat • Tekstbehandling: formatering af tekst sker samtidig med behandling af inddata • Tråde giver en proces mulighed for at have flere aktive programsekvenser, der deler processens systemressourcer: • Tråde er ”lette” • Processer er ”tunge” Datalogi 1F: Operativsystemer[2]
En proces med en eller flere tråde Datalogi 1F: Operativsystemer[2]
2 slags trådimplementation • Tråde på brugerniveau: • Implementeret ”inden i” en enkelt proces • Al administration af tråde sker i brugerprocessen • Lav omkostning ved skift/oprettelse/nedlæggelse af tråde • Kernetråde: • Kernekald ved trådadministration (dyrt) • Kernen kan skifte tråd ved blokerende systemkald • Kan udnytte flere processorer Datalogi 1F: Operativsystemer[2]
CPU skedulering • Målet for CPU skedulering • Forskellige skeduleringsstrategier: • First come first served • Shortest job first • Round robin • Prioritetsbaseret • Flerniveaubaseret Datalogi 1F: Operativsystemer[2]
CPU skeduleringens formål • Udnyt systemressourcer i multiprogram-meret system bedst/mest muligt: • CPU • Ydre enheder • Sikre lave ventetider for brugere • Procesafvikling består af et mix af CPU og I/O-perioder Datalogi 1F: Operativsystemer[2]
Proces’ CPU vs I/O brug • CPU bunden: bruger CPU mere end ydre enheder • I/O-bundet: bruger ydre enheder mere end CPU Datalogi 1F: Operativsystemer[2]
Fordeling af længden af CPU ”eksplosioner” Datalogi 1F: Operativsystemer[2]
CPU skeduler • Skeduleren vælger en proces til udførsel ud af en mængde af klare processer • Valg kan foretages: • Når en kørende proces skifter til ventetilstand • Når en kørende proces skifter til klartilstanden • Når en ventende proces skifter bliver klar • Når en proces afsluttes • Frivilligt processkift (nonpreemptive): 1 og 4 • Tvungent processkift (preemptive): resten Datalogi 1F: Operativsystemer[2]
Kriterier for CPU skedulering • CPU udnyttelse: MAKSIMERES • hvor mange % af tiden er CPU uden arbejde • Throughput: MAKSIMERES • antal processer færdige per minut • Udførselstid: MINIMERES • hvor lang tid tager det at udføre en given proces • Ventetid: MINIMERES • hvor lang tid har en proces opholdt sig i ventekøen • Responstid: MINIMERES • hvor langt tid er der imellem forespørgsel og reaktion Datalogi 1F: Operativsystemer[2]
P1 P2 P3 0 24 27 30 First Come First Served (FCFS) ProcesProcessor periode P1 24 P2 3 P3 3 • Processerne ankommer i rækkefølgen: P1 , P2 , P3 Gantt diagrammet for rækkefølgen er: • Ventetiden for P1 = 0; P2 = 24; P3 = 27 • Gennemsnitlig ventetid: (0 + 24 + 27)/3 = 17 Datalogi 1F: Operativsystemer[2]
Shortest Job First • Proces der har kortest tid tilbage udføres først: • Preemptive: hvis der ankommer en kortere proces senere afbrydes den kørende proces • Nonpreemptive: processer afbrydes ikke • Giver den korteste ventetid for en given mængde processer • Problem: det kræver at udførselstid kendes • Heuristikker til forudsigelse af næste processorperiode: • Løbende gennemsnit Datalogi 1F: Operativsystemer[2]
Round robin (RR) • En proces får adgang til CPU’en i en begrænset periode T (en tidsskive), f.eks. 100 ms • Når perioden udløber sættes processen bagest i klarkøen • Med n processer i klarkøen får hver proces en 1/n-del af CPU tiden, og skal aldrig vente længere end T(n-1). • Fastsættelse af T: • T stor betyder lange ventetider (gående mod FCFS) • T lav kan resultere i spildtid pga. mange kontekstskift Datalogi 1F: Operativsystemer[2]
Prioritetsbaseret afvikling • Hver proces tilknyttes et heltal, der angiver processens prioritet, f.eks.: 0 (høj) - 7 (lav) • Processen med den højeste prioritet afvikles først: (ved lighed bruge oftest RR) • SJF specialtilfælde hvor kortere køretid giver højere prioritet • Problem: Udsultning – processer med lav prioritet kommer aldrig til • Udsultning kan afhjælpes ved ældning af processer (prioritet øges over tid) Datalogi 1F: Operativsystemer[2]
Flerniveau skedulering • Klarkøen splittes op i flere køer, hvor hver kø håndterer en klasse af applikationer: • Forgrund (interaktive) • Baggrund (CPU-bundne) • Hver kø har sin egen skedulering: • Forgrund (RR) • Baggrund (SJF) • Fordeling af procestid mellem køer: • Prioritetsbaseret: forgrund altid før baggrund • Tidsskiver: forgrund får 80% af CPU, bagrund 20% Datalogi 1F: Operativsystemer[2]
Flerniveau med feedback • En proces kan skifte mellem niveauer, f.eks ved ældning • Processen overvåges løbende og placeres i en kø, der passer til observerede opførsel: • En proces i forgrundskøen, der ofte overskrider sin tidsskive flyttes til baggrundskø Datalogi 1F: Operativsystemer[2]
Flerniveau med feedbackEksempel Datalogi 1F: Operativsystemer[2]
Opsummering • Procesbegrebet: et program under udførsel, processkift, proceskøer • Tråde: parallelisme internt i processer • Skedulering: maksimer CPU udnyttelse, minimer ventetider, tvungent vs frivilligt processkift, forskellige skeduleringsalgoritmer Datalogi 1F: Operativsystemer[2]
Kilder • Disse slides er baseret på SG03 samt de af forfatterne udviklede slides Datalogi 1F: Operativsystemer[2]