4. Prosessit ja säikeet

Save this PDF as:
 WORD  PNG  TXT  JPG

Koko: px
Aloita esitys sivulta:

Download "4. Prosessit ja säikeet"

Transkriptio

1 74 Sulautettu ohjelmointi 4. Prosessit ja säikeet Yksi käyttöjärjestelmien tärkeimpiä abstraktioita on prosessi. Myös sulautetuissa järjestelmissä on aivan pienimpiä laitteita lukuunottamatta aina jonkinlainen käyttöjärjestelmä ja myös prosessikäsite. Luvussa 7 sivulla 120 käsitellään tarkemmin pienten sulautettujen järjestelmien toteutustapoja. Tässä luvussa tutustutaan ensin prosesseihin ja säikeisiin ja kuinka ne pyytävät ytímeltä palveluita sekä ytimen tapaan käsitellä keskeytyksiä. 4.1 Prosessit Prosessi on suorituksessa oleva ohjelma. Jokaista prosessia kohti on käyttöjärjestelmän ytimessä prosessielementti (process control block, PCB), johon kerätään (lähes) kaikki prosessikohtaiset tiedot. Erityisesti sinne on talletettu tieto siitä, onko prosessi otettavissa ajoon, odottaako se jotain tapahtumaa vai onko se ajossa. Prosessielementtiin palataan kohdassa Prosessien tilamalli Käyttöjärjestelmän kannalta tarkasteltuna prosessi on kunakin hetkenä jossain tiloista ready, run tai wait (kuva 4.1). Tilassa run ovat parhaillaan suoritettavina olevat prosessit yksisuoritinjärjestelmässä siis korkeintaan yksi prosessi kerrallaan. Ready-tilassa ovat prosessit, joilla on kaikki muut niiden tarvitsemat resurssit lukuun ottamatta suoritinta itseään. Ne siis odottavat run-tilaan pääsyä. Vuorontajan tehtävänä on valita jokin ready-tilan prosesseista run-tilaan suoritettavaksi. Wait-tilassa ovat prosessit, jotka odottavat jotain tapahtumaa, esimerkiksi I/Ooperaation päättymistä tai jonkin resurssin vapautumista. Tästä tilasta käytetään myös termiä blocked. Erityisen hämäävää on se, että joissain yhteyksissä tilat ovat ready, waiting (tai suspended) ja blocked, jotka siis vastaavat tiloja run, ready ja wait, tässä järjestyksessä. On siis syytä

2 Prosessit ja säikeet 75 RUN Vuorontaja READY Prosessi odottaa Uusi prosessi Odotus päättyy WAIT Prosessi poistuu Kuva 4.1 Prosessien tilakaavio. aina tarkistaa, millaisia nimiä tiloista käytetään. Uudet prosessit ilmestyvät tässä käytetyssä termistössä ready-tilaan. Vuorontaja valitsee ready-tilasta suoritukseen (run-tilaan) jonkin prosessin, tavallisesti sen, jonka prioriteetti on korkein. Run-tilasta prosessi siirtyy wait-tilaan omasta pyynnöstään; esimerkiksi pyytäessään jotain käyttöjärjestelmäpalvelua (SVC 12, supervisor call), jonka toteutukseen liittyy odotusta. Siirtyminen wait-tilasta ready-tilaan tapahtuu luonnollisesti kyseisen odotuksen päättyessä esimerkiksi laitteen keskeyttäessä I/O-toiminnan valmistumisen merkiksi. Prosessi voi joutua run-tilasta takaisin ready-tilaan, kun vuorontaja vaihtaa suoritettavan prosessin jonkin keskeytyskäsittelyn päätteeksi. Tätä tapahtumaa, jossa prosessi joutuu luovuttamaan keskusyksikön vasten tahtoaan, kutsutaan irrottavaksi skeduloinniksi (pre-emptive scheduling). Päättyvien prosessien voidaan ajatella poistuvan järjestelmästä vaikkapa wait-tilan kautta. Ytimen tehtävänä on ohjata prosessien etenemistä tilamallin edellyttämällä tavalla Lisätiloja Vaikka edellä kuvattu kolmen tilan järjestelmä periaatteessa kattaa kaiken, käytännössä tiloja on enemmän. Tällaisia lisätiloja syntyy esimerkiksi prosessin hetkellisestä pysäyttämisestä tai heittovaihdosta. Pysäytyspyynnön syynä on tavallisesti käyttäjän pyyntö. Esimerkiksi lähes kaikki Unix-järjestelmät sisältävät mahdollisuuden tähän (job control): tavallisesti control-z pysäyttää ajossa olevan prosessin, jol- 12. SVC on konekäsky, joka siirtyy käyttäjän tilasta etuoikeutettuun tilaan keskeytyspalvelun tapaan. Käskyn nimi vaihtelee tietokonearkkitehtuurista toiseen.

3 76 Sulautettu ohjelmointi RUN Vuorontaja READY Prosessi odottaa Odotus päättyy Heittovaihtaja WAIT Heittovaihtaja Prosessi poistuu SWAPPED WAIT SWAPPED READY Kuva 4.2 Prosessien tilakaavio heittovaihtojärjestelmässä. loin siirrytään lisätilaan suspended. Koska tilaan suspended voidaan päätyä joko käyttöjärjestelmän tai prosessin itsensä haluamana, tila voidaan saavuttaa oikeastaan mistä tahansa tilasta, ja se jakaantuu alitiloihin ready ja wait riippuen siitä, mihin tilaan suspended-tilasta palataan. Heittovaihto (swapping) aiheuttaa hyvin samankaltaisen toiminnan (lisätilaksi tulee tila swapped), mutta yleensä pyritään siihen, että heittovaihto tehdään vain wait-tilassa oleville prosesseille. Prosessin tilamalli muuttuu heittovaihdossa kuvan 4.2 mukaiseksi. Virtuaalimuisti ei sinänsä lisää uusia päätiloja, sillä puuttuva sivu aiheuttaa vain tilasiirtymän tilaan wait. Koska varsinkin pieniä sulautettuja ohjelmistoja toteutettaessa heittovaihto tai virtuaalimuistin käyttö eivät tule kysymykseen, prosessin tilakaavio pysyy yksinkertaisimmassa muodossaan Säikeet Koska erityisesti ikkunoinnin mutta myös muidenkin ongelmakenttien yksinkertainen toteutus tarvitsee paljon prosesseja, on pyritty tekemään normaaliprosessia kevyempiä prosesseja. Näitä kutsutaan säikeiksi (threads, light weight processes, joskus jopa ultra light processes). Samassa järjestelmässä voi jopa olla useita erilaisia variaatioita kevyemmistä prosesseista, joiden resurssien kulutukseen, kuten esimerkiksi dynaamisesti varattavaan muistiin tai pinon kokoon, liittyvät ominaisuudet vaihtelevat.

4 Prosessit ja säikeet 77 Yleisesti ottaen säikeet ovat prosesseja kevyempiä ratkaisuja suoritusajan jakamiselle. Keveys saadaan aikaan siten, että samaan prosessiin kuuluvilla säikeillä on yhteinen osoiteavaruus, jolloin säikeen vaihtuessa prosessin sisällä ei tarvitse vaihtaa muistinhallinnan ohjausrakenteita, vaan ainoastaan rekisterit. Säikeillä on siis yhteinen osoiteavaruus, vain niiden pinot ovat erillisiä, ja nekin ovat muistinhallinnan kannalta yhteisellä muistialueella. Monissa käyttöjärjestelmissä säie on pienin skeduloitava yksikkö, ja jokaisessa prosessissa on vastaavasti ainakin yksi säie. Prosessin tehtävänä on tarjota yhteinen muisti ja muut resurssit joukolle säikeitä ja yhdistää ne loogisesti; skedulointiin prosessikäsite ei osallistu kuin poikkeustapauksessa (esimerkiksi koko prosessin siirtyessä tilaan suspended). Säikeet voidaan toteuttaa sekä käyttäjän tasolla että käyttöjärjestelmän tasolla. Käyttäjän tasolla toteuttaminen merkitsee kirjastorutiinia, joka toimii prosessin sisäisenä vuorontajana. Tämän ratkaisun ongelma on siinä, että prosessin minkä tahansa säikeen pyytäessä sellaista palvelua, joka vie prosessin wait-tilaan, kaikki säikeet pysähtyvät odottamaan palvelun päättymistä. Tämä taas käytännössä pilaa monet säiesovellukset. Käyttöjärjestelmän tasolla toteutettuna yhden säikeen joutuminen wait-tilaan ei pysäytä muita. Lisäksi voidaan väittää, että skedulointi on ainakin periaatteessa reilumpaa, kun prosessin jokainen säie saa erikseen aikaa. Monet nykyiset käyttöjärjestelmät tarjoavat säikeet käyttöjärjestelmätasolla. Lisäksi voidaan käyttää molempia järjestelmiä rinnan, jolloin osa skeduloinnista voidaan hoitaa kirjastorutiineilla ja osa ytimen säikeillä. Kirjastorutiiniversio on hieman kevyempi käytössä, koska skedulointia varten ei tarvitse tehdä käyttöjärjestelmäpyyntöä. Joissain käyttöjärjestelmissä ei ole erikseen säikeitä, vaan säikeet ja prosessit ovat sama asia (ainakin osa Linux-versioista). Vastaava ominaisuus saadaan aikaan siten, että kahdella prosessilla voi olla sama muistinhallinta, ja vuorontaja valitsee hieman mieluummin sellaisen prosessin, jolla on sama muistinhallinta kuin juuri ajossa olleella. Käytännössä ratkaisujen ero näkyy siinä, että prosesseihin liitettävät ominaisuudet, kuten resurssit ja signaalit, toimivat näissä ratkaisuissa eri tavalla.

5 78 Sulautettu ohjelmointi 4.2 Keskeytykset Käyttöjärjestelmä ei tee mitään, ellei keskeytystä tule vähintään tarvitaan kellokeskeytys tönäisemään laskentaa eteenpäin. Keskeytys voi tulla joko oheislaitteelta tai ohjelmalta. Riippumatta siitä, mistä syystä tai miltä laitteelta keskeytys tulee, tehdään keskeytyskäsittelyn alussa ja lopussa samat toimenpiteet Keskeytyskäsittelyn aloitus ja lopetus Keskeytysten käsittely on periaatteessa yksinkertaista: talletetaan ympäristö eli suorittimen rekisterit ja tilasana sekä muistinhallinnan tiedot ja haaraudutaan keskeytystä vastaavaan keskeytyskäsittelijään. Käyttöjärjestelmän ja laitteiston näitä toimintoja kutsutaan joskus nimellä ensitason keskeytyskäsittely (FLIH, first level interrupt handling). Ensitason keskeytyskäsittelyyn liittyvät ohjelmalliset toimenpiteet vaihtelevat hieman riippuen siitä, miten käytettävissä olevan laitteiston keskeytystoiminta on määritelty. Koska suurin osa ytimen koodista halutaan suorittaa keskeytykset sallittuina, tarvitaan ympäristön talletusta varten niin sanottu ympäristöpino (environment stack, kernel stack). Esimerkiksi ARMsuorittimissa ympäristöön (ilman muistinhallintaa) tulee 17 sanaa (suorittimen tilarekisteri, ohjelmalaskuri ja 15 yleisrekisteriä). Pinossa tulee olla tilaa niin paljon, ettei ylivuotoa voi koskaan tapahtua. Suorittimissa, jossa laitteisto tallettaa ympäristön automaattisesti ympäristöpinoon, ja keskeytysvektori ohjaa kunkin laitteen tai keskeytyksen syyn suoraan oikealle ytimen rutiinille, ei ohjelmistopuolen tehtäväksi jää ensitason käsittelijässä oikeastaan mitään, sillä muistinhallinnan rekisterien talletus ei yleensä ole tarpeen. Tavallisesti laitteisto ei ole näin ahkera, vaan rekisterien talletus tehdään ohjelmallisesti. Huomaa, että tilarekisterin ja ohjelmalaskurin talletus on kuitenkin aina oltava laitteiston vastuulla. Mikäli keskeytysvektorit ohjaavat toiminnan ytimen rutiineille, kutsutaan tätä rekisterientallennusohjelmaa joka rutiinin alussa. Eniten töitä ohjelmisto saa, mikäli yhdellä tai useammalla laitteella on yhteinen keskeytysvektori, jolloin ohjelmiston on selvitettävä myös keskeytyksen aiheuttaja kuten aiemmin esitettiin kohdassa 2.4 sivulla 34. Monissa suorittimissa on erillinen pino-osoitin etuoikeutetulle tilalle. Keskeytyksen tullessa pino-osoitin vaihtuu automaattisesti tilan mukaan.

6 Prosessit ja säikeet 79 FLIH FLIH keskeytys A: keskeytys B: keskeytyksen käsittely RETI Ympäristöpino: JMP vuorontaja RETI (tyhjä) A:n ympäristö B:n ympäristö A:n ympäristö Kuva 4.3 Keskeytyvä keskeytyskäsittely. Paluu keskeytyskäsittelystä voi periaatteessa tapahtua missä tahansa. Paluu tapahtuu siten, että ensin asetetaan muistinhallinnan rekisterit ja muut tietorakenteet, sitten palautetaan suorittimen rekisterit, ja lopuksi palataan keskeytyksestä esimerkiksi konekäskyllä RETI (return from interrupt). Jos laitteisto tallettaa keskeytyksessä rekisterit, se palauttaa ne poistuttaessa; jos taas keskeytys ei talleta rekistereitä, ei paluukäskykään sitä tee, vaan palautus tulee hoitaa ohjelmallisesti. Talletettavien rekisterien määrä on suoritinkohtainen ja yhdessäkin suorittimessa voi olla joitain erikoiskeskeytyksiä, jotka toimivat tässä suhteessa normaalista poikkeavasti. Jos paluu aiheuttaisi ympäristöpinon tyhjenemisen, kutsutaankin vuorontajaa, joka valitsee seuraavan suoritettavan prosessin. Reaaliaikaytimissä voidaan kutsua vuorontajaa aina, kun palataan keskeytyksestä, jotta reaaliaikavaste saataisiin tarpeeksi pieneksi. Kuvassa 4.3 on esimerkki ympäristöpinon käyttäytymisestä tapauksessa, jossa keskeytyskäsittely keskeytyy uuden keskeytyksen seurauksena. Ympäristöpinoa käytetään siis pinomaisesti ympäristön talletukseen. Tämän pinon lisäksi prosessiin liittyy luonnollisesti aktivaatiotietuepino, joka sijaitsee prosessille varatulla muistialueella. Laitteiston keskeytystoiminta olisi periaatteessa voitu määritellä myös siten, että

7 80 Sulautettu ohjelmointi ympäristö tallettuu aina aktivaatiotietuepinon huipulle. Tästä seuraisi kuitenkin ongelmia virtuaalimuistin toteutuksen yhteydessä, koska tällöin voisi olla mahdollista, että muistialue, jonne ympäristön talletus tapahtuu, ei ole parhaillaan keskusmuistissa. Jos ollaan toteuttamassa koko järjestelmää itse eikä virtuaalimuistia ole tarkoitus käyttää, voidaan usein hyödyntää myös säikeen aktivaatiopinoa jos ympäristöpinoa tai vastaavaa tietorakennetta ei ole käytettävissä Käyttöjärjestelmäkutsut Käyttöjärjestelmäkutsut tapahtuvat SVC-käskyllä edellä kuvatun keskeytysmenettelyn mukaisesti. Käyttöjärjestelmäpalveluita voi kutsua SVC-käskyllä myös käyttöjärjestelmän sisältä. Kuvassa 4.4 on esimerkki sleep-rutiinin toiminnasta. Sleep-rutiini nukuttaa prosessin ajanjaksoksi, jonka pituus annetaan parametrina. Rutiinin toteutus vaatii edelleen wait_event-rutiinin 13 kutsun, josta edelleen kutsutaan vuorontajaa. Nukkumisen aikana prosessin ympäristöpinossa on talletettuna kutakin SVC-kutsua vastaava ympäristö, eli pinossa on kolme päällekkäistä ympäristöä. Käyttöjärjestelmästä tapahtuvien SVC-kutsujen toimintaa voidaan hiukan nopeuttaa, jos kutsu on rutiinin viimeinen toimenpide. Tällaisessa tapauksessa kutsu voi tapahtua tavallisella hyppykäskyllä (JMP). Jos kuvan 4.4 SVC-kutsut ensimmäistä lukuun ottamatta vaihdettaisiin hyppykäskyiksi, tallettuisi pinoon vain yksi ympäristö, ja vuorontajan RETI-käsky palauttaisi kontrollin suoraan sovellukseen (tämä on piirretty kuvaan katkoviivoilla). Käyttöjärjestelmän sisältä tapahtuvat käyttöjärjestelmäkutsut voitaisiin hoitaa myös tavallisen aliohjelmakutsukäskyn avulla. Emme puutu kutsumekanismiin tämän tarkemmin, vaikka siihen paljon mielenkiintosia yksityiskohtia liittyykin esimerkiksi parametrien välitys voi olla hieman mutkikasta osoiteavaruudesta toiseen siirryttäessä. 4.3 Prosessien hallinnasta Käydään seuraavaksi läpi lyhyesti prosessinhallinnan alkeet sekä ehkä keskeisin prosesseihin liittyvä tietorakenne, prosessielementti. 13. Rutiini wait_event siirtää prosessin run-tilasta wait-tilaan odottamaan parametrina annettua tapahtumaa.

8 Prosessit ja säikeet 81 FLIH FLIH SVC SLEEP SLEEP: wait_event: FLIH SVC wait_event JMP vuorontaja vuorontaja: : : SVC vuorontaja RETI vuorontaja: : : RETI RETI Kuva 4.4 Käyttöjärjestelmää kutsuva käyttöjärjestelmäkutsu. Katkoviivalla optimoitu (hyppykäskyillä toteutettu) kutsusekvenssi Prosessielementti Prosessien hallinnan kannalta tärkein rakenne on prosessielementti (process control block, PCB). Kullakin prosessilla on oma prosessielementtinsä, jossa prosessin tietoja ylläpidetään. Prosessielementit on voitu koota prosessitauluksi, jonka koko asettaa ylärajan järjestelmässä olevien prosessien määrälle. Prosessielementistä löytyy muun muassa seuraavia tietoja: prosessin nimi (käytännössä kokonaisluku) prosessin tila: wait, ready tai run (tai vapaa prosessielementti free) prosessin sen hetkinen prioriteetti ja sen perusprioriteetti tilaa prosessin ympäristöjen talletusta varten (ympäristöpino) tulleen signaalin numero sekä signaalinkäsittelijöiden osoitteet (tarkemmin kohdassa 4.2.6). Jatkossa voimme olettaa, että käytössä on kuvan 4.5 mukainen yksinkertainen prosessielementti.

9 82 Sulautettu ohjelmointi Kenttä process_id on prosessin nimi esimerkiksi vaikkapa kokonaisluku. Prosessin tila (ready, run, wait) selviää state-kentästä. Prosessin siirtyminen tilasta toiseen vastaa state-kentän arvon muuttamista. Vapaa prosessielementti tunnistetaan state-kentän arvosta FREE. Vuorontaja tekee seuraavaksi suoritettavan prosessin valinnan priority-kentän perusteella. Koska prosessin prioriteetti voi tilapäisesti kasvaa kriittisen alueen suorituksen aikana käänteisprioriteettiongelman ratkaisemiseksi, tarvitaan lisäksi kenttä native_priority, jossa säilytetään prosessin omaa prioriteettia. Poistuttaessa kriittiseltä alueelta palautetaan kentän priority arvo sijoittamalla siihen kentän native_priority arvo. Käänteisprioriteettiongelma esitellään kohdassa sivulla Prosessin luominen Prosessin luonnin voi ajatella tapahtuvan seuraavasti. Linkittäjä (linker) muodostaa kooditiedoston, joka vastaa ohjelmalle varattavan muistialueen sisältöä ohjelman käynnistyessä (prosessin kuva, image). Voidaan sopia, että ensimmäinen suoritettava käsky on alueen ensimmäisessä sanassa; toinen mahdollisuus on, että prosessin kuva levyllä sisältää tiedon siitä, mistä prosessi aloitetaan, ja latauksen yhteydessä ydin alustaa ohjelmalaskurin oikeaan arvoon. Käyttöjärjestelmän ytimessä on prosessin käynnistämistä varten palvelurutiini execute (tai vastaava), jolle annetaan parametrina kooditiedoston nimi. Rutiini muodostaa prosessielementin prosessitauluun ja varaa prosessille alueen keskusmuistista. Kooditiedoston sisältö luetaan varatulle muistialueelle. Prosessielementin kentät alustetaan sopiviin arvoihin, jonka jälkeen prosessin suoritus voi alkaa. Esimerkiksi state-kenttään viedään arvo ready ja ympäristöpinoon konstruoidaan yksi talletettu ympäristö, jossa ohjelmalaskurin arvona on ohjelman ensimmäisen suoritettavan struct PCB { int process_id; // prosessin identiteetti enum { FREE, READY, RUN, WAIT } state; int priority, native_priority; // käyttö- ja perusprioriteetti int signal_number; // tulleen signaalin numero void (*signals) () [NUM_SIGNALS]; // signaalinkäsittelijät address saved_environment; // ympäristöpinon osoite }; Kuva 4.5 Prosessielementin kentät.

10 Prosessit ja säikeet 83 käskyn osoite ja jossa muistinhallintarekisterien arvot viittaavat prosessin muistialueeseen. Luonnollisin tapa prosessin käynnistämiseksi on määritellä käyttöjärjestelmäkutsu start, jonka parametrina annetaan käynnistettävän prosessin kuvan sisältävän tiedoston nimi. Toiminta on siis sellainen, että kutsu luo uuden prosessin (lapsiprosessin, child process), varaa sille oman muistialueen ja prosessin luonut prosessi (isäprosessi, parent process) jatkaa toimintaansa. Muitakin mahdollisuuksia on. Tietyissä tilanteissa on luonnollista, että isäprosessi jää odottamaan lapsiprosessin päättymistä; esimerkiksi komentotulkit tekevät yleensä näin. Toinen mahdollinen variaatio on sellainen, jossa lapsiprosessi jatkaakin isäprosessin ohjelmakoodin suoritusta. Osittain näiden vaihtoehtoisten tarpeiden takia liittyy Unix-maailmassa prosessien luomiseen kolme kutsua: fork, exec ja wait. Ensimmäinen näistä, fork, luo uuden prosessin ja kopioi sille isäprosessin muistin. Uusi prosessi jatkaa isäprosessin ohjelmakoodin suoritusta. Ainoa ero isän ja lapsen välillä on se, että kutsu fork palauttaa isäprosessille luodun lapsiprosessin numeron (joka on aina nollasta poikkeava luku) ja lapselle numeron nolla. Erityisesti on huomattava, että auki olevat tiedostot periytyvät lapselle. Luomisensa jälkeen uusi prosessi jatkaa siis isänsä ohjelmakoodin suoritusta. Tavallisesti fork-kutsu on ehtolauseessa, joten lapsiprosessi suorittaa tästä huolimatta eri osaa ohjelmakoodista kuin isä. Yleensä tämä lapsiprosessin koodi suorittaa kutsun exec, jolla vaihdetaan suoritettava ohjelmakoodi toiseksi. Edelleenkään prosessin avoimet tiedostot eivät muutu. Kolmas kutsu, wait, on isäprosessia varten. Jos isäprosessin tulee odottaa lapsiprosessin päättymistä, se käyttää tätä kutsua. Parametrina voi olla odotettavan lapsiprosessin numero, mutta parametrilla 1 odotetaan mitä tahansa lapsiprosessia. Kutsu palauttaa päättyneen lapsiprosessin statuksen eli exit-kutsun parametrin arvon. Haarautuminen tekevä ohjelmanpätkä voi näyttää esimerkiksi seuraavalta:

11 84 Sulautettu ohjelmointi int status, pid; if (!(pid = fork())) { // tämä suoritetaan, jos kyseessä on lapsiprosessi exec ("komento"); // komennon kutsu meni pieleen, tähän ei pitäisi koskaan päätyä; exit (EXIT_FAILURE); } status = wait (pid); // isä odottaa lapsiprosessin päättymistä Kolme erillistä kutsua mahdollistaa siis yhtä kutsua monipuolisemmat vaihtoehdot toiminnalle, joskin hieman monimutkaistaen normaalitoimintoa. Kolmen kutsun avulla on mahdollista toteuttaa helposti Unixeista tuttu tulostuksen ohjaus. Ottakaamme esimerkiksi Unix-komento who >kayttajat, joka tulostaa koneen sen hetkiset käyttäjät tiedostoon kayttajat. Toiminta tapahtuu seuraavasti: 1. Komentotulkki tunnistaa komennon sellaiseksi, että sen tulee herättää prosessi sitä käsittelemään. 2. Komentotulkki tekee itsestään kopion (fork-kutsulla) ja jää odottamaan lapsiprosessin päättymistä kutsulla wait. 3. Lapsikomentotulkki sulkee oletustulostustiedoston (stdout, cout, standard output), jonka se peri isältään, ja avaa tilalle tiedoston kayttajat. Nyt sen oletustulostus menee tiedostoon kayttajat. 4. Lapsikomentotulkki vaihtaa ohjemakoodinsa tilalle komennon who ohjelmakoodin kutsulla exec. 5. Komento who suoritetaan, ja tulostus menee tiedostoon kayttajat. Ohjelman päättyessä sen palauttama status menee isäkomentotulkille wait-kutsun paluuarvona. Unixien komentotulkeilla voidaan prosessi laittaa suoritukseen myös niin, että komentotulkki ei jää odottamaan käynnistetyn ohjelman suoritusta. Tämä tehdään laittamalla komennon loppuun &-merkki. Nyt komento who >kayttajat & toteutetaan muuten samalla tavalla kuin edellä on kuvattu, mutta kohdassa kaksi isäprosessi ei jää odottamaan herätettyä lasta Prosessin päättäminen Prosessin päättäminen ei periaatteessa ole kovin monimutkaista: suljetaan avoinna olevat tiedostot, vapautetaan resurssit ja viimeiseksi prosessielementti. Monimutkaisuutta tuo, jos käyttöjärjestelmässä pros-

12 Prosessit ja säikeet 85 essin päättymisstatus välitetään isäprosessille (edellä kutsut exit ja wait). Tämä ominaisuus aiheuttaa sen, että kuoleva prosessi ei voi täysin kuolla, ennen kuin se saa kerrottua isäprosessilleen lopetustilansa. Tämän takia lapsen prosessielementti jää varatuksi tilassa zombie 14, kunnes isäprosessi tekee kutsun wait. Jos isäprosessi itse päättyy ennen kuin se on lukenut lapsiprosessin statuksen, paluustatus kerrotaan isoisälle ja niin edelleen, kunnes päädytään siihen prosessiin, joka on kaikkien prosessien esi-isä (Unixissa init, prosessi numero 1, jonka päättyminen kaataa käyttöjärjestelmän). Tällaisessa ratkaisussa ei ole sellaista kutsua, jolla toinen prosessi voisi väkivaltaisesti päättää toisen prosessin. Koska tätä ominaisuutta kuitenkin tarvitaan, se on toteutettu signaalin KILL avulla (signaaleihin palataan kohdassa 4.2.6). Prosessin lopetustila voidaan välittää myös muulla tavalla: esimerkiksi Windows NT:ssä on säiekohtainen sanomakanava, jonka avulla tieto säikeen päättymisestä välitetään kiinnostuneille Ohjelmallisesti aiheutetut keskeytykset Joissain tilanteissa prosessi on pystyttävä keskeyttämään prosessin ulkopuolelta ohjelmallisesti. Prosessin välitön keskeyttäminen voi kuitenkin olla ongelmallista, sillä se voi olla parhaillaan suorittamassa jotain käyttöjärjestelmäkutsua tai muuta sellaista toimenpidettä, jota ei voi jättää kesken. Prosessia ei siis aina voida heti keskeyttää. Yksi ratkaisu on lähettää prosessille eräänlainen ohjelmallisesti aiheutettu keskeytys eli signaali (signal). Prosessi havaitsee signaalin seuraavan kerran run-tilaan päästessään tarkkaan ottaen havainnon tekee vuorontaja. Jos prosessi on kuitenkin suorittamassa ytimen koodia, voi vuorontaja viivästyttää signaalin aiheuttamista, kunnes prosessi poistuu ytimestä. Vastaavia tilanteita syntyy muissakin yhteyksissä. Esimerkiksi ohjelman suorituksessa tapahtuviin virhetilanteisiin voitaisiin liittää signaaleita (divide_by_zero, integer_overflow ja niin edelleen). Tällöin olisi hyödyllistä, että ohjelmoija voisi itse määritellä virheen tapahtuessa tapahtuvan toiminnon ohjelmassa voisi esimerkiksi olla kyseisestä virheestä toipumisen suorittava rutiini. Tämä voidaan toteuttaa siten, 14. Zombi (zombie) on voodoo-uskomuksissa esiintyvä elävä kuollut, eli taikuudella henkiinherätetty vainaja, joka tottelee tahdottomana herättäjäänsä. Carl Barksin (Aku Ankan piirtäjä) mukaan: Zombi on sellainen, jota ei ole, ja jos on, niin ei pitäisi olla.

13 86 Sulautettu ohjelmointi että kuhunkin signaaliin liittyy oletusarvoinen toiminta, mutta tarvittaessa voidaan määritellä myös oletusarvosta poikkeavia signaalinkäsittelyrutiineita (tämä on tosin syytä rajoittaa vain tiettyihin signaaleihin). Signaalin käsittelytapaan voidaan vaikuttaa kutsumalla rutiinia signal, jolle annetaan parametrina signaalin numero ja tieto siitä, miten signaali käsitellään. Arvoja voisivat olla esimerkiksi KILL: signaali aiheuttaa prosessin lopettavan rutiinin kutsun IGNORE: signaalilla ei ole mitään vaikutusta osoite: signaalin saapuessa kutsutaan osoitteesta alkavaa rutiinia. Signaali lähetetään toiselle prosessille rutiinilla kill. Tämä rutiini vie kohdeprosessin signal_number-kenttään aiheutettavan signaalin numeron. Signaalin käsittelyn aiheuttaa varsinaisesti vuorontaja, kun prosessi seuraavan kerran saa suoritinvuoron ja on suorittamassa sovellusohjelman koodia. Havaittuaan signal_number-kentässä signaalin numeron vuorontaja tarkastaa vielä signaalia vastaavan signals-taulukon alkion. Erikoisarvot 0 ja 1 tulkitaan toiminnoiksi kill ja ignore, muut arvot käsitellään muuttamalla prosessin talletettua ympäristöä siten, että RETI-käsky aiheuttaa siirtymisen signals-taulukosta saatuun osoitteeseen. Näin toteutettuna keskeytyksen vaikutus ei aina ole välitön, mutta kuitenkin useimmissa tapauksissa riittävän nopea. Aina mekanismi ei toimi, sillä joissain tilanteissa prosessi on voinut jäädä jonkin virheen takia ytimeen odottamaan jotain tapahtumaa, jota ei ikinä tule, jolloin signaaliakaan ei koskaan havaita. Signaalit ovat prosessikohtaisia. Mikäli järjestelmä skeduloi säikeitä eikä prosesseja, signaali voi mennä mille tahansa prosessin säikeistä. Tällöin suositellaan, että vain yhdellä säikeistä sallittaisiin signaalien vastaanotto, ja muut säikeet jäävät silloin rauhaan. Ongelmana tässä on, että signaali voi tulla esimerkiksi virheellisestä osoitteesta, jolloin voi olla melkoisen hankalaa selvittää, mikä säikeistä teki virheen. Joissain käyttöjärjestelmissä omaksuttu käytäntö pitää prosesseja ja säikeitä samoina asioina luonnollisesti ratkaisee tämän ongelman. 4.7 Suunnittelunäkökohtia Jokaiseen prosessiin ja säikeeseen liittyy käyttöjärjestelmän ytimen tietorakenteita. Lisäksi tarvitaan muistia aktivaatiopinoille ja ohjelman muuhun käyttöön. Siksi varsinkin kaikkein pienimpiä sulautettuja järjestelmiä toteutettaessa kannattaa yleensä pohtia huolellisesti, onko

14 Prosessit ja säikeet 87 uusi säie tai prosessi välttämätön, vai voisiko järjestelmä selvitä ilmankin. Joskus jopa ydin itse voi rajoittaa sallittujen säikeiden ja prosessien lukumäärää esimerkiksi pysyäkseen luvattujen muistirajojen puitteissa. Usein käytetty keino välttää ylenmääräistä säikeiden käyttöä on sarjallistaa tietyt tapahtumat, eli toisin sanoen pyrkiä toteuttamaan järjestelmä siten, että suoritus perustuu säikeiden ja niiden suoran kommunikoinnin sijaan eri tehtävien sarjalliseen suoritukseen. Tekniikkaa käytetään yleisesti käyttöliittymien ohjelmoinnin yhteydessä, jolloin kaikkia käyttöliittymän toimintoja voidaan palvella yhdellä säikeellä, ei siten, että jokainen elementti vaatisi oman palvelevan säikeensä, mutta sitä voidaan käyttää myös muihin tarkoituksiin. Tällöin säie toimii eräänlaisena sarjallistettujen tapahtumien vuorontajana. Toinen keskeinen näkökohta on, että prosessit ja säikeet voivat vaikuttaa toisiinsa sekä suoraan että epäsuorasti. Suora vaikuttaminen on yleensä ohjelmoijan kannalta selkeää, sillä se perustuu normaaleihin kommunikointimekanismeihin, kuten viestinvälitykseen ja jaettuun muistiin. Sen sijaan epäsuoran vaikutuksen kilpailu samoista resursseista, kuten muistista tai suoritusajasta huomiointi voi olla vaikeaa, sillä oireet vaihtelevat tilanteen mukaan melkoisesti. Virheiden jäljittämisen yksinkertaistamiseksi kannattaa usein toteuttaa omia rutiineja, joiden avulla ongelmia voidaan löytää mahdollisimman tehokkaasti. Rutiinit voidaan toteuttaa joko omana säikeenään, mikä luonnollisesti voi johtaa uusiin ongelmiin, tai sitten sisällyttää ne osaksi säiettä, jonka prioriteetti on matalin ja joka muutenkin yleensä ainoastaan kerää tietoa ohjelman suorituksesta. Se, voidaanko tällaisia rutiineja jättää tuoteversioon, vaihtelee järjestelmän tarkoituksesta, oletetusta loppukäyttäjästä ja monesta muusta yksityiskohdasta riippuen. 4.8 Yhteenveto Prosessit sisältää yhden tai useampia säikeitä saman osoiteavaruuden sisällä. Säie on pienin skeduloitava yksikkö, ja sillä on tilat run, ready ja wait. Näillä tiloilla voi olla alitiloja. Keskeytyksessä säikeen (prosessin) ympäristö (rekisterit ja tilasana) talletetaan ympäristöpinoon. Ajettava säie vaihdetaan vaihtamalla ympäristö toiseksi. Keskeytyksestä palattaessa palautetaan ympäristö.

15 88 Sulautettu ohjelmointi Keskeytyskäsittely voidaan keskeyttää. Käyttöjärjestelmäpyynnöt tehdään keskeytysmekanismin avulla. Säikeiden ja prosessien määrä voi olla rajoitettu järjestelmän toimesta. Erilaiset ohjelmakohtaiset virheenjäljitysrutiinit tavallisia.

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

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 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

Lisätiedot

Arto Salminen,

Arto Salminen, 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

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot

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

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,

Lisätiedot

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

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit Jakso 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä Jakso 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

Luento 8 Ohjelman toteutus järjestelmässä

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 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla

Lisätiedot

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

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit Luento 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla

Lisätiedot

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, TB 109 Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti suoritetut: Tentti Harjoitustyöt Harjoitustyöt 3

Lisätiedot

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä Jakso 8 Ohjelman toteutus järjestelmässä Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla kertaa

Lisätiedot

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

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 "! $# Stallings, Luku 4.1 KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1 %& ()* +,.-0/212321416587912: 12;?5A@ 165 12;

Lisätiedot

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

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Luento 8 Ohjelman toteutus järjestelmässä rosessi rosessin esitysmuoto järjestelmässä Käyttöjärjestelmä -prosessit rosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

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

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat

Lisätiedot

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

Prosessi (4) Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Prosessin elinkaari (9) Jakso 8 Ohjelman toteutus järjestelmässä rosessi rosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 rosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

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

IT K 1 45 K ä yt t öj ä rj estelmät IT K 1 45 K ä yt t öj ä rj estelmät Tenttikysymyksiä ja vastauksia Aliohjelman suoritusperiaate, ts. selvitä pinon käyttö ja paluuarvon välittäminen (3p) 1. Ennen aliohjelman aloittamista kutsuja tallettaa

Lisätiedot

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

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät Sulautetut järjestelmät Luku 2 Sivu 1 (??) Palvelut Käyttöjärjestelmän tehtävänä on tarjota ohjelmoijalla erilaisia palveluita Tyypillisin palvelu, jota sulautetut käyttöjärjestelmät tarjoavat on prosessien

Lisätiedot

Luento 2. Timo Savola. 31. maaliskuuta 2006

Luento 2. Timo Savola. 31. maaliskuuta 2006 UNIX-käyttöjärjestelmä Luento 2 Timo Savola 31. maaliskuuta 2006 Osa I Prosessit Prosessien hierarkia Jokaisella prosessilla on numero (process ID, pid) Jokaisella prosessilla on

Lisätiedot

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

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen Helsingin Yliopisto, tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi (syksy 2006) Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen a. Käyttötarkoitus ja sovellusalue

Lisätiedot

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

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949. Tietokoneen rakenne Luento 1 Tietokonejärjestelmä Ch 1 - Ch 8 [Sta06] Valikoituja paloja John von Neumann ja EDVAC, 1949 TITO-kurssista Luento 1-1 Sisältöä Tietokonejärjestelmä KJ:n näkökulma laitteistoon

Lisätiedot

1. Keskusyksikön rakenne

1. Keskusyksikön rakenne 1. Keskusyksikön rakenne Kuvassa on esitelty TTK-91 esimerkkikoneen keskusyksikkö. Oikeiden tietokoneiden keskusyksiköt ovat luonnollisesti monimutkaisempia, mutta tämä riittää oikein mainiosti asian havainnollistamiseen.

Lisätiedot

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

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

Luento 5 (verkkoluento 5) Suoritin ja väylä Luento 5 (verkkoluento 5) Suoritin ja väylä Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset 1 Suorituksenaikainen suorittimen ja muistin sisältö muisti suoritin konekäskyjen suorituspiirit,

Lisätiedot

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) /~sulo/) 5op, to 12-14, 14, TB 109 Tommi Mikkonen, tommi.mikkonen@tut.fi Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti

Lisätiedot

Prosessi perinteisesti

Prosessi perinteisesti Käyttöjärjestelmät t I Luento 11: SÄIKEETS Stallings, Luku 4.1 Sisält ltöä Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden toteutus ytimessä Säikeen tilat Käyttöjärjestelmän

Lisätiedot

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

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH Käyttöjärjestelmät t I Luento 11: SÄIKEETS Stallings, Luku 4.1 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 11-1 Sisält ltöä Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden

Lisätiedot

Käyttöjärjestelmät II

Käyttöjärjestelmät II LUENTO 1 Käyttöjärjestelmät II Kertaus: KJ-I ja RIO (KJ2 n osalta) Ch 1-8, 11-12 [Stal05] Kustakin luvusta enemmän tai vähemmän alkuosa Jos jokin asiat tässä tuntuvat hatarilta, niin (a) kysykää ja/tai

Lisätiedot

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

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, sovellusohjelmille ja käyttäjille? 2012-2013 Lasse Lensu

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Muistihierarkia Kiintolevyt I/O:n toteutus

Muistihierarkia Kiintolevyt I/O:n toteutus Luento 8 (verkkoluento 9) Järjestelmän ulkoinen muisti I/O Muistihierarkia Kiintolevyt I/O:n toteutus 1 Muistihierarkia Ulkoinen muisti (levymuisti) on halvempaa toteuttaa per tavu Ulkoinen muisti on paljon

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

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

Prosessi (4) Suorituksessa olevan ohjelman esitysmuoto järjestelmässä. Jakso 8 Ohjelman suoritus järjestelmässä. Prosessin elinkaari (9) Jakso 8 Ohjelman suoritus järjestelmässä rosessi CB I/O:n toteutus rosessi (4) Suorituksessa olevan ohjelman esitysmuoto järjestelmässä samalla kertaa järjestelmässä voi suorituksessa monta prosessia joko

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Käyttöjärjestelmät II

Käyttöjärjestelmät II LUENTO 1 Käyttöjärjestelmät II Kertaus: : KJ-I ja RIO (KJ2 n osalta) Ch 1-8, 11-12 12 [Stal05] Kustakin luvusta enemmän n tai vähemmv hemmän n alkuosa Jos jokin asiat tässt ssä tuntuvat hatarilta, niin

Lisätiedot

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

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä. Kertaus: : KJ-I ja RIO (KJ2 n osalta) Ch 1-8, 11-12 12 [Stal05] Kustakin luvusta enemmän n tai vähemmv hemmän n alkuosa Jos jokin asiat tässt ssä tuntuvat hatarilta, niin (a) kysykää ja/tai (b) kerratkaa

Lisätiedot

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

Sisältöä PROSESSIT JA NIIDEN HALLINTA. Prosessi. Prosessi virtuaalimuistissa. Prosessi. Prosessi virtuaalimuistissa. Käyttöjärjestelmät LUENTO 4 Sisältöä PROSESSIT JA NIIDEN HALLINTA Stallings, Luku 3 Prosessi, prosessin kuvaaja Prosessien hallinta Prosessin tilat KJ:n suorittamisesta 1 2 Prosessi Prosessi virtuaalimuistissa Moniajo perustuu

Lisätiedot

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

Prosessi virtuaalimuistissa PROSESSIT JA NIIDEN HALLINTA. Sisältöä. Prosessi virtuaalimuistissa. Prosessi. Prosessi. Käyttöjärjestelmät, Luento 4 LUENTO 4 Prosessi virtuaalimuistissa PROSESSIT JA NIIDEN HALLINTA Stallings, Luku 3 1 Kuva 3.12 4 Sisältöä Prosessi virtuaalimuistissa Prosessi, prosessin kuvaaja Prosessien hallinta Prosessin tilat Kukin

Lisätiedot

PROSESSIT JA NIIDEN HALLINTA

PROSESSIT JA NIIDEN HALLINTA LUENTO 4 PROSESSIT JA NIIDEN HALLINTA Stallings, Luku 3 1 Sisältöä Prosessi, prosessin kuvaaja Prosessien hallinta Prosessin tilat KJ:n perustietorakenteita KJ:n suorittamisesta 2 Syksy 2007, Tiina Niklander

Lisätiedot

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

u vapaakäyntisyys (reentrancy) u Yhteinen koodialue u kullakin oma data-alue, pino, PCB u osoitteet suhteellisia prosessin alun suhteen Käyttöjärjestelmät t I Luento 3: PROSESSIT JA NIIDEN HALLINTA Stallings, Luku 3.1-3.4 Sisält ltöä Prosessi, prosessin kuvaaja Prosessien hallinta Prosessin tilat KJ:n perustietorakenteita KJ:n suorittamisesta

Lisätiedot

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivaatiotietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

Luento 8 Ohjelman toteutus järjestelmässä

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 Käyttöjärjestelmien kehitys 1 Tietokonejärjestelmä Käyttäjä Ohjelmoija Sovellusohjelma

Lisätiedot

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

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

Tenttitärpit. HUOM: Luvataan, että tämä on lopullinen tenttitärppikokoelma, mutta varaan silti oikeuden tehdä pieniä muutoksia, erityisesti: ITKA203 Käyttöjärjestelmät, kesä 2007 Tenttitärpit Tässä on suurin piirtein kaikki vuodesta 2003 alkaen kurssin tenteissä koskaan kysytyt kysymykset, ja mukana on myös muutama uusi. Jos osaat vastata jokaiseen,

Lisätiedot

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux rakenne Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux ydin Ytimen (kernel) päätehtävä on tarjota rajapinta

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

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

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessin elinkaari (10) Prosessin vaihto (4) Prosessin esitysmuoto järjestelmässä (4) Luento 8 Ohjelman toteutus järjestelmässä rosessi CB I/O:n toteutus rosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla kertaa monta prosessia joko samasta tai eri ohjelmasta

Lisätiedot

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen, tommi.mikkonen@tut.fi

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen, tommi.mikkonen@tut.fi 6. Luento: Skedulointi eli Vuoronnus Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Peruskäsitteet Skedulointialgoritmeja Reaaliaikajärjestelmien skedulointi Skeduloituvuuden analysoinnista Yhteenveto Peruskäsitteet

Lisätiedot

Luento 3: PROSESSIT JA NIIDEN HALLINTA

Luento 3: PROSESSIT JA NIIDEN HALLINTA Käyttöjärjestelmät t I Luento 3: PROSESSIT JA NIIDEN HALLINTA Stallings, Luku 3.1-3.4 KJ-I S2005 / Tiina Niklander, kalvot Auvo Häkkinen 3-1 Sisält ltöä Prosessi, prosessin kuvaaja Prosessien hallinta

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Järjestelmän ulkoinen muisti I/O

Järjestelmän ulkoinen muisti I/O Luento 9 (verkkoluento 9) Järjestelmän ulkoinen muisti I/O Muistihierarkia Kiintolevyt I/O:n toteutus 1 Muistihierarkia Ulkoinen muisti (levymuisti) on halvempaa toteuttaa per tavu Ulkoinen muisti on paljon

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 Luento 12: Käyttöjärjestelmät, alkua Tekijät: Antti Virtanen, Timo Lehtonen, Matti Kujala, Kirsti Ala-Mutka, Petri M. Gerdt et al. Mikä on käyttöjärjestelmä

Lisätiedot

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000 Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?

Lisätiedot

Tietokoneen toiminta, K Tavoitteet (4)

Tietokoneen toiminta, K Tavoitteet (4) Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?

Lisätiedot

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

Käyttöjärjestelmät: poissulkeminen ja synkronointi Käyttöjärjestelmät: poissulkeminen ja synkronointi Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet

Lisätiedot

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivointitietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

Monipuolinen esimerkki

Monipuolinen esimerkki Monipuolinen esimerkki Lopuksi monipuolinen esimerkki, jossa ohjelmisto koostuu pääohjelmasta ja kahdesta aliohjelmasta, joista toinen on proseduuri ja toinen funktio. Funktio Sqrt(int n): int Sqrt(int

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa

Toinen harjoitustyö. ASCII-grafiikkaa Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Luento 5 Suoritin ja väylä

Luento 5 Suoritin ja väylä Luento 5 Suoritin ja väylä Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne 1 Suoritin muisti suoritin - CPU ALU CU rekisterit

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5) Luento 5 Suoritin ja väylä Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne Suoritin suoritin - CPU ALU rekisterit CU

Lisätiedot

Aliohjelmien toteutus Suoritin ja väylä

Aliohjelmien toteutus Suoritin ja väylä Aliohjelmien toteutus Suoritin ja väylä Tyypit, Parametrit Aktivointitietue (AT) AT-pino, rekursio Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset 1 Aliohjelmatyypit Korkean tason

Lisätiedot

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017. C! Dynaaminen muisti 9.2.2017 Agenda Kertausta merkkijonoista Dynaaminen muisti Valgrind-perusteet ja esimerkkejä Seuraava luento to 2.3. Ei harjoituksia arviointiviikolla 13.2. 17.2. 2 Palautetta merkkijonoihin

Lisätiedot

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Lasse Leino ja Marko Kahilakoski Helsingin Yliopisto Tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi 18. joulukuuta 2006 Sisältö 1 Säikeet

Lisätiedot

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

Osio 3: Prosessit, siirräntä ja tiedostojärjestelmä Käyttöjärjestelmät I Osio 3: Prosessit, siirräntä ja tiedostojärjestelmä Tiina Niklander, kalvot Auvo Häkkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto! " $#&%' (%+*,- $*./ 0 Stallings, Luku

Lisätiedot

Käyttöjärjestelmän rakenne

Käyttöjärjestelmän rakenne Käyttöjärjestelmän rakenne Tietokonejärjestelmä = Laitteisto + ohjelmisto Sovellus saa laitteiston käyttöönsä kj:n avustuksella CPU ja muisti Oheislaitteet KJ tarjoaa laitteiston käytössä tarvittavat palvelunsa

Lisätiedot

Arto Salminen,

Arto Salminen, 2. Luento: Laitteistorajapinta Arto Salminen, arto.salminen@tut.fi Agenda Arkkitehtuuri Keskeytysjärjestelmä Oheislaiteliitynnät Oheislaitepiirejä Arkkitehtuuri Rekisterirakenteet ja keskeytysjärjestelmä

Lisätiedot

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5 Monitorit Monitori Synkronointimenetelmiä Esimerkkejä Andrews 5.1-5.2, Stallings 5.5 Tavoite Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -

Lisätiedot

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia Monitorit Monitori Synkronointimenetelmiä Esimerkkejä Andrews 5.1-5.2, Stallings 5.5 Tavoite Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Tietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori

Tietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori kevät 2004 TP02S-D Tietokoneen rakenne: Harjoitustyö Motorola MC68030 -prosessori Työn valvojat: Seppo Haltsonen Pasi Lankinen RAPORTTI 13.5.2004 Sisällysluettelo sivu Tiivistelmä... 1 Lohkokaavio... 2

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Sisältöä SÄIKEET, SMP

Sisältöä SÄIKEET, SMP LUENTO 5 Sisältöä SÄIKEET, SMP Stallings, Luku 4 Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden toteutus ytimessä SMP Windowsin säikeet 1 2 Säikeet (multithreading) Prosessi

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

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

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä Luento 6 T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1 Luennoitsija: Otto Seppälä Kurssin WWW: http://www.cs.hut.fi/opinnot/t-106.1240/s2007 Oma Grafiikka Swing-käyttöliittymässä

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Aliohjelmat, foreign function interface Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 3. 2013 Sisältö 1 Aliohjelmien käyttäminen

Lisätiedot

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro: KILPAILIJAN TEHTÄVÄT Kilpailijan nimi / Nro: Tehtävän laatinut: Hannu Laurikainen, Deltabit Oy Kilpailutehtävä Kilpailijalle annetaan tehtävässä tarvittavat ohjelmakoodit. Tämä ohjelma on tehty laitteen

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Tietokoneen toiminta Copyright Teemu Kerola Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Tietokoneen toiminta Copyright Teemu Kerola Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys Tyypit, Parametrit Aktivointitietue (AT) AT-pino Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset

Lisätiedot

Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys

Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys Tyypit, Parametrit Aktivointitietue (AT) AT-pino Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys Tyypit, Parametrit Aktivointitietue (AT) AT-pino Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset

Lisätiedot