1 / 47

VUOROTTAMINEN YKSI CPU Stallings, Luku 9

Käyttöjärjestelmät. VUOROTTAMINEN YKSI CPU Stallings, Luku 9. Tähän mennessä: Ready-jono, valitse ensimmäinen Aikaviipaletekniikka (round-robin) Prioriteetitkin mainittiin Seuraavaksi: Vuorottamisen tasot CPU:n v uorottamisalgoritmeja. Mihin jäimmekään?. Eräajo

mio
Download Presentation

VUOROTTAMINEN YKSI CPU Stallings, Luku 9

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Käyttöjärjestelmät VUOROTTAMINEN YKSI CPU Stallings, Luku 9 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  2. Tähän mennessä: Ready-jono, valitse ensimmäinen Aikaviipaletekniikka (round-robin) Prioriteetitkin mainittiin Seuraavaksi: Vuorottamisen tasot CPU:n vuorottamisalgoritmeja Mihin jäimmekään? KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  3. 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ä Vuorottamisympäristöt KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  4. 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, CT50A2601 / Heikki Kälviäinen

  5. 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, CT50A2601 / Heikki Kälviäinen

  6. Käyttöjärjestelmät MILLOIN VUOROTETAAN? KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  7. Milloin? • Long-term • Otetaanko uusi prosessi suoritettavaksi? • Mahtuuko muistiin? • Moniajoaste? • Medium-term • Milloin heittovaihdettu prosessi takaisin muistiin? • Vapaata muistia? • Short-term • Mille prosessille annetaan CPU? • I/O • Minkä prosessin I/O-pyyntö palvellaan ensin? KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  8. Milloin? Kuva 9.1 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  9. KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  10. Milloin? Kuva 9.3 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  11. 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, CT50A2601 / Heikki Kälviäinen

  12. 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, CT50A2601 / Heikki Kälviäinen

  13. 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, CT50A2601 / Heikki Kälviäinen

  14. Käyttöjärjestelmät PRIORITEETTI KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  15. 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, CT50A2601 / Heikki Kälviäinen

  16. Prioriteettijonot Kuva 9.4 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  17. 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, CT50A2601 / Heikki Kälviäinen

  18. Käyttöjärjestelmät CPU:N VUOROTTAMIS- ALGORITMEJA KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  19. 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, CT50A2601 / Heikki Kälviäinen

  20. Esimerkkiprosessit Taulukko 9.4 • Service Time = CPU:ssa kulutettu aika • Esimerkeissä ei mietitä I/O:n vaikutusta KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  21. FCFSKuva 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, CT50A2601 / Heikki Kälviäinen

  22. 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, CT50A2601 / Heikki Kälviäinen

  23. 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, CT50A2601 / Heikki Kälviäinen

  24. RR Kuva 9.5 • Aikaviipaletekniikka q=4 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  25. 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, CT50A2601 / Heikki Kälviäinen

  26. VRR Kuva 9.7 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  27. 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, CT50A2601 / Heikki Kälviäinen

  28. 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 • Sn = T + (1 - )Sn-1 esim  = 0.8 • Ei sovellu osituskäyttöympäristöön KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  29. SRT Kuva 9.5 • Aikaviipaleversio edellisestä (keskeytyvä) • Arvoitava prosessin jäljelläoleva ajantarve • Ei interaktiiviseen ympäristöön KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  30. 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, CT50A2601 / Heikki Kälviäinen

  31. 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, CT50A2601 / Heikki Kälviäinen

  32. Multilevel Feedback Kuva 9.10 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  33. 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, CT50A2601 / Heikki Kälviäinen

  34. Feedback Kuva 9.5 • Jonot RQ0, RQ1, RQ2 • Aikaviipale q=1 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  35. Feedback Kuva 9.5 • Jonot RQ0, RQ1, RQ2 • Aikaviipale q=2i ; 1, 2, 4, jne. • Vaikutus, vrt. q=1 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  36. Yhteenveto Taulukko 9.3

  37. KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  38. KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  39. Käyttöjärjestelmät UNIX SVR3 / BSD4.3 VUOROTTAMINEN KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  40. 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, CT50A2601 / Heikki Kälviäinen

  41. UNIX: Ready-jonot Tan01 10.11 KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  42. 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, CT50A2601 / Heikki Kälviäinen

  43. 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, CT50A2601 / Heikki Kälviäinen

  44. UNIX: Esimerkki Kuva 9.17 [Bach86 8.4] KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  45. 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, CT50A2601 / Heikki Kälviäinen

  46. 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 • WA = 0.5 ja WB+C= 0.5 • Päivitä laskurit 60 kertaa sekunnissa • Päivitä prioriteetti sekunnin välein KJ-II K2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

  47. 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, CT50A2601 / Heikki Kälviäinen

More Related