DSpace
    • English
    • Deutsch
    • Eesti
  • English 
    • English
    • Deutsch
    • Eesti
  • Login
View Item 
  •   DSpace @University of Tartu
  • Dissertatsioonid 2004 – Theses, MSc, PhD (ETD)
  • 1. TÜ väitekirjad alates 2004 - Theses, PhD, MSc, ETD
  • View Item
  •   DSpace @University of Tartu
  • Dissertatsioonid 2004 – Theses, MSc, PhD (ETD)
  • 1. TÜ väitekirjad alates 2004 - Theses, PhD, MSc, ETD
  • View Item
JavaScript is disabled for your browser. Some features of this site may not work without it.

Static Data Race Analysis of Heap-Manipulating C Programs

Thumbnail
View/Open
vesal_vojdani.pdf (962.0Kb)
Date
2010-11-09
Author
Vojdani, Vesal
Metadata
Show full item record
Abstract
Kaasaegsed arvutiarhitektuurid võimaldavad üheaegselt läbi viia mitmeid arvutusi. Programmide kirjutamine niisuguste süsteemide jaoks on äärmiselt raske, kuna paralleelselt käivitatavate lõimede vaheline koosmõju on ettearvamatu. Üks eriti raskesti tabatav viga mitmelõimelises süsteemis on andmejooks, s.o. olukord, kus mitu lõime üritavad samaaegselt ühele ja samale jagatud mäluasukohale ligi pääseda. See võib kaasa tuua andmete riknemise ja sellega süsteemi kokku jooksmise või muu ebakorrektse käitumise. Staatiline programmianalüüs on formaalne meetod, millega saab välja arvutada programmi kõigi võimalike käitumiste ülemhulga, lahendades teatava andmevoogu kirjeldava võrrandisüsteemi. Käesoleva doktoritöö põhiteesiks on väide, et staatilise programmianalüüsiga on võimalik kindlaks teha andmejooksude puudumine reaalsetes keerukates süsteemides, eriti operatsioonisüsteemide tuumamoodulites. Selliste süsteemide jaoks on analüüside arendamine raskendatud, sest nii andmestruktuurid kui ka neid kaitsvad lukud luuakse alles programmi täitmise ajal. Probleemi ületamiseks on töö raames arendatud kolm uudset meetodit: aadressavaldiste võrduste analüüs, dünaamilise mälu regioon-analüüs ja süsteemkoodile sobiv mälukuju analüüs. Mainitud meetodid on realiseeritud mitmelõimeliste C programmide analüsaatorite raamistikus Goblint ja nende praktilisust on demonstreeritud mitmete vabavaraliste rakenduste ja operatsioonisüsteemi Linux tuumamoodulite analüüsiga.
 
Modern computer architectures are capable of carrying out many computations at the same time. Writing and testing programs for such systems is notoriously difficult because the interaction between concurrently executing threads is unpredictable. A particularly elusive flaw in shared-memory concurrent systems is the data race, a situation where multiple threads may simultaneously attempt to update the same memory location. This may result in data corruption and ultimately system malfunction. Static program analysis is an automated formal method, which computes all possible run-time behaviours of a program by solving a system of data flow equations. This dissertation contends that static analysis can be used to verify the absence of data races in real-world systems, especially operating system modules like Linux device drivers. The challenge in developing static analyses for such code is that both data structures and locks protecting the data are created at run-time. To face this problem, three novel techniques were developed: an abstract domain for equalities between address expressions, a region-based heap abstraction, and a shape domain suitable for low-level programs. We have implemented these techniques in the Goblint analyzer and used it to experimentally validate the contention that verification of race-freedom in real-world systems is possible by means of static analysis.
 
URI
http://hdl.handle.net/10062/15866
Collections
  • 1. TÜ väitekirjad alates 2004 - Theses, PhD, MSc, ETD [3296]

DSpace software copyright © 2002-2016  DuraSpace
Contact Us | Send Feedback
Theme by 
Atmire NV
 

 

Browse

All of DSpaceCommunities & CollectionsBy Issue DateAuthorsTitlesSubjectsThis CollectionBy Issue DateAuthorsTitlesSubjects

My Account

Login

DSpace software copyright © 2002-2016  DuraSpace
Contact Us | Send Feedback
Theme by 
Atmire NV