Tråder Lars Vidar Magnusson October 11, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 1 / 28
Oversikt Tråder 1 Tråder Introduksjon Multithreading Prosesser og tråder Hastighetsøkning med multithreading 2 Multithreaded prosessmodell 3 Illustrere kjøring av tråder 4 Forskjellige typer tråder 5 Prosesser og tråder i Solaris og Linux Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 2 / 28
Tråder Introduksjon Introduksjon Et operativsystem med trådstøtte må skille mellom to ulike egenskaper med kjørende prosesser. Tilgang til resurser og virtuelt minne. En eksekveringssekvens som kan flettes sammen med andre prosesser. I et multithreaded operativsystem blir denne inndelingen representer av henholdsvis prosesser og tråder (eller light-weight processes) Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 3 / 28
Tråder Multithreading Multithreading Et multithreaded operativsystem støtter at flere tråder kjører samtidig i samme prosess. MS-DOS kan kjøre en tråd. Tradisjonelle UNIX implementasjoner støtter flere prosesser, men bare en tråd per prosess. Linux, Windows, Solaris, Mach og OS/2 er eksempler på operativsystem som støtter flere prosesser og flere tråder per prosess. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 4 / 28
Prosesser og tråder Tråder Prosesser og tråder Et diagram som illustrerer forskjellen mellom en tråd og flere tråder per prosess. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 5 / 28
Tråder Hastighetsøkning med multithreading Hastighetsøkning med multithreading Aamdahls lov beskriver forventet hastighetsøkning i forhold til å spre applikasjoner over flere tråder eller prosesser. Speedup = time to execute on a single processor time to execute on N processors Der N er antall prosessorer og τ er parallelliserbar kode. = 1 (1 τ) + τ N Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 6 / 28
Oversikt Multithreaded prosessmodell 1 Tråder 2 Multithreaded prosessmodell Prosesser Tråder Trådstatus Trådoperasjoner Singlethreaded og multithreaded prosessdesign Fordeler med tråder 3 Illustrere kjøring av tråder 4 Forskjellige typer tråder 5 Prosesser og tråder i Solaris og Linux Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 7 / 28
Multithreaded prosessmodell Prosesser Prosesser I et multithreaded operativsystem reduseres omfanget til hva som kalles en prosess. Hver prosess har et virtuelt minneområde som inneholder prosessens process image og deles av alle tråder. Prosessen styrer tilgang til prosessoren, andre prosesser, filer og I/O-resurser. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 8 / 28
Multithreaded prosessmodell Tråder Tråder En tråd inneholder data for å kjøre en sekvens med instruksjoner i tillegg til noen nye elementer. En statuskode for kjøringen e.g running and ready. Lagring av registere og annen relevant informasjon (thread context for å kunne bytte mellom tråder. En eller flere stacks for å ivareta program variable og parametere Mulighet for lokale variable. Tilgang til felles virtuelt minne. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 9 / 28
Multithreaded prosessmodell Trådstatus Trådstatus Som med prosesser kan tråder settes i forskjellig status, men det er ikke behov for en så kompleks modell e.g. ikke behov for suspended. Running Ready Blocked Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 10 / 28
Multithreaded prosessmodell Trådoperasjoner Trådoperasjoner Det er vanlig å kunne kontrollere status til en tråd med et sett med operasjoner. Spawn kan benyttes til å lage en ny tråd (i tillegg til den som blir laget når prosessen starter). Nye tråder får egen instruksjonspeker, eget registerlager og egne argumenter, og de blir så satt til ready-state og lagt til ready-køen. status. Block kan sette en tråd i blocked-status, som medfører at registerne, programteller og stack-pekere må lagres. Unblock kan hente frem en låst tråd og legge den til ready-køen. Finish kan brukes til å avslutte tråden og slette tilhørende data. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 11 / 28
Multithreaded prosessmodell Singlethreaded og multithreaded prosessdesign Singlethreaded og multithreaded prosessdesign Et diagram som illustrerer forskjellen mellom singlethreaded og multithreaded prosessdesign. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 12 / 28
Multithreaded prosessmodell Fordeler med tråder Fordeler med tråder Det er en rekke fordeler med å benytte seg av tråder. Det tar mindre tid å starte og stoppe en tråd enn en prosess. Det tar mindre tid å bytte mellom ulike tråder enn å bytte prosess. Tråder kan kommunisere uten å involvere kernelen, siden de deler det samme virtuelle minnet. Kan fordele applikasjoner over tråder (forgrunn, bakgrunn og moduler). Asynkron prosessering og ytelsesforbedring. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 13 / 28
Oversikt Illustrere kjøring av tråder 1 Tråder 2 Multithreaded prosessmodell 3 Illustrere kjøring av tråder RPC med en enkel tråd RPC med to tråder Multithreading med to prosesser og tre tråder 4 Forskjellige typer tråder 5 Prosesser og tråder i Solaris og Linux Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 14 / 28
Illustrere kjøring av tråder RPC med en enkel tråd RPC med en enkel tråd En illustrasjon av kjøringen av en tråd som utfører et Remote Procedure Call (RPC). Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 15 / 28
RPC med to tråder Illustrere kjøring av tråder RPC med to tråder En illustrasjon av kjøringen av to tråder som utfører hver sitt Remote Procedure Call (RPC). Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 16 / 28
Illustrere kjøring av tråder Multithreading med to prosesser og tre tråder Multithreading med to prosesser og tre tråder En illustrasjon av kjøringen av to prosesser med tilsammen tre tråde som kjører samtidig. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 17 / 28
Oversikt Forskjellige typer tråder 1 Tråder 2 Multithreaded prosessmodell 3 Illustrere kjøring av tråder 4 Forskjellige typer tråder User-level tråder Kernel-level tråder Kombinerte fremgangsmåter 5 Prosesser og tråder i Solaris og Linux Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 18 / 28
Forskjellige typer tråder User-level tråder User-level tråder User-level tråder er blir kontrollert i applikasjonen. Kernelen er ikke engang klar over eksistensen av tråder. Man trenger ikke gå i kernelmodus for å bytte mellom tråder. Man kan sette opp scheduling slik som man selv ønsker. Siden tråden bare eksisterer i applikasjonen trenger man ikke legge til endringer i kjernen. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 19 / 28
Forskjellige typer tråder Kernel-level tråder Kernel-level tråder Motsetningen til user-level tråder er kernel-level tråder kontrollert i sin helhet av kernelen. Tillater at tråder kan gjøre kall som låser uten å forstyrre andre tråder. Gjør det mulig å kjøre tråder parallelt hvis maskinvaren tillater det i.e. har flere kjerner. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 20 / 28
Forskjellige typer tråder Kombinerte fremgangsmåter Kombinerte fremgangsmåter Siden både user-level og kernel-level tråder har sine ulemper har man også prøvd seg på kombinerte fremgangsmåter. Tråder lages i applikasjonen men blir mappet mot et sett med underliggende kerneltråder. Mesteparten av jobben blir gjerne gjort i applikasjonen Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 21 / 28
Oversikt Prosesser og tråder i Solaris og Linux 1 Tråder 2 Multithreaded prosessmodell 3 Illustrere kjøring av tråder 4 Forskjellige typer tråder 5 Prosesser og tråder i Solaris og Linux Solaris arkitektur Solaris prosesser og tråder Tråder og prosesser i Linux Linux task Task status Task status diagram Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 22 / 28
Prosesser og tråder i Solaris og Linux Solaris arkitektur Solaris arkitektur Solaris sin arkitektur for prosesser og tråder er et eksempel på en kombinert fremgangsmåte. De har prosesser på omtrent samme måte som i tradisjonell UNIX. De støtter user-level tråder som er usynlige for kernelen. Leightweight prosesser fungerer en mapping mellom user-level trådene og de underliggende kernel-level trådene. De bruker kernel-level tråder som blir fordelt over tilgjengelige prosessorer. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 23 / 28
Prosesser og tråder i Solaris og Linux Solaris prosesser og tråder Solaris prosesser og tråder En illustrasjon av relasjonene mellom prosesser, user-level tråder, kernel-level tråder og leightweight prosesser i Solaris. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 24 / 28
Prosesser og tråder i Solaris og Linux Tråder og prosesser i Linux Tråder og prosesser i Linux Linux tar en unik fremgangsmåte for å representere prosesser og tråder. De skiller ikke mellom de to. De første utgavene av Linux, som med tradisjonell UNIX, støttet ikke multithreading. Portable Operating Systems Interface for UNIX (POSIX) inneholder et API for å lage å håndtere tråder (Pthreads). Tråder er bare en spesiell form for prosess. Tråder kan grupperes sammen og mappes til samme prosess slik at det ikke trengs å utføres tradisjonelle kontekstbytter. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 25 / 28
Prosesser og tråder i Solaris og Linux Linux task Linux task Både prosesser og tråder blir i Linux representert som en task som inneholder en rekke elementer. Status til prosessen Identifikatorer både for prosessen og gruppen Linker til forelderprosess og søskenprosesser. Pekere til minneområder... (1.7Kb i 32 bit) Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 26 / 28
Prosesser og tråder i Solaris og Linux Task status Task status I likhet med prosesser har en task i Linux ulike status. Running tilsvarer to tilstander; ready og executing. Interruptable er en blokkert status som tilsier at prosessen venter på en event, tilgang til en resurs eller et signal fra en annen prosess. Uninterruptable ligner på interruptable, men den kan ikke avbrytes med et signal. Stopped er når en prosess har blitt stoppet og bare kan settes i gang igjen fra annen prosess. Zombie er en state som har blitt stoppet, men av en eller annen grunn ikke kan fjernes. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 27 / 28
Prosesser og tråder i Solaris og Linux Task status diagram Task status diagram Et diagram over mulige prosessstatus i Linux. Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 28 / 28