haku: @keyword muistimalli / yhteensä: 3
viite: 2 / 3
Tekijä: | Ruusu, Henna |
Työn nimi: | Coping with Concurrency: Data race detection and thread safety for Java |
Rinnakkaisuuden haasteet; Kilpatilanteiden havaitseminen ja monisäikeisten Java-ohjelmien turvallisuus | |
Julkaisutyyppi: | Diplomityö |
Julkaisuvuosi: | 2010 |
Sivut: | vii + 55 Kieli: eng |
Koulu/Laitos/Osasto: | Informaatio- ja luonnontieteiden tiedekunta |
Oppiaine: | Tietojenkäsittelyteoria (T-79) |
Valvoja: | Heljanko, Keijo |
Ohjaaja: | Heljanko, Keijo |
OEVS: | Sähköinen arkistokappale on luettavissa Aalto Thesis Databasen kautta.
Ohje Digitaalisten opinnäytteiden lukeminen Aalto-yliopiston Harald Herlin -oppimiskeskuksen suljetussa verkossaOppimiskeskuksen suljetussa verkossa voi lukea sellaisia digitaalisia ja digitoituja opinnäytteitä, joille ei ole saatu julkaisulupaa avoimessa verkossa. Oppimiskeskuksen yhteystiedot ja aukioloajat: https://learningcentre.aalto.fi/fi/harald-herlin-oppimiskeskus/ Opinnäytteitä voi lukea Oppimiskeskuksen asiakaskoneilla, joita löytyy kaikista kerroksista.
Kirjautuminen asiakaskoneille
Opinnäytteen avaaminen
Opinnäytteen lukeminen
Opinnäytteen tulostus
|
Sijainti: | P1 Ark Aalto | Arkisto |
Avainsanat: | data race race detection Java multithreading rinnakkaisuus Java kilpatilanne muistimalli |
Tiivistelmä (fin): | Rinnakkaisuus tuo ohjelmointiin monia haasteita. Eräs keskeinen ongelma ovat tilanteet, joissa useampi kuin yksi säie pyrkii yhtä aikaa käyttämään jaettua muuttujaa. Jos tällaisia tilanteita ei käsitellä asianmukaisesti, ne johtavat ns. kilpatilanteisiin, jotka puolestaan voivat aiheuttaa vakavia virhetilanteita. Kilpatilanteiden havaitseminen on usein vaikeaa, koska perinteiset testausmenetelmät eivät kata kaikkia mahdollisia rinnakkaisuutta sisältävän ohjelman käyttäytymisiä. Tämä diplomityö käsittelee monisäikeisiä Java ohjelmia ja kilpatilanteiden havaitsemista niistä. Työ tarjoaa taustatietoa LIME2-projektille (LightweIght formal Methods for distributed component-based Embedded systems), joka laajentaa aiemmassa LIME-projektissa kehitettyjä työkaluja monisäikeisten ohjelmien käsittelyyn. Javan muistimalli määrittelee perustan monisäikeisten Java-ohjelmien toiminnalle. Työ esittelee muistimallin historiaa, formaaleja määrittelyjä sekä mallin merkitystä ohjelmoinnille. LIME-rajapintaseurantatyökaluun toteutettiin pieniä muutoksia, jotta se toimisi turvallisesti myös monisäikeisten Java-ohjelmien seurannassa. Työkalua on testattu muutamalla useampisäikeisellä ohjelmalla. Tutkielma esittelee kilpatilanteiden havaitsemisen menetelmiä ja arvioi lupaavalta vaikuttavaa työkalua nimeltä RACER. Testeissä kuitenkin ilmeni useita seikkoja, jotka heikentävät sen soveltuvuutta käytettäväksi LIME:n yhteydessä. RACER ei nykyisellään tue Javan uusimpien versioiden sallimia lisämerkintöjä, joiden avulla LIME-rajapintamäärittelyt on toteutettu. RACER myös löytää olemattomia kilpatilanteita, koska se vaatii, että myös muuttujien alustuksen on tapahduttava käyttäen lukitusta, mikä ei yleensä ole tarpeen. Kilpatilanteet on syytä etsiä ennen LIME-työkalujen käyttämistä, jotta LIME:n ei tarvitse ottaa huomioon Javan muistimallin kilpatilanteita sisältäville ohjelmille sallimia käyttäytymisiä. |
Tiivistelmä (eng): | Concurrency in software entails many problems. One of the crucial problems of concurrent programming is to cope with situations when more than one thread tries to access shared data fields. If not properly handled, these situations can result in data races. They, in turn, can lead to serious bugs. Data races are often hard to find as concurrency makes it difficult to cover the program behaviour by conventional testing. This study discusses Java multithreading and data race detection for multithreaded Java programs. It offers some background information on these issues for LIME2 project (LightweIght formal Methods for distributed component-based Embedded systems) that extends a tool set developed in the earlier LIME project to work with multithreaded programs. The Java memory model forms a basis for Java multithreading. Thesis discusses its history, the formal specification and its impact on programming. Small changes are made to LIME interface monitoring tool to make it thread-safe. The tool is tested with a few simple multithreaded programs. State-of-art in race detection for Java programs is reviewed and RACER, a promising data race detection tool, is evaluated. Several issues were found that reduce its applicability in the LIME context. It does not in its current version support Java annotations used in the LIME interface specifications. RACER also finds false positives because it requires variable initialisations to happen when holding an appropriate lock, which is not usually needed. The Thesis concludes with discussion on suitable data race detection methodology for LIME2. Data race detection should be applied before running the LIME monitoring tool with a multithreaded program so that the LIME can assume the program is racefree. |
ED: | 2010-09-01 |
INSSI tietueen numero: 40353
+ lisää koriin
INSSI