Sisältöä SÄIKEET, SMP

Samankaltaiset tiedostot
Sisältöä SÄIKEET, SMP

SÄIKEET, SMP. Sisältöä. Stallings, Luku 4. Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden toteutus ytimessä

Prosessi perinteisesti

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

Käyttöjärjestelmät II. SMP, Mikroytimet. Prosessit yleensä. UNIX prosessit. UNIX SVR4 Prosessit. UNIX prosessin kuvaaja

Prosessit ja säikeet SMP, Mikroytimet W2K säikeet

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola

Processes and threads

KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen Stallings, Luku 4.1

Käyttöjärjestelmät II

Käyttöjärjestelmät II

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

u vapaakäyntisyys (reentrancy) u Yhteinen koodialue u kullakin oma data-alue, pino, PCB u osoitteet suhteellisia prosessin alun suhteen

Luento 3: PROSESSIT JA NIIDEN HALLINTA

Sisältöä PROSESSIT JA NIIDEN HALLINTA. Prosessi. Prosessi virtuaalimuistissa. Prosessi. Prosessi virtuaalimuistissa. Käyttöjärjestelmät

Käyttöjärjestelmät: prosessit

Prosessi virtuaalimuistissa PROSESSIT JA NIIDEN HALLINTA. Sisältöä. Prosessi virtuaalimuistissa. Prosessi. Prosessi. Käyttöjärjestelmät, Luento 4

PROSESSIT JA NIIDEN HALLINTA

Osio 3: Prosessit, siirräntä ja tiedostojärjestelmä

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

VUOROTTAMINEN SMP JA REAALIAIKAJÄRJESTELMÄT Linux, W2000

LUENTO 8. u erillisten koneiden ryväs (cluster) u hajautettu järjestelmä (distributed system) u erilliset I/O-prosessorit

Käyttöjärjestelmän rajapinnat. Siirräntä: Laiteajurit ja keskeytys. I/O-ohjain. I/O-ohjain. Siirtomenetelmät. Käyttöjärjestelmän rakenne

Käyttöjärjestelmän rajapinnat

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Jakso 8 Ohjelman toteutus järjestelmässä

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Käyttöjärjestelmät, 8 op

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Keskeiset KJ:n osa-alueet

Luento 8 Ohjelman toteutus järjestelmässä

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

2 Konekieli, aliohjelmat, keskeytykset

Moniprosessorijärjestelmä

Käyttöjärjestelmän rakenne

Moniprosessorijärjestelmä

VUOROTTAMINEN: SMP ja Reaaliaikajärjestelmät Linux, W2000

Keskeiset KJ:n osa-alueet. Keskeiset KJ:n osa-alueet. 1) Prosessi. 2) Muistinhallinta. Käyttöjärjestelmän rakenne. Eräs toteutus

Kurssin asema Käyttöjärjestelmät, 8 op. Kurssikirja. Kurssin tavoite. Kurssin rakenne: Kurssin suorittaminen. Käyttöjärjestelmät - Luento 1

Arto Salminen,

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Käyttöjärjestelmät II

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

Käyttöjärjestelmät II

Osio 2: Luennot 4-7 Muistinhallinta

Prosessit, säikeet, samanaikaisuus

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia

ltö Luento 6: VIRTUAALIMUISTI Luento 7: Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä Suoritus virtuaalimuistissa

Tervetuloa! (2 ov,, 4 op) KJ on tärkein tietokoneessa pörräävistä ohjelmista

YLEISTÄ KÄYTTÖJÄRJESTELMÄSTÄ

u Tietokone ilman käyttöjärjestelmää on kuin

Windows 2000 (eli W2K)

Käyttöjärjestelmät. Windows 2000 (eli W2K) W2K: Säikeet. W2K: Prosessi ja sen resurssit. Säietoteutuksia: Windows, Solaris, UNIX

Prosessi (4) Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Prosessin elinkaari (9)

Luento 6: VIRTUAALIMUISTI

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Luento 8 Ohjelman toteutus järjestelmässä

Johdantoa. Miksi rinnakkaisuutta? Laitteistoarkkitehtuureja. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Stallings, Lukua 2. KJ-I S2004 / Tiina Niklander, kalvot: Auvo Häkkinen 3-2. KJ-I I S2004 / Tiina Niklander, kalvot: Auvo Häkkinen 3-1

Prosessi (4) Suorituksessa olevan ohjelman esitysmuoto järjestelmässä. Jakso 8 Ohjelman suoritus järjestelmässä. Prosessin elinkaari (9)

Johdantoa. Andrews, Ch 1

Johdantoa. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

VUOROTTAMINEN YKSI CPU

Kurssin asema Käyttöjärjestelmät, 8 op. Siirtymävaiheen vastaavuudet. Kurssin tavoite. Kurssikirja. Kurssin rakenne:

Käyttöjärjestelmät, 8 op

Luento 2: LAITTEISTOSTA

ltöä rjestelmä Luento 2: LAITTEISTOSTA Tietokonejärjestelm KESKUSYKSIKKÖ Keskusyksikkö Kuva 1.1 KJ-I S2005 / Tiina Niklander & Auvo Häkkinen 2-1

Jakso 5 Suoritin ja väylä

Osio 2: Luennot 5-8 Muistinhallinta

IT K 1 45 K ä yt t öj ä rj estelmät

OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

Johdantoa. Miksi rinnakkaisuutta? Keskinäinen kommunikointi. Prosessit voivat häiritä toisiaan! Rinnakkaisuus - Samanaikaisuus

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

KJ:N KEHITTYMINEN JA YLLÄPITO

Osio 2: Luennot 4-7 Muistinhallinta YKSINKERTAINEN MUISTINHALLINTA. ltöä YLEISTÄ MUISTINHALLINNASTA. Looginen muisti.

Stallings, Luku 1. KJ-I S2043 / Tiina Niklander Auvo Häkkisen kalvojen pohjalta 2-2. KJ-I S2003 / Auvo Häkkinen 2-1

CUDA. Moniydinohjelmointi Mikko Honkonen

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Jakso 5 Suoritin ja väylä

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4)

OSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1

OSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Semaforit ja rinnakkaisuuden hallinta. Tuottajat ja kuluttajat. Lukijat ja kirjoittajat. Andrews 4.2, Rio 2004 / Auvo Häkkinen

Windows 2000 (eli W2K)

Käyttöjärjestelmät, Luento 6. Windows 2000 (eli W2K) W2K: Säikeet. W2K: Prosessi ja sen resurssit. Säietoteutuksia: Windows, UNIX

NTÄ. Luento 8: SIIRRÄNT. Osio 3: Siirräntä ja tiedostojärjestelmä. ltö. Yleistä siirrännästä. Siirtonopeuksia (teoreettisia) Kuva 11.1.

Transkriptio:

LUENTO 5 Sisältöä SÄIKEET, SMP Stallings, Luku 4 Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden toteutus ytimessä SMP Windowsin säikeet 1 2 Säikeet (multithreading) Prosessi voi jakautua yhteen tai useampaan säikeeseen, jotka yhtäaikaa Ready-jonossa Yhden prosessin säikeet käyttävät yhteistä koodia, data-aluetta ja resursseja sekä pääosaa prosessin kuvaajasta Säikeen luonti ja lopettaminen nopeampaa kuin prosessin Saman prosessin säikeiden vuorottaminen nopeampaa kuin eri prosessien vuorottaminen 3 PROSESSI vs SÄIE 4 Prosessi perinteisesti Prosessi nykyaikaisesti Resurssien omistaja, jolle allokoitu virtuaaliosoiteavaruus, eli suoritusympäristö prosessin kuva (image): PCB, koodi, data, pino resursseja muistia, tiedostoja, I/O-laitteita... Vuorottajan hallinnoima kokonaisuus - prosessi on ohjelman suoritus koneessa suoritus limittäin muiden prosessien kanssa prosessiin liittyy tila (Running, ) sekä prioriteetti Resurssien kirjanpidon yksikkö, omistaja virtuaaliosoiteavaruus, jossa prosessin kuva laitteiden varaus Suojauksen yksikkö muistinsuojaus prosessien välinen kommunikointi tdstot ja niiden pääsyoikeudet mutta Vuorottamisen yksikkö = Säie CPU suorittaa säikeitä, ei prosesseja Yksi koodi + resurssit, monta suoritusta Process, task 5 Thread, Lightweight process 6 Syksy 2006 / Luento 5 1

Prosessi ja säie Säie Yksiajo Moniajo MS-DOS??? Säikeellä oma tila (Running, Ready...) Säikeellä oma tallealue rekistereille mm. omat PC:n ja PSW:n arvot Säikeellä oma pino aliohjelmakutsuja ja paikallisia muuttujia varten ŁSäikeellä oma kuvaaja TCB, Thread Control Block vanha UNIX Solaris & Uudet 7 8 Yksi säie vs. Monta säiettä Säikeen tilat Perustilat: Running, Ready, Blocked kuten prosessilla Suspend-tila koskee aina koko prosessia liittyy heittovaihtoon osoiteavaruus prosessitason käsite mm. koodialue + globaali data yhteiskäytössä Kun prosessi joutuu Suspend-tilaan, joutuvat kaikki sen säikeet odottamaan Säikeen kuvaaja TCB tallealue rekistereille, prioriteetti, tila, 9 Kun prosessi lopetetaan, poistetaan samalla kaikki sen säikeet 10 Yhteiskäyttöiset resurssit Miksi säikeitä? Prosessin säikeet käyttävät yhteistä koodi- ja dataaluetta viite sivutauluun vain PCB:ssä mutta jokaisella oma suoritusaikainen pino Kun säie muuttaa data-aluetta (muuttujia), muutos näkyy kaikille prosessin säikeille Säikeen avaama tdsto avoinna myös muille prosessin säikeille tiedostokuvaajataulu vain PCB:ssä yhteinen luku/kirjoituspositio? 11 Säikeen luonti (> 10 x) nopeampaa kuin kokonaan uuden prosessin luonti Prosessin säikeiden vuorottaminen nopeampaa kuin prosessien vuorottaminen Kun säie odottaa, voidaan suorittaa jotain muuta saman prosessin säiettä Säikeen lopettaminen nopeampaa kuin prosessin lopettaminen Voi helpottaa ohjelmointityötä 12 Syksy 2006 / Luento 5 2

Miksi säikeitä? Resurssien jakaminen säikeiden välillä tehokasta oletus: yhteiskäyttöisiä Saman prosessin säikeiden välinen kommunikointi helppoa ja nopeaa yhteiskäyttöinen data-alue kaikilla pääsy globaaleihin muuttujiin säie hoitaa itse tiedon sovittuun paikkaan, toinen noutaa itse Miksi säikeitä? ei tarvita ytimen apua, ei siirtymisiä etuoik. tilaan 13 14 Mutta synkronointi ja poissulkeminen kokonaan ohjelmoijan vastuulla esim. Yhteisen tietorakenteen muuttaminen jos yksi muuttamassa, muut eivät saa käyttää jos väh. yksi käyttää, kukaan ei saa muuttaa esim. Tuottaja ja kuluttaja kuluttaja ei saa edetä ennenkuin tuottaja edennyt tiettyyn vaiheeseen RIO-kurssi Kuka hyötyy? Kuva 4.4 Sovellus, jossa selkeästi riippumattomia kokonaisuuksia ts. suoritusjärjestyksellä ei väliä ts. säikeillä ei synkronointitarvetta Kuka hyötyy? Esim: lähiverkon tdstopalvelija Käsiteltävä useita pyyntöjä lyhyessä ajassa Halvempaa luoda/tappaa kutakin pyyntöä kohden oma säie kuin oma prosessi SMP: prosessin säikeet voidaan suorittaa aidosti yhtäaikaa eri prosessoreilla Esim: komennot valikoista Yksi säie näyttää valikon ja lukee syötteen Toinen säie suorittaa edellistä komentoa Helpompi ohjelmoida kukin osa toteutettavissa omana säikeenä 15 16 Esimerkki: etäkutsu Kuva 4.3 Prosessi voi jakautua säikeisiin jos KJ:ssä toteutettu säikeet tai = KLT jos käytetään säiekirjastoa = ULT 17 Tan01 kuva 2-13 18 Syksy 2006 / Luento 5 3

Käyttäjätason säikeet KÄYTTÄJÄTASON SÄIKEET ULT, User Level Threads Ydin ei tiedä säikeistä vuorottaa vain prosesseja Sovellus käyttää säikeiden hallintaan säiekirjastoa kirjanpito, TCB:t Sovellus huolehtii itse säikeidensä vuorottamisen ohjelmoijan vastuulla ei käytä ytimen koodia ei keskeytysohjattua 19 20 Säiekirjaston perusrutiinit POSIX threads (pthreads) Karkea jako: Säikeen luominen kirjanpito säikeestä ja sen tilasta Säikeen etenemisen estäminen rekistereiden tallettaminen Säikeen etenemisen salliminen rekistereiden palauttaminen Säikeen lopettaminen } synkronointi 21 pthread-kirjastossa yli 60 funktiota pthread_create() parametrina funktio, josta suoritus alkaa pthread_exit() lopeta säikeen suoritus pthread_join() odota parametrina annetun säikeen loppumista Synkronointi, poissulkeminen (semaforit) pthread_mutex_init() / _destroy() pthread_mutex_lock() / _trylock() / _unlock() Ynnä muita funktioita sched_yield(): luovu vapaaehtoisesti CPU:sta 22 Esimerkki void main() { pthread_t thr1, thr2; char *msg1 = "Hello"; char *msg2 = "World"; pthread_create(&thr1, pthread_attr_default, (void*)&print_message_function,(void*)msg1); pthread_create(&thr2, pthread_attr_default, (void*)&print_message_function,(void*)msg2); exit(0); } void print_message_function(void *ptr){ char *message; message = (char *) ptr; printf("%s ", message); } 23 ULT-säikeen vs Prosessin tila KJ:n ydin ei tiedä ULTsäikeistä KJ vuorottaa prosessitasolla Ready-jonossa prosesseja aikaviipale prosessille säiekirjasto huolehtii säikeiden vuorottamisesta prosessin aikaviipaleen sisällä Jos ULT-säie odottaa palvelupyynnössä, prosessi joutuu Blockedtilaan mutta säiekirjaston kirjanpidossa säie edelleen Running-tilassa ULT- säikeen ja prosessin tila erillisiä 24 Syksy 2006 / Luento 5 4

ULT-säikeen vs Prosessin tila Mahdollisia tilan vaihtoja Kuva 4.7 25 Käyttäjätason säikeet Hyötyjä Vuorottaminen nopeaa ei KJ:n apua ei keskeytystä ei prosessinvaihtoa! Ohjelmoija voi valita sopivan vuorottamistavan KJ ei tunne sovelluksen tarpeita Sovellus siirrettävissä helposti ympäristöihin, joissa sama säiekirjasto Haittoja Kun säikeen palvelupyyntö aiheuttaa odotusta, kaikki muut saman prosessin säikeet odottavat Saman prosessin säikeet eivät voi olla suorituksessa usealla prosessorilla yhtäaikaa Ydin vuorottaa vain prosesseja! 27 YTIMEN SÄIKEET KLT, Kernel Level Threads 28 Säikeiden toteutus ytimessä Säikeiden hallinta kokonaan KJ:n ytimessä Toteutus ei käytä kirjastoa ohjelmoijalle näkyvä rajapinta voi olla silti sama kuin edellä palvelupyynnöt Ydin tietää säikeistä prosesseista PCB:t niiden säikeistä TCB:t Vuorottaminen KJ:n heiniä aikaviipale säikeelle Säikeiden toteutus ytimessä Hyötyjä Prosessin säikeitä voi olla yhtäaikaa suorituksessa eri prosessoreilla Jos säie Blocked- tilaan, muut prosessin säikeet voivat silti jatkaa Myös KJ-ytimen toteutus voi käyttää säikeitä Haittoja Säikeen vaihto vaatii aina 2 vaihetta: keskeytys + siirtyminen KJ:hin (-> etuoik. tila) vuorottaminen (->kjätila) Vaihto hitaampaa kuin kirjastoa käytettäessä ks. taulukko 4.1 29 30 Syksy 2006 / Luento 5 5

KLT-säikeen vs Prosessin tila KJ tietää säikeiden olemassaolosta KJ ylläpitää säiekuvaajia KJ vuorottaa säietasolla jos prosessin aikaviipaletta jäljellä, vuorota saman prosessin säikeitä tai koko aikaviipale säikeelle Jos KLT-säie odottaa palvelupyynnössä, prosessin muut säikeet voivat silti jatkaa KULTAINEN KESKITIE? 31 32 Solaris Yhdistää molempien parhaat piirteet Luonti käyttäjätilassa Synkronointi käyttäjätilassa Pääosa vuorottamisesta käyttäjätilassa Ohjelmoija voi liittää käyttäjätason säikeet ytimen säikeiksi haluamallaan tavalla 33 Symmetric MultiProcessors (SMP) 34 Flynnin jaottelu moniprosessorikoneille Michael J. Flynn, 1966 SISD: Single Instruction - Single Data yksi käsky, yksi data normaali CPU: yksi ALU, yksi CU, yksi MEM SIMD: Single Instruction - Multiple Data yksi käsky, monta data-alkiota taulukkoprosessori: monta erikoistunutta ALUa vektorisuoritin: vektorikonekäskyt, vektorirekisterit MISD: Multiple Instruction - Single Data Ei mielekäs MIMD: Multiple Instruction - Multiple Data monta käskyä ja monta dataa tiukasti kytketty: monta CPU:ta, yhteinen MEM löyhästi kytketty: monta CPU:ta, kullakin oma MEM 35 Moniprosessorikoneet cpu mem cpu LAN cpu uniprocessor Cpu1Cpu2Cpu3 mem multicomputer multiprocessor (Fig 4.8 [Stal05]) mem mem 36 Syksy 2006 / Luento 5 6

Master-slave vs. SMP Toinen jaottelu yhteisen muistin moniprosessorikoneille (NUMA) (non-uniform memory arch) 37 38 Kolmas jaottelu yhteisen muistin moniprosessorikoneille SMP: Symmetric Multiprocessing (NUMA) (NUMA) samalla lastulla vai ei? Useita suorittimia (CPU) Yhteinen muisti organisoitu lohkoihin useita yhtäaikaisia viittauksia 39 Yhteiset oheislaitteet Välimuistien yhteneväisyys (coherency)? (Fig. 4.9 [Stal 05]) 40 Huomioitava SMP KJ:ssä 1/2 Samanaikaisuuden hallinta (Ch 5-6, RIO) KJ voi olla suoritettavana usealla CPU:lla KJ:n oltava vapaakäyntinen (re-entrant) KJ:n tietorakenteiden käsittelyssä tarvitaan poissulkemista Vuorotettavana useita CPU:ita (Ch 10) KJ:kin voi olla suorituksessa yhtäaikaa eri CPU:illa saman prosessin säikeiden vuorottaminen Synkronointi, lukot (Ch 5-6, RIO) poissulkeminen ja tapahtumien järjestys Huomioitava SMP KJ:ssä 2/2 Muistinhallinta (Ch 7-8) Ulkoisten keskeytysten käsittely Vikasietoisuus: joku CPU voi pudota pois tästä ei tarvinnut murehtia yhden CPU:n kanssa! ollaanko vikasietoisia vai ei? miten? 41 42 Syksy 2006 / Luento 5 7