Arto Salminen,

Samankaltaiset tiedostot
4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

4. Prosessit ja säikeet

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

OHJ-4301 Sulautettu Ohjelmointi

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

Käyttöjärjestelmät: prosessit

OHJ-4301 Sulautettu Ohjelmointi

Käyttöjärjestelmät II

Käyttöjärjestelmät II

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

Prosessi perinteisesti

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

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

2 Konekieli, aliohjelmat, keskeytykset

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

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ä

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

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ä

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

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

Jakso 8 Ohjelman toteutus järjestelmässä

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

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

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

Jakso 8 Ohjelman toteutus järjestelmässä

Luento 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

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

Jakso 8 Ohjelman suoritus järjestelmässä

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Jakso 8 Ohjelman suoritus järjestelmässä

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

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

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

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

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

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

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

Arto Salminen,

Luentomuistiinpanoja

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

PROSESSIT JA NIIDEN HALLINTA

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

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

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

Rinnakkaistietokoneet luento S

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

Ohjelmoinnin peruskurssien laaja oppimäärä

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

1. Keskusyksikön rakenne

Luento 3: PROSESSIT JA NIIDEN HALLINTA

Graafisen käyttöliittymän ohjelmointi Syksy 2013

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

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

Sisältöä SÄIKEET, SMP

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Käyttöjärjestelmän rakenne

Tietokoneen toiminta, K Tavoitteet (4)

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

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

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola

Käyttöjärjestelmät II. SMP, Mikroytimet. Prosessit yleensä. UNIX prosessit. UNIX SVR4 Prosessit. UNIX prosessin kuvaaja

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Luento 1 Tietokonejärjestelmän rakenne

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

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

Luento 2. Timo Savola. 31. maaliskuuta 2006

Ohjelmoinnin perusteet Y Python

Osio 2: Luennot 4-7 Muistinhallinta

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 1 Tietokonejärjestelmän rakenne

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

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Jakso 4 Aliohjelmien toteutus

Käännös, linkitys ja lataus

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

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

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

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Kertausluento luennoista 1-3 1

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

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

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

Osio 2: Luennot 5-8 Muistinhallinta

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

Luento 8 Ohjelman toteutus järjestelmässä

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

Transkriptio:

4. Luento: Prosessit ja säikeet Arto Salminen, arto.salminen@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? vai resurssien varaamisen yksikkö? vai muistin suojaamisen yksikkö? vai tietoturvan yksikkö? vai latauksen 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-Block Run Vuorontaja Ready Uusi prosessi Prosessi odottaa Wait Odotus päättyy Block

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

Process image Koodi Prosessin muistialueet Käyttöjärjestelmältä varatut resurssit Rekisterien sisältö ja muu konteksti Tietoturvaan liittyvät attribuutit ja oikeastaan kaikki muukin mitä tarvitaan jotta prosessin tila voidaan palauttaa täsmälleen samaan kohtaan takaisin levyltä Sivutus ja muistinhallinta keskeisiä vaatimuksia tehokkaan toteutuksen kannalta

Säikeet Usein tarvitaan kevyempää kuin täysverinen prosessi Säikeet, kevytprosessit (thread, light-weight-process, etc) Samaan prosessiin kuuluvat säikeet samassa muistiavaruudessa Kaikilla (yleensä) omat pinot Joskus jopa haarautuvat pinot jos tilanne sitä vaatii! Kysymyspähkinä: Milloin ei omaa pinoa? 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: Eräs tulkinta 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ä)

Keskeytyvä keskeytyskäsittely FLIH FLIH Keskeytys A: Keskeytys B: Keskeytyksen käsittely JMP vuorontaja RETI. RETI A:n ympäristö B:n ympäristö A:n ympäristö Vastaavat ympäristöpinot suorituksen aikana

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

Käyttöjärjestelmää kutsuva käyttöjärjestelmäkutsu FLIH FLIH FLIH SVC SLEEP SLEEP: wait_event: SVC wait_event JMP vuorontaja SVC vuorontaja RETI vuorontaja: RETI vuorontaja: RETI

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)

Esimerkki If (!(pid=fork())) { } // Lapsiprosessin suoritettava komento exec( komento ); // Komennon kutsu pieleen; ei pitäisi koskaan tapahtua // mutta ylimääräinen varautuminen helpottaa debuggausta // sitten kun näin joskus käy. exit(exit_failure); status = wait(pid); // Isä odottaa lapsiprosessin lopettamista.

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 (yksinkertaistaa debuggausta ja designia!)

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 (myös kriittinen alue), 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 (event-based) 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 -> suorituskykyetu! Haitat Ei oikeaa rinnakkaisuutta Ei sovi kaikkiin toteutuksiin

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