Käyttöjärjestelmät VUOROTTAMINEN YKSI CPU Stallings, Luku 9 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-1
Mihin jäimmekään? Tähän mennessä: Ready-jono, valitse ensimmäinen Aikaviipaletekniikka (round-robin) Prioriteetitkin mainittiin Seuraavaksi: Vuorottamisen tasot CPU:n vuorottamisalgoritmeja KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-2
Vuorottamisympäristöt Eräajo Ajetaan vaikkapa yöllä Työn koko osataan arvioida esim. ajetaan joka yö, viikottain, kuukausittain Tapahtumaohjattu vuorottaminen OK Interaktiivinen Käyttäjä odottaa vastausta Ei harmainta aavistusta työn kestosta Aikaviipaletekniikka Reaaliaika Aikarajat Ohjelmoijakin miettii suorituskykyä KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-3
Tavoitteita: Laatu Samanarvoisille prosesseille sama palvelu Priorisointia saa harrastaa Turvakontrolli vs. palkanlaskenta Interaktiiviset vs. eräajojärjestelmät Vastausaika (response time) Työ annettu, milloin saadaan vastaus? Läpimenoaika (turnaround time) Työtä per aikayksikkö Ennustettavuus (predictability) "Ei sen näin pitkään pitäisi kestää" KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-4
Tavoitteita: Suorituskyky Ota järjestelmästä mahdollisimman paljon irti pidä CPU ja erityisesti I/O-laitteet puuhimassa käyttöaste (CPU utilisation) tärkeää moniajojärjestelmissä Tehokas ja reilu CPU:n käyttö läpimenoaste (throughput) läpimenoaika (turnaround time) Reaaliaikajärjestelmä pysyy aikataulussa Deadlinen ylitys voi olla vaarallista potilas kuolee, lentokone tippuu,... KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-5
Käyttöjärjestelmät MILLOIN VUOROTETAAN? KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-6
Milloin? Long-term Otetaanko uusi prosessi suoritettavaksi? Mahtuuko muistiin? Moniajoaste? Medium-term Milloin heittovaihdettu prosessi takaisin muistiin? Vapaata muistia? Short-term I/O Mille prosessille annetaan CPU? Minkä prosessin I/O-pyyntö palvellaan ensin? KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-7
Milloin? Kuva 9.1 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-8
KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 9
Milloin? Kuva 9.3 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-10
Long-term Scheduling Otetaanko uusi työ suoritettavaksi? milloin työstä tulee prosessi? saako koneeseen luoda uuden istunnon? Ratkaisevaa: moniajoaste paljon prosesseja -> kukin saa harvoin CPU:ta pyritään takaamaan riittävän tasokas palvelu sopiva suhde: CPU-sidonnaisuus, I/O-sidonnaisuus Milloin? joku prosessi päättynyt CPU:n käyttöaste pudonnut Mikä? First-Come-First-Serviced (FCFS) Joskus prioriteetteja: esim. työn koko, I/O-sidonnaisuus KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-11
Medium-Term Scheduling Liittyy heittovaihtoon sisäänheiton ajoitus prosessi tilassa Suspend&Ready tai Suspend&Wait Milloin? CPU:n käyttöaste laskenut vapaata muistitilaa runsaasti Mikä? koko ulosheittoaika prioriteetti KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-12
Short-Term Scheduling CPU:n vuorottaminen (dispatcher) yleisterminä vuorottaminen tarkoittaa juuri tätä Selvästi yleisempi kuin edelliset Milloin? Keskeytyksen yhteydessä Jokainen keskeytys ei aiheuta vuorottamista Kun prosessin kyky käyttää CPU:ta mennyt joutui Blocked-tilaan: I/O, synkronointi, poissulkeminen poikkeustilanne prosessi käyttänyt oman aikaviipaleensa suuremman prioriteetin työ valmis etenemään Mille? KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-13
Käyttöjärjestelmät PRIORITEETTI KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-14
Prioriteetti Suuremman prioriteetin prosessit ensin prioriteetti PCB:ssä / TCB:ssä Kullakin prioriteetilla oma Ready-jono lisää aina loppuun Vs. kaikki yhteisessä Ready-jonossa prioriteetti määrää paikan lisää prioriteetin mukaiseen paikkaan Nälkiintymisvaara vaihteleva prioriteetti prosessin ikä suoritushistoria KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-15
Prioriteettijonot Kuva 9.4 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-16
Milloin? Nonpreemptive Tapahtumaohjattu vuorottaminen Prosessi suorituksessa, kunnes se päättyy tai joutuu palvelupyyntönsä vuoksi Blocked-tilaan Preemptive Keskeyttävä vuorottaminen prosessi ei voi nälkiinnyttää muita Suoritus keskeytetään ja prosessi Ready-tilaan, vaikka voisikin käyttää CPU:ta aikaviipaletekniikka suuremman prioriteetin prosessi tuli Ready-jonoon pre-empt: mennä edelle, ottaa itselleen etuoikeuden nojalla KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-17
Käyttöjärjestelmät CPU:N VUOROTTAMIS- ALGORITMEJA KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-18
Algoritmit First-Come-First-Served FCFS Round Robin RR Virtual Round Robin VRR Shortest Process Next SPN Shortest Remaining Time SRT Highest Response Ratio Next HRRN Multilevel Feedback Fair Share Scheduling FSS KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-19
Esimerkkiprosessit Taulukko 9.4 Service Time = CPU:ssa kulutettu aika Esimerkeissä ei mietitä I/O:n vaikutusta KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-20
FCFS Kuva 9.5 Eräajo, tapahtumaohjattu, ei prioriteetteja Uusi prosessi Ready-jonon hännille Kun prosessi luopuu CPU:sta, vuorota jonon ensimmäiselle KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-21
FCFS Läpimenoaika riippuu suoritusjärjestyksestä, muiden koosta sekä CPU-sidonnaisuudesta Pienikin prosessi voi joutua odottamaan läpimenoajasta valtava osa odotusta Suosii CPU-sidonnaisia muille voi tulla pitkä odotusaika I/O-laitteet ehkä turhaan jouten I/O kuitenkin pullonkaula Järkevää ottaa mukaan prioriteetit koko, I/O-sidonnaisuus KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-22
RR Kuva 9.5 Aikaviipaletekniikka (q=1), keskeytyvä Kukin Ready-prosessi saa vuorollaan aikaviipaleen Vuorottaminen, kun viipale käytetty tai prosessi joutuu Blocked-tilaan KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-23
RR Kuva 9.5 Aikaviipaletekniikka q=4 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-24
RR Aikaviipaleen pituus lyhyt: prosessin vaihto vie CPU-aikaa pitkä: interaktiivisen työn vastausaika Suosii hieman CPU-sidonnaisia I/O-sidonnainen ei ehkä käytä koko viipaletta I/O-sidonnainen saa suhteessa harvemmin CPU:n Virtual RR Ready-jonon apujono (Auxiliary Ready Queue), jonne I/O-odotuksesta Aja ensin apujonossa olevat prosessit Viipale vain edellisellä kerralla käyttämättä jäänyt osa, sitten normaaliin Ready-jonoon KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-25
VRR Kuva 9.7 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-26
SPN Kuva 9.5 Tapahtumaohjattu Vuorota se, joka käyttää lyhimmän ajan CPU:ta kerrallaan I/O-sidonnaiset ensin KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-27
SPN Nälkiintymisvaara Iso jää aina pienten jalkoihin Isojen läpimenoaika vaikea ennustaa Erätyö: käynnistäjä arvioi työn kestoajan Jos työ laitettiin väärään eräajoluokkaan, KJ saattaa katkaista työn käynnistettävä uudelleen isompien luokassa Interaktiivinen: KJ laskee keskimääräistä CPU:n käyttöaikaa painottaa viimeeksi havaittuja aikoja, ks. kirja s 407 S n = T + (1 - )S n-1 esim = 0.8 Ei sovellu osituskäyttöympäristöön KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-28
SRT Kuva 9.5 Aikaviipaleversio edellisestä (keskeytyvä) Arvoitava prosessin jäljelläoleva ajantarve Ei interaktiiviseen ympäristöön KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-29
HRRN Minimoi läpimenoaikaa (huomioi historia) Vuorota se, joka ollut järjestelmässä kauimmin, ts. se, jolla suurin suhdeluku time spent waiting CPU + expected service time ------------------------------------------------------------ expected service time KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-30
HRRN Suosii hieman lyhyitä töitä Ei silti nälkiintymisvaaraa Dynaaminen prioriteetti Ready-jonossa odottelu kasvattaa prioriteettia Jäljelläolevaa aikaa ei voi tietää Arviot menneisyyden perusteella Käyttäjän antama arvio työn koosta Ei sovi interaktiiviseen ympäristöön KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-31
Multilevel Feedback Kuva 9.10 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-32
Feedback Dynaaminen prioriteetti Rankaisee pitkään pörränneitä prosesseja Useita Ready-jonoja RQ0 pura aikaviipaleittain, FCFS, siirrä seuraavaan jonoon RQ2..RQn-1 pura aikaviipaleittain, FCFS, siirrä srvaan jonoon RQn pura aikaviipaleittain, RR, pidä samassa jonossa Prosessi kulkeutuu lopulta RQn-jonoon, josta se aikanaan valmistuu Nälkiintymisvaara Vuorottaa alemmassa jonossa olevat aina ensin Useita variaatioita esim. alemmissa jonoissa pitempi aikaviipale palaa blocked-tilasta samaan jonoon KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-33
Feedback Kuva 9.5 Jonot RQ0, RQ1, RQ2 Aikaviipale q=1 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-34
Feedback Kuva 9.5 Jonot RQ0, RQ1, RQ2 Aikaviipale q=2 i ; 1, 2, 4, jne. Vaikutus, vrt. q=1 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-35
Yhteenveto Taulukko 9.3 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-36
KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 37
KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 38
Käyttöjärjestelmät UNIX SVR3 / BSD4.3 VUOROTTAMINEN KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-39
UNIX: Vuorottaminen Interaktiivinen ympäristö Ei varsinaista eräajoa, ei erätyöjonoja Pyrkii hyvään vastausaikaan Taustaprosesseilla huono prioriteetti Aikaviipaleet, Round-Robin Multilevel feedback Prioriteeteilla omat Ready-jonot Tyhjentää suurimman prioriteetin jonon ensin Dynaaminen prioriteetti -> ei nälkiintymistä KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-40
UNIX: Ready-jonot Tan01 10.11 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-41
UNIX: Prioriteetti Kiinteä perusprioriteetti sekä nice-arvo Käyttäjä voi pienentää prioriteettia nice-komennolla Pitää prioriteetin siististi tietyllä arvoalueella Laskee uuden prioriteetin sekunnin välein CPU:n käyttö vaikuttaa uuteen arvoon Käytti: prioriteetti putoaa Ei: prioriteetti kasvaa Suosii I/O-sidonnaisia prosesseja I/O-laitteiden tehokas työllistäminen KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-42
UNIX: Prioriteetti CPU_counter = CPU:n käyttö äskettäin laskuri PCB:ssä Älä rankaise liikaa aiemmasta käytöstä puolita ennen prioriteetin laskentaa CPU_counter = CPU_counter/2 Pri = Base + (CPU_counter/2)+ Nice Pieni arvo = suuri prioriteetti Esimerkissä Base=60, Nice = 0 Päivitä counter 60 kertaa/sek, Päivitä prioriteetti sekunnin välein KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-43
UNIX: Esimerkki Kuva 9.17 [Bach86 8.4] KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-44
Fair-Share Scheduling Tutki myös, kuka prosessin omistaa Ettei hulivili voi tukkia järjestelmää Käsittele käyttäjän prosesseja / säikeitä ryhmänä Vuorottelu edelleen prosessi- / säietasolla Pidettävä myös kirjaa, paljonko ryhmä saanut CPU:n kokonaisajasta (GCPU_counter) Ryhmällä voi olla paino W, joka määrää, millaisen osuuden se saa koko kakusta Käytössä joissain UNIX-järjestelmissä KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-45
FSS: Esimerkki Prioriteetin määrittäminen CPU_counter = CPU_counter/2 GCPU_counter = GCPU_counter/2 Pri = Base + CPU_counter/2 + GCPU_counter/4*W Esimerkissä Base = 60 W A = 0.5 ja W B+C = 0.5 Päivitä laskurit 60 kertaa sekunnissa Päivitä prioriteetti sekunnin välein KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-46
Kertauskysymyksiä Milloin vuorotetaan? Tapahtumaohjattu (non-preemtive) vs. keskeytyvä (pre-emptive) vuorottaminen Miten FCSF- ja Round-Robin algoritmit eroavat toisistaan? Millaisiin tilanteisiin ne sopivat? Mikä FSS algoritmin perusidea? Mitä hyötyä on käyttää prioriteetteja? Mitä hyötyä on vaihtelevan prioriteetin käytöstä? KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-47