Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.

Slides:



Advertisements
Samankaltaiset esitykset
15. Loogiset operaatiot.
Advertisements

Tietopaketti Big Datasta
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
PROSESSIT Tehtäviä: Limittää usean prosessin suoritus, jotta resurssien käyttö olisi tehokasta, mutta samalla taata, että kaikki prosessit etenevät mielekästä.
JavaScript (c) Irja & Reino Aarinen, 2007
VBA –ohjelmoinnin perusteet
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Vapaa Ohjelmisto.  Vapaa ohjelmisto on ohjelmisto jota voi käyttää, tutkia, muuttaa ja jakaa eteenpäin vapaasti.  FLOSS (Free / Libre Open Source Software)
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Synkronointi Yksi tärkeimmistä rinnakkaisuuteen liittyvistä asioista. semaforit tapahtumalaskurit monitorit.
Käyttöjärjestelmät Johdanto. Kurssimateriaalista 15 lukua, jotka vastaavat enemmän tai vähemmän 15 kahden tunnin pakettia Perustuu Gary Nuttin Operating.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olio-ohjelmoinnin perusteet luento 3
Poikkeuskäsittely- lohkot tMyn1 Poikkeuskäsittelylohkot try-catch Poikkeustilanteiden käsittelymekanismi toteutetaan varatuilla sanoilla try, throw ja.
Työrauha ja haastavat tilanteet
(Joskus puhutaan myös komponenttitestauksesta.) Pienin kokonaisuus, joka on järkevä testata erikseen. ● Perinteisesti yksittäinen aliohjelma. ● Olio-ohjelmien.
Ehto- ja toistolauseet
RSA – Julkisen avaimen salakirjoitusmenetelmä Perusteet, algoritmit, hyökkäykset Matti K. Sinisalo, FL.
5.3.3 Koodin generointi Koodin generointi tarkoittaa objektikoodin eli konekielisen ohjelman tuottamista. Generointi jakautuu kolmeen osatehtävään: 1.Muistin.
Hajautettu laskenta Prosessien hallinta verkossa
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Muistinhallinta. 2 Teknisiä kehitysaskelia §Muisti- ja osoiteavaruuden erottaminen toisistaan l virtuaaliosoitteiden avulla muistin koko voi olla suurempi.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
13. Hyvä ohjelmointitapa (osa 1)
2 - 1 Rio syksy 2004 OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
Tietokoneohjelman suoritus opintojakso Olioajattelu ja –ohjelmointi, osa I Hans Nieminen Syksy 2013.
UNIX ftp://shell.shore.net/members/w/s/ws/Support/OS/UNIX.pdf
11. Javan toistorakenteet
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
C 1. Testaus on ”sarja toimintoja” Itse asiassa, testaus on vuorovaikutusta, jota rytmittää ohjelmiston arviointi. Vaikka on hyödyllistä tunnistaa sarja.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Testaus Testaus Testauksella pyritään löytämään virheitä, jotka sitten korjataan. Yksittäinen testi on yleensä ohjelman suoritus (tietyillä.
Visual Basic -ohjelmointi
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kontrollirakenteet laajemmin
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
1 Rio s05 / Liisa Marttinen Kertaus: Semaforit Semaforin operaatiot: sem s = n; # semaforin alkuarvo P(s); # jos s
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
1 Rio / Auvo Häkkinen Kertaus: Semaforit Semaforin operaatiot: sem s = n; # semaforin alkuarvo P(s); # jos s
Kertaus Näkökulmat: käyttöjärjestelmä rajapintana prosessit resurssit.
21. Rekursio.
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
Ohjelma Mikro-ohjelmointi Symbolinen konekieli Osoitustavat.
Lajittelun sovelluksia Yksilöllisyyden testaaminen Kopioiden poistaminen Mediaani/n:ksi suurimman valinta frekvenssien laskenta/yleisin alkio, l.moodi.
Ohjelmassa tänään Ohjelmointimallit Pseudokieli Modulaarisuus.
VARMUUSKOPIOINTI Näin tehdään Varmuuskopiointi Mac OS X 10.5 Leopard Serverillä, mutta varmuuskopiointi tehdään samalla tavalla myös muissa Mac OS X- käyttöjärjestelmissä,
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op
8. Rekursio.
Poikkeustenkäsittelylohkot try-catch
7. Hyvä ohjelmointitapa..
13. Loogiset operaatiot.
15. Lohkot.
Toisto Toistolausekkeet for, while(ehto){…} ja do {…} while(ehto)
14. Hyvä ohjelmointitapa.
15. Lohkot.
8. Rekursio.
7. Hyvä ohjelmointitapa..
13. Loogiset operaatiot.
Esityksen transkriptio:

Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida niiden suojaamiseksi toistensa toiminnalta. Käyttöjärjestelmän täytyy ottaa huomioon ainakin seuraavat neljä näkökohtaa: 1.Käyttöjärjestelmän on pystyttävä pitämään kirjaa aktiivisista prosesseista. Tähän käytetään prosessielementtejä. 2.Käyttöjärjestelmän täytyy osoittaa prosesseille resursseja ja irrottaa niitä. 3.Käyttöjärjestelmän täytyy suojata kunkin prosessin dataa ja fyysisiä resursseja muiden prosessien tahattomalta toiminnalta. Tähän liittyy myös tietoturva. 4.Prosessin lopputuloksen täytyy olla riippumaton siitä, millä suhteellisella nopeudella prosessi suoritetaan rinnakkaisiin prosesseihin nähden.

Prosessit voidaan jakaa erilaisiin luokkiin riippuen siitä, miten voimakkaasti ne vuorovaikuttavat keskenään: Prosessit, jotka eivät tiedä toistensa olemassaolosta. Kilpailevat samoista resursseista, esimerkiksi printteristä, vaikka eivät olekaan tietoisia toisista ’kilpailijoista’. Käyttöjärjestelmä on vastuussa tästä. Prosessit, jotka ovat epäsuorasti tekemisissä keskenään. Nämä eivät välttämättä tunne toisiaan nimeltä, mutta ovat tietoisia toistensa olemassaolosta, koska ne jakavat jonkin yhteisen resurssin, esimerkiksi I/O-puskurin. Ne toimivat yhteistyössä jakamalla. Prosessit, jotka ovat tietoisia toisistaan voivat tehdä yhteistyötä kommunikoimalla aktiivisesti keskenään (lähettämällä viestejä) ja ne on suunniteltu toimimaan yhdessä jotain tarkoitusta varten. Tarkka rajanveto näiden välille ei välttämättä ole aina mahdollista, jos mielekästäkään.

Keskenään kilpailevien prosessien ongelmat: Poissulkeminen Lukkiutuminen Nälkiintyminen

Kriittiset alueet jaettuja globaaleja resursseja (esim. muistipaikat), joihin useampi prosessi pääsee käsiksi ongelmia syntyy, kun kaksi prosessia kirjoittaa samaan aikaan tai kutsuu samaan aikaan samaa aliohjelmaa, tmv. kriittiselle alueelle päästetään vain yksi prosessi kerrallaan kaksi funktiota: entercritical ja exitcritical

Poissulkemisen vaatimukset (Stallings): Poissulkeminen täytyy pakottaa: Kaikista kriittiselle alueelle pääsyn omaavista prosesseista vain yksi kerrallaan voi olla kriittisellä alueella. Ei-kriittisellä alueellaan pysähtyvä prosessi ei saa vaikuttaa muiden prosessien suoritukseen. Kriittiselle alueelle pyrkivä prosessi ei saa joutua odottamaan loputtomasti – lukkiutumista tai nälkiintymistä ei saa tapahtua. Kun kriittisellä alueella ei ole prosesseja, millä tahansa kriittiselle alueelle pyrkivälle prosessille on annettava lupa siirtyä sinne. Prosessien suhteellisesta nopeudesta tai prosessien määrästä ei tehdä olettamuksia. Prosessi pysyy kriittisellä alueellaan korkeintaan äärellisen ajan.

Ohjelmistolähtöiset menetelmät: Dekkerin ja Petersonin algoritmit

Laitetason ratkaisut: jos vain yksi käsky, ongelmaa ei ole Yksinkertaisin tapa: ei keskeytyksiä kriittisen alueen suorituksen aikana (vain yhden prosessorin järjestelmässä while(true) { ; };

public boolean testset(int i) { if (i == 0) { i = 1; return true; }//if else return false }//testset while(true){ while( testset(vuoro)); ; vuoro=0; } Test and Set

Exchange public void exchange(rekisteri r, muisti m) { int tmp; tmp = m; m = r; r = tmp; }//exchange globaali muuttuja: int vuoro = 0; while(true){ avain = 1; do{vaihda(avain, vuoro)} while(avain == 1); ; vaihda(avain, vuoro); }

Menetelmässä on myös vakavat heikkoutensa: Se käyttää aktiivista odottamista, prosessoriaikaa kuluu, vaikka mitään hyödyllistä ei tehdä. Sitä on vaikea yleistää järjestelmiin, jossa ei ole yhteistä suojattua keskusmuistia. Nälkiintyminen on mahdollista. Koska seuraava kriittiselle alueelle pääsevä prosessi valitaan satunnaisesti, voi jokin prosessi joutua odottamaan loputtomasti. Lukkiutuminen on mahdollista. Jos prosessi P2 pääsee kriittiselle alueelle, ja korkeamman prioriteetin prosessi P1 keskeyttää sen ja pyytää päästä kriittiselle alueelle, voi kyseessä olla lukkiutumistilanne: P1 jää odottamaan P2 poistumista aktiivisessa silmukassa, mutta P2 ei välttämättä koskaan saa prosessoria, koska korkeamman prioriteetin prosessia ei keskeytetä sen vuoksi.