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 verkossa

Oppimiskeskuksen 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

  • Aalto-yliopistolaiset kirjautuvat asiakaskoneille Aalto-tunnuksella ja salasanalla.
  • Muut asiakkaat kirjautuvat asiakaskoneille yhteistunnuksilla.

Opinnäytteen avaaminen

  • Asiakaskoneiden työpöydältä löytyy kuvake:

    Aalto Thesis Database

  • Kuvaketta klikkaamalla pääset hakemaan ja avaamaan etsimäsi opinnäytteen Aaltodoc-tietokannasta. Opinnäytetiedosto löytyy klikkaamalla viitetietojen OEV- tai OEVS-kentän linkkiä.

Opinnäytteen lukeminen

  • Opinnäytettä voi lukea asiakaskoneen ruudulta tai sen voi tulostaa paperille.
  • Opinnäytetiedostoa ei voi tallentaa muistitikulle tai lähettää sähköpostilla.
  • Opinnäytetiedoston sisältöä ei voi kopioida.
  • Opinnäytetiedostoa ei voi muokata.

Opinnäytteen tulostus

  • Opinnäytteen voi tulostaa itselleen henkilökohtaiseen opiskelu- ja tutkimuskäyttöön.
  • Aalto-yliopiston opiskelijat ja henkilökunta voivat tulostaa mustavalkotulosteita Oppimiskeskuksen SecurePrint-laitteille, kun tietokoneelle kirjaudutaan omilla Aalto-tunnuksilla. Väritulostus on mahdollista asiakaspalvelupisteen tulostimelle u90203-psc3. Väritulostaminen on maksullista Aalto-yliopiston opiskelijoille ja henkilökunnalle.
  • Ulkopuoliset asiakkaat voivat tulostaa mustavalko- ja väritulosteita Oppimiskeskuksen asiakaspalvelupisteen tulostimelle u90203-psc3. Tulostaminen on maksullista.
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