LUENTO 7 Käyttöjärjestelmät II VUOROTTAMINEN YKSI CPU Stallings, Ch 9 [Stal 05] 1
Mitä KJ-I:ssä / KJ-II:ssa? KJ-I Ready-jn, valitse ensimmäinen Aikaviipaletekniikka (rund-rbin) Pririteetitkin mainittiin Seuraavaksi KJ-II:ssa Vurttamisen tast CPU:n vurttamisalgritmeja Vurttaminen UNIXissa Yhden CPU:n ympäristössä (Ch 9) luent 7 SMP:ssä ja reaaliaikajärjestelmissä (Ch 10) luent 8 2
Vurttamisympäristöt, työkurma Eräaj u ajetaan vaikkapa yöllä u työn kk sataan arviida F esim. ajetaan jka yö, viikttain, kuukausittain u tapahtumahjattu vurttaminen OK F kunhan kaikki saadaan tehtyä Interaktiivinen u käyttäjä dttaa vastausta, npea vastaus hyvä u vurttajalla ei harmainta aavistusta työn keststa u aikaviipaletekniikka Reaaliaika u aikarajat u hjelmijakin miettii surituskykyä ja millin KJ saa suritusvurn 3
Avin ja suljettu työkurma Deterministinen (suljettu) työkurma u kaikki prsessit tunnetaan u heräämistaajuudet tunnetaan Avin työkurma u prsessien jukk vaihtelee ulkisten tapahtumien perusteella Hetergeeninen työkurma u deterministinen + avin F esim. lennn valvnta, lentpintjen hjaus F arriving missiles pikkeus? vai deterministinen jka 100 ms? u eräaj + interaktiivinen + reaaliaika u miten svittaa yhteen F jääkö avimille reaaliaikatöille tarpeeksi aikaa? F jääkö KJ:lle tarpeeksi aikaa? 4
Tavitteita: laatu Tbl 9.2 [Stal05] Samanarvisille prsesseille sama palvelu Pririsintia saa harrastaa u turvakntrlli vs. palkanlaskenta u KJ prsessit vs. käyttäjän svellukset u reaaliaika prsessit vs. muut Interaktiiviset vs. eräajjärjestelmät Vastausaika (respnse time) u työ annettu, millin saadaan vastaus? Läpimenaika (turnarund time) u työtä per aikayksikkö Ennustettavuus (predictability) u ei sen näin pitkään pitäisi kestää u rskien keruu, muu kj-hallint Linux 2.6 O(1) vurnant 5
Tavitteita: surituskyky Tbl 9.2 [Stal05] Ota järjestelmästä mahdllisimman paljn irti u pidä CPU ja erityisesti I/O-laitteet tuttavassa työssä F krkea käyttöaste (CPU utilizatin) u tärkeää mniajjärjestelmissä Tehkas ja reilu CPU:n käyttö u läpimenaste, läpimenvu (thrughput, wrk flw) u läpimenaika (turnarund time, respnse time) Reaaliaikajärjestelmä pysyy aikataulussa u deadlinen ylitys vi lla harmillista tai vaarallista F kuvassa n häiriö, ääni/kuva epäsynkrnisia F ptilas kulee, lentkne tippuu,... 6
Käyttöjärjestelmät II MILLOIN VUOROTETAAN? 7
Millin? Fig 9.2 [Stal05] Fig 9.3 [Stal05] Lng-term systeemiin? u tetaank uusi prsessi suritettavaksi? u mahtuuk muistiin? riittääkö swap-tila? Medium-term muistiin? u millin (heittvaihdettu) prsessi muistiin? u vapaata muistia? u mniajaste? Shrt-term surittimelle? u mille prsessille annetaan CPU? I/O I/O-laitteelle? u minkä prsessin I/O pyyntö palvellaan ensin? 8
Lng-term Scheduling Fig 9.2 [Stal05] Otetaank uusi työ suritettavaksi? u millin työstä tulee prsessi? u saak kneeseen luda uuden istunnn? Ratkaisevaa: mniajaste medium term? u paljn prsesseja kukin saa harvin CPU:n u js vähän muistia, niin nk parempi dttaa lng term vai medium term? Fig 9.3 [Stal05] u pyritään takaamaan riittävän taskas palvelu u spiva suhde: CPU- ja I/O-sidnnaiset työt? Millin? u jku prsessi päättynyt u CPU:n käyttöaste pudnnut Mikä? u First-Cme-First-Serviced (FCFS) u jskus pririteetteja: esim. työn kk, I/O-sidnnaisuus 9
Medium-Term Scheduling Liittyy heittvaihtn u sisäänheitn ajitus Fig 9.2 [Stal05] u prsessi tilassa Suspend&Ready tai Suspend&Wait Millin muistiin? u CPU:n käyttöaste laskenut u vapaata muistitilaa runsaasti Mikä muistiin? u kk (eli dttavan prsessin muistitarve) u ulsheittaika (eli dtusaika levyllä) u pririteetti Mikä muistista pis? u ei sellainen, jlla tärkeä resurssi hallussa F kriittinen vaihe? u ei KJ prsessi? 10
Shrt-Term Scheduling Fig 9.2 [Stal05] CPU:n vurttaminen (scheduling, dispatching) u yleisterminä vurttaminen tarkittaa juuri tätä Selvästi yleisempi kuin edelliset Millin? u keskeytyksen yhteydessä F jkainen keskeytys ei aiheuta vurttamista Kun nykyprsessin kyky käyttää suritinta mennyt u jutui Blcked-tilaan: I/O, synkrninti, pissulkeminen u pikkeustilanne u prsessi käyttänyt man aikaviipaleensa Suuremman pririteetin työ valmis etenemään Kenelle vur seuraavaksi? 11
Käyttöjärjestelmät II PRIORITEETTI 12
Pririteetti Suuremman pririteetin prsessit ensin u pririteetti PCB:ssä / TCB:ssä Kullakin pririteetilla ma Ready-jn u lisää aina lppuun u haku vi kestää, kun mnta jna Vs. yksi yhteinen Ready-jnssa u pririteetti määrää paikan u npea haku (vain yksi jn) u lisäys pririteetin mukaiseen paikkaan F vi lla turhan mnimutkaista eli hidasta Nälkiintymisvaara u vaihteleva pririteetti trjuu nälkiintymisen? F prsessin ikä F suritushistria F vaihtelun rajat? Fig 9.4 [Stal05] 13
Kiinteä ja vaihteleva pririteetti Reaaliaikaprsessit KJ-prsessit Tavalliset user-prsessit high pri 0 1 2 3 63 64 65 66 127 128 129 130 131 192 lw pri missile avidance prcess flight surface cntrl kiinteä navigatin pri lad cntrl swapper cleaner kiinteä pri dttanut kauan RR jnssa calculatr (128-140) vaihteleva pri käyttänyt paljn CPU-aikaa (esim. kk aikaviipale) 14
Millin vurtus aktivituu? Nnpreemptive u tapahtumahjattu vurttaminen u prsessi surituksessa, kunnes se päättyy tai jutuu palvelupyyntönsä vuksi blcked-tilaan u suritusaikana vi silti lla keskeytyksiä ja KJ työtä! F scheduler ei aktividu paitsi ehkä KJ-prsesseille? Preemptive u keskeyttävä vurttaminen F prsessi ei vi nälkiinnyttää muita u suritus keskeytetään ja prsessi Ready-tilaan, vaikka visikin käyttää suritinta F aikaviipaletekniikka F suuremman pririteetin prsessi tuli Ready-jnn pre-empt: mennä edelle, ttaa itselleen etuikeuden njalla 15
Käyttöjärjestelmät II CPU:N VUOROTTAMIS- ALGORITMEJA 16
Algritmit First-Cme-First-Served FCFS Rund Rbin RR Virtual Rund Rbin VRR Shrtest Prcess Next SPN Shrtest Remaining Time SRT Highest Respnse Rati Next HRRN Multilevel Feedback feedback Fair Share Scheduling FSS 17
Esimerkkiprsessit (Tbl 9.4 [Stal05]) Service Time = CPU:ssa kulutettu aika Esimerkeissä ei mietitä I/O:n vaikutusta 18
FCFS First Cme First Served S 3 6 4 5 2 4 (keskim.) cpu time fr B (Fig 9.5 [Stal05]) arrival time fr B R 3 7 9 12 12 keskim. 8.6 cmpletin time fr B Eräaj, tapahtumahjattu, ei pririteetteja Uusi prsessi Ready-jnn hännille Tbl 9.4 [Stal05] Kun prsessi lupuu CPU:sta, vurta seuraava Ketä susii? Ketä ei? 19
FCFS First Cme First Served Läpimenaika u riippuu suritusjärjestyksestä, Fig 9.5 [Stal05] muiden ksta sekä CPU-sidnnaisuudesta Pienikin prsessi vi jutua dttamaan u läpimenajasta valtava sa dtusta Susii CPU-sidnnaisia u muille vi tulla pitkä dtusaika u I/O-laitteet ehkä turhaan juten F I/O kuitenkin pullnkaula Järkevää ttaa mukaan pririteetit u pririteetin perusta? F prsessin kk (suritin aika)? F I/O-sidnnaisuus? 20
RR Rund Rbin S 3 6 4 5 2 R 4 16 13 14 7 4 (keskim.) (Fig 9.5 [Stal05]) keskim. 10.8 Aikaviipaletekniikka (q=1), keskeytyvä (preemptive) Kukin Ready-prsessi saa vurllaan aikaviipaleen Vurttaminen, kun viipale käytetty tai kun prsessi jutuu Blcked-tilaan 21
RR aikaviipaleen vaikutus S 3 6 4 5 2 4 (keskim.) (Fig 9.5 [Stal05]) R 3 15 7 14 11 keskim. 10.0 Aikaviipaletekniikka q = 4 u prsessin vaihtaikaa ei humiitu! Susiik pitkä aikaviipale cpu- vai I/O-sidnnaisia? Susiik pitkä aikaviipale lyhyitä vai pitkiä töitä? 22
RR Rund Rbin Aikaviipaleen pituus u lyhyt: prsessin vaihdt vievät CPU-aikaa u pitkä: interaktiivisen työn vastausaika lyhyt, js yksi aikaviipale riittää Susii hieman CPU-sidnnaisia u I/O-sidnnainen ei ehkä käytä kk viipaletta u I/O-sidnnainen saa suhteessa harvemmin CPU:n F miksi? Virtual RR u ready-jnn apujn (Auxiliary Ready Queue), jnne I/O-dtuksesta F pririteetti I/O sidnnaisilla u aja ensin apujnssa levat prsessit Fig 9.5 [Stal05] Fig 9.7 [Stal05] u aikaviipale vain edellisellä kerralla käyttämättä jäänyt sa, sitten nrmaaliin Ready-jnn 23
SPN Shrtest Prcess Next S 3 6 4 5 2 4 (keskim.) (Fig 9.5 [Stal05]) R 37 11 14 3 keskim. 7.6 Tapahtumahjattu (siis nn-preemptive) Vurta se, jka käyttää lyhimmän ajan CPU:ta kerrallaan u I/O-sidnnaiset ensin u mistä tietää? 24
SPN Shrtest Prcess Next Nälkiintymisvaara u is jää aina pienten jalkihin Isjen läpimenaika vaikea ennustaa Erätyö: käynnistäjä arvii työn kestajan u js työ laitettiin väärään eräajlukkaan, KJ saattaa katkaista työn F miksi? (kulutti liikaa aikaa estimaattiin nähden) F käynnistettävä uudelleen ismpien lukassa Interaktiivinen: KJ laskee keskim. CPU:n käyttöaikaa u painttaa viimeksi havaittuja aikja (T n-1 ) u estimi S n estim = αt n-1 + (1 - α)s n-1 estim esim α = 0.8 Ei svellu situskäyttöympäristöön 25
SRT Shrtest Remaining Time S 3 6 4 5 2 4 (keskim.) 4 Aikaviipaleversi edellisestä (keskeytyvä) u tilanne arviidaan uudelleen jka aikaviipaleelle Arviitava prsessin jäljellä leva ajantarve Ei svi interaktiiviseen ympäristöön 2 (Fig 9.5 [Stal05]) 5 5 R 3 13 4 14 2 keskim. 7.2 26
HRRN Highest Respnse Rati Next S 3 6 4 5 2 4 (keskim.) Tapahtumahjattu (siis nn-preemptive) Minimi läpimenaikaa (humii histria) Vurta se, jlla hunin suhteellinen vasteaika, ts. se, jlla suurin suhdeluku: 7 (Fig 9.5 [Stal05]) 5 time spent waiting CPU + expected service time respnse rati = ------------------------------------------------------------- expected service time 27 2 7/2 > 12/5 5 R 37 9 14 7 keskim. 8.0
HRRN Highest Respnse Rati Next Susii hieman lyhyitä töitä u ei silti nälkiintymisvaaraa Dynaaminen pririteetti u ready-jnssa dttelu kasvattaa pririteettia Jäljellä levaa aikaa ei vi tietää u arvit menneisyyden perusteella u käyttäjän antama arvi työn ksta F ei svi interaktiiviseen ympäristöön 28
Multilevel Feedback (Fig 9.10 [Stal05]) 29
Feedback Dynaaminen pririteetti u Rankaisee pitkään pörränneitä prsesseja, aikaviipalitu Useita Ready-jnja u RQ0: pura aikaviipaleittain, FCFS, siirrä seuraavaan jnn u RQ2..RQn-1: pura aikaviipaleittain, FCFS, siirrä seuraavaan jnn u RQn: pura aikaviipaleittain, RR, pidä samassa jnssa Prsessi kulkeutuu lpulta RQn-jnn, jsta se aikanaan valmistuu Nälkiintymisvaara u vurttaa alemmassa jnssa levat aina ensin Useita variaatiita u esim. alemmissa jnissa pitempi aikaviipale (esim. 1, 2, 4, ) u palaa blcked-tilasta samaan jnn 30
Feedback q=1 S 3 6 4 5 2 4 (keskim.) 1 2 3 1 2 3 4 5 6 1 2 3 4 1 2 3 4 5 1 2 Jnt RQ0, RQ1, RQ2, Aikaviipale q=1 (Fig 9.5 [Stal05]) Ei vaadi etukäteisarviita CPU-ajan tarpeesta Pitkät työt vivat kestää kauan R 4 18 12 13 3 keskim. 10.0 31
S 3 6 4 5 2 Feedback q=2 i 4 (keskim.) virhe 1 2 3 1 2 3 1 2 3 1 2 3 1 2 (Fig 9.5 [Stal05]) R 4 15 14 14 6 keskim. 10.6 Jnt RQ0, RQ1, RQ2,, RQi Aikaviipale q=2 i Vaikutus, vrt. q=1 Fig 9.5 [Stal05] 32
Yhteenvet Tbl 9.3 [Stal05]
Käyttöjärjestelmät II UNIX SVR3 / BSD4.3 VUOROTTAMINEN 34
UNIX: Vurttaminen Interaktiivinen ympäristö u ei varsinaista eräaja, ei erätyöjnja u at-kment hjelmien ajamiseksi myöhemminkin u crntab peridisille töille crn = chrngram deamn? tab = table Pyrkii hyvään vastausaikaan u taustaprsesseilla hun pririteetti Aikaviipaleet, Rund-Rbin Multilevel feedback u pririteeteilla mat Ready-jnt u tyhjentää suurimman pririteetin jnn ensin u dynaaminen pririteetti ei nälkiintymistä 35
UNIX: Ready-jnt (Fig 10-11 [Tane01]) 36
UNIX: Pririteetti Kiinteä peruspririteetti sekä nice-arv u käyttäjä vi pienentää pririteettia nice-kmennlla u pitää pririteetin siististi tietyllä arvalueella Laskee uuden pririteetin sekunnin välein u is aikaviipale! CPU:n käyttö vaikuttaa uuteen arvn u käyttö: pririteetti putaa u dttaa kauan: pririteetti kasvaa Susii I/O-sidnnaisia prsesseja u tavite: I/O-laitteiden tehkas työllistäminen 37
UNIX: multilevel feedback CPU_usage = CPU:n käyttö äskettäin u laskuri PCB:ssä Älä rankaise liikaa aiemmasta käytöstä u pulita ennen pririteetin laskentaa, ja sitten taas CPU_usage = CPU_usage/2 Pri = Base + (CPU_usage/2)+ Nice (js ei cpu_usage = 0, niin ei muutsta) Pieni arv = suuri pririteetti Esimerkki Fig 9.17 [Stal05] u Base=60, Nice = 0 u päivitä cunter (CPU_usage) 60 kertaa/sek F kelllaite keskeytys 16.7 ms välein? F tanta: kenellä suritin keskeytyshetkellä? u päivitä pririteetti sekunnin välein 38
Fair-Share Scheduling Tutki myös kuka prsessin mistaa (wner) u ettei hulivili vi tukkia järjestelmää Käsittele yhden käyttäjän prsesseja / säikeitä ryhmänä u ryhmän vaikutus nice termin asemesta u vurttelu edelleen prsessi- / säietaslla u pidettävä myös kirjaa paljnk ryhmä saanut CPU:n kknaisajasta (GCPU_cunter) u ryhmällä vi lla pain W, jka määrää millaisen suuden se saa kk (cpu-aika) kakusta Käytössä useissa UNIX-järjestelmissä u HP-UX, IBM AIX WLM, Sun Slaris SRM u ryhmä vi perustua käyttäjään tai prsessiin tai svellukseen 39
FSS - Fair-Share Scheduling Pririteetin määrittäminen CPU_cunter = CPU_cunter/2 GCPU_cunter = GCPU_cunter/2 is W grup pieni painarv GCPU_cunter:lla pieni Pri arv is pririteetti Pri = Base + CPU_cunter/2 + GCPU_cunter/(4*W grup ) Esimerkissä u Base = 60 Fig 9.16 [Stal05] u W A = 0.5 ja W B+C = 0.5 (W A + W B+C = 1) u päivitä laskurit 60 kertaa sekunnissa u päivitä pririteetti sekunnin välein 40
Kertauskysymyksiä Millin vurtetaan? Tapahtumahjattu (nn-preemtive) vs. keskeytyvä (pre-emptive) vurttaminen Miten FCSF ja Rund-Rbin algritmit eravat tisistaan? Millaisiin tilanteisiin ne spivat? Mikä FSS algritmin perusidea? Mitä hyötyä n käyttää pririteetteja? Mitä hyötyä n vaihtelevan pririteetin käytöstä? 41