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ä

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

Sisältöä SÄIKEET, SMP

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

Processes and threads

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

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

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

Käyttöjärjestelmät II

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

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

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

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

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

Käyttöjärjestelmät II

PROSESSIT JA NIIDEN HALLINTA

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

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

Käyttöjärjestelmät II

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

Käyttöjärjestelmät: prosessit

Prosessit, säikeet, samanaikaisuus

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

Windows 2000 (eli W2K)

Käyttöjärjestelmän rajapinnat

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

Jakso 8 Ohjelman toteutus järjestelmässä

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

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

Moniprosessorijärjestelmä

Jakso 8 Ohjelman toteutus järjestelmässä

Arto Salminen,

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

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

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

Moniprosessorijärjestelmä

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

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

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

Osio 2: Luennot 4-7 Muistinhallinta

2 Konekieli, aliohjelmat, keskeytykset

Keskeiset KJ:n osa-alueet

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

Graafisen käyttöliittymän ohjelmointi Syksy 2013

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

Tietokoneen toiminta, K Tavoitteet (4)

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

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

Luento 6: VIRTUAALIMUISTI

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

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

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

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Käyttöjärjestelmän rakenne

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

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

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

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

Luento 8 Ohjelman toteutus järjestelmässä

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

Luento 2: LAITTEISTOSTA

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

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

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

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

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

Windows 2000 (eli W2K)

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

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

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

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

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

Stallings, Luku 8.1. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 8-1

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

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

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

Osio 2: Luennot 5-8 Muistinhallinta

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

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

KJ:N KEHITTYMINEN JA YLLÄPITO

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

Johdantoa. Andrews, Ch 1

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

VUOROTTAMINEN YKSI CPU

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Luento 8 Ohjelman toteutus järjestelmässä. Tietokonejärjestelmä. Prosessi (4) Prosessi. Prosessin elinkaari (11) Prosessin vaihto (3)

Jakso 5 Suoritin ja väylä

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Osio 3: Siirräntä ja tiedostojärjestelmä

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

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

Transkriptio:

LUENTO 5 SÄIKEET, SMP Stallings, Luku 4 1 Sisältöä Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden toteutus ytimessä SMP Solaris säikeet 2 Syksy 2007, Tiina Niklander 5-1

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 Syksy 2007, Tiina Niklander 5-2

Prosessi perinteisesti 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 Process, task 5 Prosessi nykyaikaisesti 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 Thread, Lightweight process 6 Syksy 2007, Tiina Niklander 5-3

Prosessi ja säie Yksiajo MS-DOS??? Moniajo vanha UNIX Solaris & Uudet 7 Säie 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 8 Syksy 2007, Tiina Niklander 5-4

Yksi säie vs. Monta säiettä Säikeen kuvaaja TCB tallealue rekistereille, prioriteetti, tila, 9 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 Kun prosessi lopetetaan, poistetaan samalla kaikki sen säikeet 10 Syksy 2007, Tiina Niklander 5-5

Yhteiskäyttöiset resurssit 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 Miksi säikeitä? 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 2007, Tiina Niklander 5-6

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 ei tarvita ytimen apua, ei siirtymisiä etuoik. tilaan 13 Miksi säikeitä? 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 14 Syksy 2007, Tiina Niklander 5-7

Kuka hyötyy? Kuva 4.4 Sovellus, jossa selkeästi riippumattomia kokonaisuuksia ts. suoritusjärjestyksellä ei väliä ts. säikeillä ei synkronointitarvetta kukin osa toteutettavissa omana säikeenä 15 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 16 Syksy 2007, Tiina Niklander 5-8

Esimerkki: etäkutsu Kuva 4.3 17 Prosessi voi jakautua säikeisiin jos KJ:ssä toteutettu säikeet tai jos käytetään säiekirjastoa = KLT = ULT Tan01 kuva 2-13 18 Syksy 2007, Tiina Niklander 5-9

KÄYTTÄJÄTASON SÄIKEET ULT, User Level Threads 19 Käyttäjätason säikeet 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 20 Syksy 2007, Tiina Niklander 5-10

Säiekirjaston perusrutiinit 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 POSIX threads (pthreads) 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 Syksy 2007, Tiina Niklander 5-11

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 2007, Tiina Niklander 5-12

ULT-säikeen vs Prosessin tila Kuva 4.7 25 Mahdollisia tilan vaihtoja Syksy 2007, Tiina Niklander 5-13

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 Syksy 2007, Tiina Niklander 5-14

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 29 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 30 Syksy 2007, Tiina Niklander 5-15

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 31 KULTAINEN KESKITIE? 32 Syksy 2007, Tiina Niklander 5-16

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 Solaris: säikeet Prosessi PCB, prosessin osoiteavaruus (koodi, data), pino ULT (User Level Thread) - käyttäjätason säikeet säiekirjasto (pthreads, Solariksen oma) eivät näy KJ:lle, ohjelmoija hoitaa vuorottamisen Fig 4.15 [Stal05] LWP (Light Weight Processes) - kevytprosessit kokoelma ULT säikeitä, jotka näkyy ytimelle yhtenä nippuna (yksi tai useampi LWP säie) KLT: Kernel Level Thread ytimen säie vuorottaminen KJ:n heiniä KLT = LWP? (ei ihan, koska myös muita KLT säikeitä) 34 Syksy 2007, Tiina Niklander 5-17

Solaris 35 Solaris: ULT / LWP / KLT Joustavuus ohjelmoi by-best-possible-taste laitetason rinnakkaisuus vs. looginen rinnakkaisuus esim. ikkunointi säiekirjaston ei tarvitse aina huolehtia prosessin säikeiden vuorottamisesta Tehokkuus LWP: ei tarvitse kuormittaa KJ:tä ylim. säikeillä ULT: vuorottaminen nopeaa (kirjasto) Fig 4.15 [Stal05] KLT: Jos säie blokkaa, muut saman prosessin (tai KJ n ytimen) KLT-säikeet voivat silti jatkaa 36 Syksy 2007, Tiina Niklander 5-18

Solaris: prosessi (Fig 4.16 [Stal05]) 37 Solaris: ULT tilat Fig 4.17 upper [Stal05] wait for synchr wait for someone (ULT) dispatchable on LWP (running?) LWP tilat Onko ULT sidottu LWP:hen vai ei? (bound vs. unbound) ULT sleep => LWP odottaa vai valitsee toisen ULT:n? 38 Syksy 2007, Tiina Niklander 5-19

Solaris: LWP tilat ULT Active state Fig 4.17 lower [Stal05] 39 Solaris: SMP Normaalit SMP:n käyttötavat KJ vapaakäyntinen poissulkeminen hoidettu LWP:n voi sitoa (bind) tiettyyn CPU:hun vrt. W2K hard affinity välimuistin hyödyntäminen vanhat tiedot juuri tämän CPU:n välimuistissa vähemmän välimuistihuteja 40 Syksy 2007, Tiina Niklander 5-20

Solaris: keskeytys Keskeytys voi sattua milloin tahansa prosessi ei voi varautua yleensä poissulkeminen estämällä keskeytykset käsittelyn ajaksi Käsittely KLT-säikeenä prioriteetti, oma pino, oma talletusalue rekistereille poissulkeminen kuten muillakin säikeillä lukot, semaforit, ehdolliset muuttujat poissulje vain ne rakenteet, joita käsitellään odota tarvittaessa Keskeytyskäsittelysäikeillä suurin prioriteetti korkeamman prioriteetin keskeytys voi keskeyttää Keskeytyskäsittelysäikeet olemassa pysyvästi aikaa ei kulu luontiin / siivoamiseen 41 Symmetric MultiProcessors (SMP) 42 Syksy 2007, Tiina Niklander 5-21

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 43 Moniprosessorikoneet cpu mem cpu mem LAN uniprocessor Cpu1 Cpu2 Cpu3 cpu mem mem multiprocessor multicomputer (Fig 4.8 [Stal05]) 44 Syksy 2007, Tiina Niklander 5-22

Master-slave vs. SMP [Tane 01] [Tane 01] 45 Toinen jaottelu yhteisen muistin moniprosessorikoneille (NUMA) (non-uniform memory arch) [Tane 01] 46 Syksy 2007, Tiina Niklander 5-23

Kolmas jaottelu yhteisen muistin moniprosessorikoneille (NUMA) (NUMA) [Tane 01] 47 SMP: Symmetric Multiprocessing samalla lastulla vai ei? Useita suorittimia (CPU) Yhteinen muisti organisoitu lohkoihin useita yhtäaikaisia viittauksia Yhteiset oheislaitteet Välimuistien yhteneväisyys (coherency)? (Fig. 4.9 [Stal 05]) 48 Syksy 2007, Tiina Niklander 5-24

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 49 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? 50 Syksy 2007, Tiina Niklander 5-25