Datalogi 1F Forår 2003 OS[2]: Processor, tråde og skedulering Jørgen Sværke Hansen 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] 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] 3 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] 4 Tilstandsdiagram for en proces livscyklus Datalogi 1F: Operativsystemer[2] 5 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] 6 1
Process Control Block Processkift (kontekstskift) Datalogi 1F: Operativsystemer[2] 7 Datalogi 1F: Operativsystemer[2] 8 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] 9 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] 10 OS proceskøer Sammenhængen mellem køerne Datalogi 1F: Operativsystemer[2] 11 Datalogi 1F: Operativsystemer[2] 12 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 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] 13 Datalogi 1F: Operativsystemer[2] 14 UNIX pstree eksempel UNIX ps eksempel Datalogi 1F: Operativsystemer[2] 15 Datalogi 1F: Operativsystemer[2] 16 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] 17 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] 18 3
Producent-konsument problemet Producent-konsument via delt lager 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 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 Datalogi 1F: Operativsystemer[2] 19 Datalogi 1F: Operativsystemer[2] 20 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] 21 En proces med en eller flere tråde Datalogi 1F: Operativsystemer[2] 22 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 CPU skedulering Målet for CPU skedulering Forskellige skeduleringsstrategier: First come first served Shortest job first Round robin Prioritetsbaseret Flerniveaubaseret Datalogi 1F: Operativsystemer[2] 23 Datalogi 1F: Operativsystemer[2] 24 4
CPU skeduleringens formål Udnyt systemressourcer i multiprogrammeret system bedst/mest muligt: CPU Ydre enheder Sikre lave ventetider for brugere Procesafvikling består af et mix af CPU og I/O-perioder 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] 25 Datalogi 1F: Operativsystemer[2] 26 Fordeling af længden af CPU eksplosioner CPU skeduler Skeduleren vælger en proces til udførsel ud af en mængde af klare processer Valg kan foretages: 1. Når en kørende proces skifter til ventetilstand 2. Når en kørende proces skifter til klartilstanden 3. Når en ventende proces skifter bliver klar 4. Når en proces afsluttes Frivilligt processkift (nonpreemptive): 1 og 4 Tvungent processkift (preemptive): resten Datalogi 1F: Operativsystemer[2] 27 Datalogi 1F: Operativsystemer[2] 28 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] 29 First Come First Served (FCFS) Proces Processor periode P 1 24 P 2 3 P 3 3 Processerne ankommer i rækkefølgen: P 1, P 2, P 3 Gantt diagrammet for rækkefølgen er: 0 P 1 P 2 P 3 24 27 30 Ventetiden for P 1 = 0; P 2 = 24; P 3 = 27 Gennemsnitlig ventetid: (0 + 24 + 27)/3 = 17 Datalogi 1F: Operativsystemer[2] 30 5
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: τ n = α t + α τ Løbende gennemsnit 1 n ( ) n + 1 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] 31 Datalogi 1F: Operativsystemer[2] 32 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] 33 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] 34 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ø Flerniveau med feedback Eksempel Datalogi 1F: Operativsystemer[2] 35 Datalogi 1F: Operativsystemer[2] 36 6
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 Kilder Disse slides er baseret på SG03 samt de af forfatterne udviklede slides Datalogi 1F: Operativsystemer[2] 37 Datalogi 1F: Operativsystemer[2] 38 7