Käyttöjärjestelmät, Luent 11 LUENTO 11 Vurttaminen ja prsessien tilat VUOOTTAMINEN - YKI CPU tallings, Luku 9 1 Vurttamisympäristöt, työkurma Avin ja suljettu työkurma Eräaj ajetaan vaikkapa yöllä työn kk sataan arviida esim. ajetaan jka yö, viikttain, kuukausittain tapahtumahjattu vurttaminen OK kunhan kaikki saadaan tehtyä Interaktiivinen käyttäjä dttaa vastausta, npea vastaus hyvä vurttajalla ei harmainta aavistusta työn keststa aikaviipaletekniikka eaaliaika aikarajat hjelmijakin miettii surituskykyä ja millin KJ saa suritusvurn Deterministinen (suljettu) työkurma kaikki prsessit tunnetaan heräämistaajuudet tunnetaan Avin työkurma prsessien jukk vaihtelee ulkisten tapahtumien perusteella Hetergeeninen työkurma deterministinen + avin esim. lennn valvnta, lentpintjen hjaus arriving missiles pikkeus? vai deterministinen jka 100 ms? eräaj + interaktiivinen + reaaliaika miten svittaa yhteen jääkö avimille reaaliaikatöille tarpeeksi aikaa? jääkö KJ:lle tarpeeksi aikaa? Tavitteita: laatu Tbl 9. [tal0] amanarvisille prsesseille sama palvelu Pririsintia saa harrastaa turvakntrlli vs. palkanlaskenta KJ prsessit vs. käyttäjän svellukset reaaliaika prsessit vs. muut Interaktiiviset vs. eräajjärjestelmät Vastausaika (respnse time) työ annettu, millin saadaan vastaus? Läpimenaika (turnarund time) työtä per aikayksikkö Ennustettavuus (predictability) ei sen näin pitkään pitäisi kestää rskien keruu, muu kj-hallint Käyttäjän näkökulma Linux. O(1) vurnant yksy 00, Tiina Niklander 11-1
Käyttöjärjestelmät, Luent 11 Tavitteita: surituskyky Tbl 9. [tal0] Ota järjestelmästä mahdllisimman paljn irti pidä CPU ja erityisesti I/O-laitteet tuttavassa työssä krkea käyttöaste (CPU utilizatin) tärkeää mniajjärjestelmissä Tehkas ja reilu CPU:n käyttö läpimenaste, läpimenvu (thrughput, wrk flw) läpimenaika (turnarund time, respnse time) eaaliaikajärjestelmä pysyy aikataulussa Ylläpitäjän näkökulma Aikarajan (deadline) ylitys vi lla harmillista tai vaarallista Käyttäjän näkökulma kuvassa n häiriö, ääni/kuva epäsynkrnisia Tbl 9. (alasa) ptilas kulee, lentkne tippuu,... 8 MILLOIN VUOOTETAAN? 9 Millin? Lng-term tetaank uusi prsessi systeemiin? suritettavaksi? mahtuuk muistiin? riittääkö swap-tila? Medium-term millin (heittvaihdettu) muistiin? prsessi muistiin? vapaata muistia? mniajaste? hrt-term mille prsessille annetaan surittimelle? CPU? I/O minkä prsessin I/O pyyntö I/O-laitteelle? palvellaan ensin? 10 Lng-term cheduling Otetaank uusi työ suritettavaksi? millin työstä tulee prsessi? saak kneeseen luda uuden istunnn? atkaisevaa: mniajaste paljn prsesseja kukin saa harvin CPU:n js vähän muistia, niin nk parempi dttaa lng term vai medium term? pyritään takaamaan riittävän taskas palvelu spiva suhde: CPU- ja I/O-sidnnaiset työt? Millin? jku prsessi päättynyt / CPU:n käyttöaste pudnnut Mikä? First-Cme-First-erviced (FCF) jskus pririteetteja: esim. työn kk, I/O-sidnnaisuus Fig 9. [tal0] medium term? Fig 9. [tal0] 11 Medium-Term cheduling Liittyy heittvaihtn sisäänheitn ajitus prsessi tilassa uspend&eady tai uspend&wait Millin muistiin? CPU:n käyttöaste laskenut vapaata muistitilaa runsaasti Fig 9. [tal0] Mikä muistiin? kk (eli dttavan prsessin muistitarve) ulsheittaika (eli dtusaika levyllä) pririteetti Mikä muistista pis? ei sellainen, jlla tärkeä resurssi hallussa kriittinen vaihe? ei KJ prsessi? 1 yksy 00, Tiina Niklander 11 -
Käyttöjärjestelmät, Luent 11 hrt-term cheduling Fig 9. [tal0] CPU:n vurttaminen (scheduling, dispatching) yleisterminä vurttaminen tarkittaa juuri tätä elvästi yleisempi kuin edelliset Millin? keskeytyksen yhteydessä jkainen keskeytys ei aiheuta vurttamista kun nykyprsessin kyky käyttää suritinta mennyt jutui Blcked-tilaan: I/O, synkrninti, pissulkeminen pikkeustilanne prsessi käyttänyt man aikaviipaleensa suuremman pririteetin työ valmis etenemään Kenelle vur seuraavaksi? 1 Vurtuksen jnmalli 1 Pririteetti Fig 9. [tal0] PIOITEETTI uuremman pririteetin prsessit ensin pririteetti PCB:ssä / TCB:ssä Kullakin pririteetilla ma eady-jn lisää aina lppuun haku vi kestää, kun mnta jna Vs. yksi yhteinen eadyjnssa pririteetti määrää paikan npea haku (vain yksi jn) lisäys pririteetin mukaiseen paikkaan vi lla turhan mnimutkaista eli hidasta Nälkiintymisvaara vaihteleva pririteetti trjuu nälkiintymisen? prsessin ikä suritushistria vaihtelun rajat? 1 1 Pririteettijnt 1 Kiinteä ja vaihteleva pririteetti eaaliaikaprsessit KJ-prsessit Tavalliset user-prsessit high pri 0 1 1 18 19 10 11 19 lw pri missile avidance prcess flight surface cntrl kiinteä navigatin pri lad cntrl swapper cleaner kiinteä pri dttanut kauan jnssa calculatr (18-10) vaihteleva pri käyttänyt paljn CPU-aikaa (esim. kk aikaviipale) 18 yksy 00, Tiina Niklander 11 -
Käyttöjärjestelmät, Luent 11 Millin vurtus aktivituu? Nnpreemptive (estävä mniaj) tapahtumahjattu vurttaminen prsessi surituksessa, kunnes se päättyy tai jutuu palvelupyyntönsä vuksi blcked-tilaan suritusaikana vi silti lla keskeytyksiä ja KJ työtä! scheduler ei aktividu paitsi ehkä KJ-prsesseille? Preemptive (keskeytyvä mniaj) keskeyttävä vurttaminen prsessi ei vi nälkiinnyttää muita suritus keskeytetään ja prsessi eady-tilaan, vaikka visikin käyttää suritinta aikaviipaletekniikka suuremman pririteetin prsessi tuli eady-jnn pre-empt: mennä edelle, ttaa itselleen etuikeuden njalla 19 CPU:N VUOOTTAMIALGOITMEJA 0 Algritmit Esimerkkiprsessit (Tbl 9. [tal0]) First-Cme-First-erved und bin Virtual und bin hrtest Prcess Next hrtest emaining Time Highest espnse ati Next Multilevel Feedback FCF V PN T HN feedback ervice Time = CPU:ssa kulutettu aika Esimerkeissä ei mietitä I/O:n vaikutusta Fair hare cheduling F 1 FCF First Cme First erved (keskim.) cpu time fr B (Fig 9. [tal0]) arrival time fr B Eräaj, tapahtumahjattu, ei pririteetteja Uusi prsessi eady-jnn hännille Kun prsessi lupuu CPU:sta, vurta seuraava Ketä susii? Ketä ei? 9 1 1 keskim. 8. cmpletin time fr B FCF First Cme First erved Läpimenaika Fig 9. [tal0] riippuu suritusjärjestyksestä, muiden ksta sekä CPU-sidnnaisuudesta Pienikin prsessi vi jutua dttamaan läpimenajasta valtava sa dtusta Miksi? usii CPU-sidnnaisia muille vi tulla pitkä dtusaika I/O-laitteet ehkä turhaan juten I/O kuitenkin pullnkaula Järkevää ttaa mukaan pririteetit pririteetin perusta? prsessin kk (suritin aika)? I/O-sidnnaisuus? yksy 00, Tiina Niklander 11 -
Käyttöjärjestelmät, Luent 11 und bin (keskim.) (Fig 9. [tal0]) Aikaviipaletekniikka (q=1), keskeytyvä (preemptive) Kukin eady-prsessi saa vurllaan aikaviipaleen Vurttaminen, kun viipale käytetty tai kun prsessi jutuu Blcked-tilaan 1 1 1 keskim. 10.8 und bin Aikaviipaleen pituus lyhyt: prsessin vaihdt vievät CPU-aikaa pitkä: interaktiivisen työn vastausaika lyhyt, js yksi aikaviipale riittää usii hieman CPU-sidnnaisia I/O-sidnnainen ei ehkä käytä kk viipaletta I/O-sidnnainen saa suhteessa harvemmin CPU:n - miksi? Fig 9. [tal0] Virtual ready-jnn apujn (Auxiliary eady Queue), Fig 9. [tal0] jnne I/O-dtuksesta pririteetti I/O sidnnaisilla aja ensin apujnssa levat prsessit aikaviipale vain edellisellä kerralla käyttämättä jäänyt sa, sitten nrmaaliin eady-jnn aikaviipaleen vaikutus (keskim.) (Fig 9. [tal0]) 1 1 11 keskim. 10.0 Virtual :n jnmalli Aikaviipaletekniikka q = prsessin vaihtaikaa ei humiitu! usiik pitkä aikaviipale cpu- vai I/O-sidnnaisia? usiik pitkä aikaviipale lyhyitä vai pitkiä töitä? 8 PN hrtest Prcess Next (keskim.) Tapahtumahjattu (siis nn-preemptive) Vurta se, jka käyttää lyhimmän ajan CPU:ta kerrallaan I/O-sidnnaiset ensin mistä tietää? (Fig 9. [tal0]) 11 1 keskim.. 9 PN hrtest Prcess Next Nälkiintymisvaara is jää aina pienten jalkihin Isjen läpimenaika vaikea ennustaa Erätyö: käynnistäjä arvii työn kestajan js työ laitettiin väärään eräajlukkaan, KJ saattaa katkaista työn miksi? (kulutti liikaa aikaa estimaattiin nähden) käynnistettävä uudelleen ismpien lukassa Interaktiivinen: KJ laskee keskim. CPU:n käyttöaikaa painttaa viimeksi havaittuja aikja (T n-1 ) estimi estim estim n = αt n-1 + (1 - α) n-1 Ei svellu situskäyttöympäristöön esim α = 0.8 0 yksy 00, Tiina Niklander 11 -
Käyttöjärjestelmät, Luent 11 T hrtest emaining Time (keskim.) Aikaviipaleversi edellisestä (keskeytyvä) tilanne arviidaan uudelleen jka aikaviipaleelle Arviitava prsessin jäljellä leva ajantarve Ei svi interaktiiviseen ympäristöön (Fig 9. [tal0]) 1 1 keskim.. 1 HN Highest espnse ati Next (keskim.) Tapahtumahjattu (siis nn-preemptive) Minimi läpimenaikaa (humii histria) (Fig 9. [tal0]) Vurta se, jlla hunin suhteellinen vasteaika, ts. se, jlla suurin suhdeluku: time spent waiting CPU + expected service time respnse rati = ------------------------------------------------------------- expected service time 9 1 keskim. 8.0 (+)/ > (+)/ HN Highest espnse ati Next usii hieman lyhyitä töitä ei silti nälkiintymisvaaraa Dynaaminen pririteetti ready-jnssa dttelu kasvattaa pririteettia Jäljellä levaa aikaa ei vi tietää arvit menneisyyden perusteella käyttäjän antama arvi työn ksta ei svi interaktiiviseen ympäristöön Multilevel Feedback (Fig 9.10 [tal0]) Feedback Dynaaminen pririteetti ankaisee pitkään pörränneitä prsesseja, aikaviipalitu Useita eady-jnja Q0: pura aikaviipaleittain, FCF, siirrä seuraavaan jnn Q..Qn-1: pura aikaviipaleittain, FCF, siirrä seuraavaan jnn Qn: pura aikaviipaleittain,, pidä samassa jnssa Prsessi kulkeutuu lpulta Qn-jnn, jsta se aikanaan valmistuu Nälkiintymisvaara vurttaa alemmassa jnssa levat aina ensin Useita variaatiita Feedback q=1 1 1 1 1 1 (Fig 9. [tal0]) Jnt Q0, Q1, Q, Aikaviipale q=1 Ei vaadi etukäteisarviita CPU-ajan tarpeesta esim. alemmissa jnissa pitempi aikaviipale (esim. 1,,, ) palaa blcked-tilasta samaan jnn Pitkät työt vivat kestää kauan (keskim.) Virhe? 18 1 1 keskim. 10.0 yksy 00, Tiina Niklander 11 -
Käyttöjärjestelmät, Luent 11 Feedback q= i Virhe? 1 1 1 1 1 1 1 1 (Fig 9. [tal0]) (keskim.) keskim. 10. Yhteenvet Tbl 9. [tal0] Jnt Q0, Q1, Q,, Qi Aikaviipale q= i Vaikutus, vrt. q=1 Fig 9. [tal0] UNIX V / BD. VUOOTTAMINEN 9 UNIX: Vurttaminen Interaktiivinen ympäristö ei varsinaista eräaja, ei erätyöjnja at-kment hjelmien ajamiseksi myöhemminkin crntab jaksllisille (peridic) töille crn = chrngram deamn? tab = table Pyrkii hyvään vastausaikaan taustaprsesseilla hun pririteetti Aikaviipaleet, und-bin Multilevel feedback pririteeteilla mat eady-jnt tyhjentää suurimman pririteetin jnn ensin dynaaminen pririteetti ei nälkiintymistä 0 UNIX: eady-jnt UNIX: Pririteetti Kiinteä peruspririteetti sekä nice-arv käyttäjä vi pienentää pririteettia nice-kmennlla pitää pririteetin siististi tietyllä arvalueella Laskee uuden pririteetin sekunnin välein is aikaviipale! CPU:n käyttö vaikuttaa uuteen arvn käyttö: pririteetti putaa dttaa kauan: pririteetti kasvaa (Fig 10-11 [Tane01]) 1 usii I/O-sidnnaisia prsesseja tavite: I/O-laitteiden tehkas työllistäminen yksy 00, Tiina Niklander 11 -
Käyttöjärjestelmät, Luent 11 UNIX: multilevel feedback CPU_usage = CPU:n käyttö äskettäin laskuri PCB:ssä Älä rankaise liikaa aiemmasta käytöstä pulita ennen pririteetin laskentaa, ja sitten taas CPU_usage = CPU_usage/ Pri = Base + (CPU_usage/)+ Nice (js ei cpu_usage = 0, niin ei muutsta) Fig 9.1 [tal0] Pieni arv = suuri pririteetti Esimerkki Base=0, Nice = 0 päivitä cunter (CPU_usage) 0 kertaa/sek kelllaite keskeytys 1. ms välein? tanta: kenellä suritin keskeytyshetkellä? päivitä pririteetti sekunnin välein HUOM:. Ed [tal0] jissakin painksissa väritykset virheellisesti Fair-hare cheduling Tutki myös kuka prsessin mistaa (wner) ettei hulivili vi tukkia järjestelmää Käsittele yhden käyttäjän prsesseja / säikeitä ryhmänä ryhmän vaikutus nice termin asemesta vurttelu edelleen prsessi- / säietaslla pidettävä myös kirjaa paljnk ryhmä saanut CPU:n kknaisajasta (GCPU_cunter) ryhmällä vi lla pain W, jka määrää millaisen suuden se saa kk (cpu-aika) kakusta Käytössä useissa UNIX-järjestelmissä HP-UX, IBM AIX WLM, un laris M F - Fair-hare cheduling Pririteetin määrittäminen CPU_cunter = CPU_cunter/ GCPU_cunter = GCPU_cunter/ Pri = Base + CPU_cunter/ + GCPU_cunter/(*W grup ) Esimerkissä Base = 0 W A = 0. ja W B+C = 0. (W A + W B+C = 1) päivitä laskurit 0 kertaa sekunnissa päivitä pririteetti sekunnin välein is W grup pieni painarv GCPU_cunter:lla pieni Pri arv is pririteetti Kts. Fig 9.1 [tal0] ryhmä vi perustua käyttäjään tai prsessiin tai svellukseen yksy 00, Tiina Niklander 11-8