1 / 38

Datalogi 1F Forår 2003

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

jalene
Download Presentation

Datalogi 1F Forår 2003

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Datalogi 1FForår 2003 OS[2]: Processor, tråde og skedulering Jørgen Sværke Hansen cyller@diku.dk

  2. 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]

  3. 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]

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

  5. Tilstandsdiagram for en proces´ livscyklus Datalogi 1F: Operativsystemer[2]

  6. 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]

  7. Process Control Block Datalogi 1F: Operativsystemer[2]

  8. Processkift (kontekstskift) Datalogi 1F: Operativsystemer[2]

  9. 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]

  10. 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]

  11. OS proceskøer Datalogi 1F: Operativsystemer[2]

  12. Sammenhængen mellem køerne Datalogi 1F: Operativsystemer[2]

  13. 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]

  14. 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]

  15. UNIX pstree eksempel Datalogi 1F: Operativsystemer[2]

  16. UNIX ps eksempel Datalogi 1F: Operativsystemer[2]

  17. 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]

  18. 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]

  19. 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]

  20. 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]

  21. 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]

  22. En proces med en eller flere tråde Datalogi 1F: Operativsystemer[2]

  23. 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]

  24. CPU skedulering • Målet for CPU skedulering • Forskellige skeduleringsstrategier: • First come first served • Shortest job first • Round robin • Prioritetsbaseret • Flerniveaubaseret Datalogi 1F: Operativsystemer[2]

  25. 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]

  26. 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]

  27. Fordeling af længden af CPU ”eksplosioner” Datalogi 1F: Operativsystemer[2]

  28. 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]

  29. 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]

  30. 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]

  31. 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]

  32. 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]

  33. 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]

  34. 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]

  35. 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]

  36. Flerniveau med feedbackEksempel Datalogi 1F: Operativsystemer[2]

  37. 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]

  38. Kilder • Disse slides er baseret på SG03 samt de af forfatterne udviklede slides Datalogi 1F: Operativsystemer[2]

More Related