4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi



Samankaltaiset tiedostot
Arto Salminen,

4. Prosessit ja säikeet

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

OHJ-4301 Sulautettu Ohjelmointi

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

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät II

OHJ-4301 Sulautettu Ohjelmointi

Käyttöjärjestelmät II

Prosessi perinteisesti

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

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

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

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

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

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

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

2 Konekieli, aliohjelmat, keskeytykset

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

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

Tenttitärpit. HUOM: Luvataan, että tämä on lopullinen tenttitärppikokoelma, mutta varaan silti oikeuden tehdä pieniä muutoksia, erityisesti:

Sisältöä SÄIKEET, SMP

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

Luentomuistiinpanoja

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

Luento 5 (verkkoluento 5) Suoritin ja väylä

Jakso 8 Ohjelman toteutus järjestelmässä

Hans Baumgartner nimi nimi nimi nimi. Reaaliaikakäyttöjärjestelmät

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Luento 4 Aliohjelmien toteutus

u vapaakäyntisyys (reentrancy) u Yhteinen koodialue u kullakin oma data-alue, pino, PCB u osoitteet suhteellisia prosessin alun suhteen

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

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

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Jakso 4 Aliohjelmien toteutus

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

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

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

Graafisen käyttöliittymän ohjelmointi Syksy 2013

812315A Ohjelmiston rakentaminen. Asynkronisuus

Jakso 8 Ohjelman toteutus järjestelmässä

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

Luento 3: PROSESSIT JA NIIDEN HALLINTA

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

ITKA203 Käyttöjärjestelmät -- kesä tenttitärpit

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

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

1. Keskusyksikön rakenne

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Käyttöjärjestelmän rakenne

Jakso 4 Aliohjelmien toteutus

Tietokoneen toiminta, K Tavoitteet (4)

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

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

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

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

PROSESSIT JA NIIDEN HALLINTA

Arto Salminen,

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ä

Sisältöä SÄIKEET, SMP

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Ongelma(t): Jotta tietokonetta voitaisiin käyttää monipuolisesti ja mahdollisimman yksinkertaisesti kaikkiin sille soveltuviin käyttötarkoituksiin,

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

Luento 1 Tietokonejärjestelmän rakenne

Rinnakkaistietokoneet luento S

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Tietorakenteet ja algoritmit

Jakso 5 Suoritin ja väylä

Javan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Luento 5 (verkkoluento 5) Suoritin ja väylä

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

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

Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI

Kuva 8.7. u Muunnos prosessin sivunumerosta sivutilanumeroksi u Kussakin alkiossa: u Katenoimalla. u MMU:ssa; juuri äsken käytettyjä muunnoksia

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Käännös, linkitys ja lataus

Algoritmit 1. Luento 3 Ti Timo Männikkö

ROSSI-AVR Versio 1.1, päivitetty

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Osio 2: Luennot 4-7 Muistinhallinta

Jakso 4 Aliohjelmien toteutus

Kevään 2016 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

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

Transkriptio:

4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi

Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia Yhteenveto

Prosessi käsitteenä Prosessi ~ ohjelma? Vähintäänkin resurssien varaamisen yksikkö Tilanteesta riippuen erilaisia tilamalleja Ready-Run-Wait Ready-Run-Wait-Swapped wait-swapped ready

Ready-Run-Wait Run Vuorontaja Ready Uusi prosessi Prosessi odottaa Odotus päättyy Wait

Ready-Run-Wait- Swapping Run Vuorontaja Ready Uusi prosessi Prosessi odottaa Wait Odotus päättyy Heittovaihtaja Heittovaihtaja Swapped Wait Odotus päättyy Swapped Ready

Säikeet Usein tarvitaan kevyempää kuin täysverinen prosessi Säikeet, kevytprosessit (thread, lightweight-process, etc) Samaan prosessiin kuuluvat säikeet samassa muistiavaruudessa Kaikilla omat pinot Joskus jopa haarautuvat pinot jos tilanne sitä vaatii! Käyttö voi erota prosessitasosta Omat rutiinit, joskus jopa suora pyyntö prosessorista luopumiseksi

Säikeiden toteuttamisesta Käyttäjän tasolla Kirjastorutiini, joka toimii prosessin sisäisenä vuorontajana (voihan tämän tietysti tehdä itsekin jos haluaa) Ongelma: Kun joku säie odottaa, kaikki helposti odottavat Käyttöjärjestelmän tasolla Jokainen säie skeduloidaan erikseen Kuormittaa tietysti ytimen tietorakenteita Vaatii käyttöjärjestelmäkutsun

Säikeet ja prosessit Säikeet -> Suoritusaika Kontekstin vaihto, erilaiset vuoronnusalgoritmit Prosessit -> Resurssien varaus Semaforit, lukot, jne Kommunikointi Jaettu muisti (kätevää saman prosessin sisällä) Viestinvälitys (kätevää prosessien välillä)

FreeRTOS esimerkki FreeRTOS API http://www.freertos.org/a00106.html xtaskcreate( vtaskcode, "NAME", STACK_SIZE, &ucparametertopass, tskidle_priority, &xhandle ); // Use the handle to delete the task. vtaskdelete( xhandle );

Keskeytyksistä Rytmittävät järjestelmän suoritusta Tulevat oheislaitteilta tai ohjelmalta itseltään Vähintään kellokeskeytys tarvitaan pitämään laskenta käynnissä

Keskeytyskäsittelyn aloitus ja lopetus Ensitason keskeytyskäsittely (FLIH, First-Level Interrupt Handling): Talletetaan ympäristö (suorittimen rekisterit, tilasana, muistinhallinnan tiedot) Haaraudutaan oikeaan keskeytyskäsittelijään Paluu: Palautetaan ympäristö Palataan keskeytyskäsittelystä (esim. RETI)

Keskeytyskäsittelystä vielä Ohjelmalliset tarvittavat toimenpiteet vaihtelevat riippuen siitä mitä laitteiston keskeytystoiminta määritelty Esim. rekisterien suhteen suuria eroja Jotta keskeytykset mahdollisimman usein sallittuja, käytössä usein ympäristöpino (kernel stack) Ei ylivuotoa! Jos tyhjenee, kutsutaankin vuorontajaa! Jos ei ympäristöpinoa, säikeen omakin pino käy (olettaen että se löytyy aina muistista kun on paluun aika (ei siis virtuaalimuistia)) Voidaan edelleen keskeyttää (ainakin yleensä)

Käyttöjärjestelmäkutsut Tapahtuvat em. keskeytyskäsittelyn mukaisesti SVC-käskyllä Voi yleensä käyttää myös käyttöjärjestelmän sisältä Esim. sleep

Prosessielementti (process control block, pcb) Kokoaa tärkeää prosessiin liittyvää tietoa Nimi (yleensä kokonaisluku) Prosessin tila (ready, run, wait, ) Nykyinen prioriteetti Perusprioriteetti Tilaa säikeiden ympäristöjen tallennusta varten (ympäristöpino) Muistiosoitteita (data, ohjelma) Varatut resurssit Saadun signaalin numero ja signaalien käsittelijät Kirjanpitotietoa (ajoaika, jne)

Prosessin luominen Linkittäjä (linker) muodostaa kooditiedoston joka vastaa ohjelmalle varatun muistialueen sisältöä ohjelman käynnistyessä (process image) Käyttöjärjestelmän ytimessä palvelurutiini, joka osaa käynnistää parametrina annetun kooditiedoston Prosessielementin kentät päivitetään sopiviin arvoihin Käytännössä useita variaatioita Fork (uusi prosessi, sama koodi, isäprosessi jatkaa) Exec (uusi prosessi, uusi koodi, isäprosessi jatkaa) Wait (uusi prosessi, uusi koodi, isäprosessi odottaa)

Prosessin päättäminen Suljetaan avoinna olevat tiedostot Vapautetaan resurssit Vapautetaan prosessielementti Prosessien väliset riippuvuudet (isälapsi) voivat joskus aiheuttaa erikoisia tilanteita

Ohjelmallisesti aiheutetut keskeytykset Signaali ohjelmallisesti aiheutettu keskeytys prosessille Prosessi (no oikeastaan vuorontaja) havaitsee signaalin kun se seuraavan kerran tulee tilaan run Voidaan käyttää moneen tarkoitukseen Prosessien välinen kommunikointi Tietyt virhetilanteet (esim. integer_overflow)

Signaalien käsittelystä Signaalien käsittely prosessikohtaista Jos skeduloidaan säikeitä eikä prosesseja voi signaali mennä mille tahansa säikeelle Yleensä kannattaa sallia signaalien vastaanotto vain yhdelle säikeelle ja muutenkin keskittää samantapaisten housekeeping tyyppisten tehtävien hoito samaan säikeeseen

Suunnittelunäkökohtia Säikeet ja prosessit kuluttavat ytimen tietorakenteita ja muistia Varsinkin pienissä järjestelmissä voi olla rajoituksia sille, kuinka monta säiettä/prosessia voi olla Esim. 32kpl (toteutettu 32 sopivan tietorakenteen vektorina) Vaikka rajoja ei olisikaan, voi käytännössä olla tarpeen rajoittaa määrää esim. skeduloinnin ennustamiseksi

Prosessien/säikeiden vuorovaikutus Suora vaikutus Yhteiset resurssit, viestinvälitys Epäsuora vaikutus Kilpailu yhteisistä resursseista Ohjelmointivirheet vaikeasti löydettäviä (kuten tavallista rinnakkaisuutta sisältävissä ohjelmissa) Kannattaa toteuttaa omia debuggausrutiineja, jos muisti riittää

Esimerkki kunnonvalvojasta task Tn() { while (1) { self.activitybit = 1; } } void systemmonitor() { setpriority(system.lowest); while (1) { foreach (task in mytasks) { if (task.activitybit) { task.activitybit = 0; } else { ReportError(task); } } }

Prosessien ja säikeiden välttäminen sarjallistamalla Periaate: Suoran säikeiden välisen kommunikoinnin sijasta tapahtumapohjaiseen (eventbased) kommunikointiin MainLoop jossa odotetaan tapahtumia ja käsitellään niitä saman säikeen sisällä Palvelemaan riittää yleensä 1 säie Edut Ei rinnakkaisen ohjelmoinnin tuskaa Yleensä muistinkulutus laskee, eikä varsinkaan ytimen tietorakenteita tarvitse varata

Yhteenveto Prosessit sisältävät yhden tai useampia säikeitä saman osoiteavaruuden sisällä Säie pienin skeduloitava yksikkö Run, Ready, Wait (+ lisätiloja tarpeen mukaan?) Keskeytyksissä säikeen (prosessin) ympäristö (rekisterit + tilasana) talletetaan ympäristöpinoon Ajettava säie vaihdetaan vaihtamalla ympäristö toiseksi Keskeytyksessä palattaessa palautetaan ympäristö Keskeytyskäsittely voidaan keskeyttää Käyttöjärjestelmäpyynnöt keskeytysmekanismin avulla