Font Size: a A A

Analysis Of Single-assignment Of The Java Program Object

Posted on:2012-01-30Degree:MasterType:Thesis
Country:ChinaCandidate:J LiFull Text:PDF
GTID:2208330335497443Subject:Computer software and theory
Abstract/Summary:PDF Full Text Request
As the growing research in multi-core technology and widespread popularity on multi-core architectures, it is very important to provide reliable tools to develop and support multi-thread applications. Besides all other software level faults in applications'production and deployment phase, the nondeterministic memory access sequence in multi-threads program usually leads to the most inexplicable problem like data race and dead lock. The root cause of the data race and dead lock normally has no direct relation to the application's crash point, which makes it difficult to diagnose and fix bugs.To conquer this problem, researchers develop data race detection and deterministic replay tools to diagnose and fix nondeterministic bugs in multi thread programs. However, these tools share a very high runtime overhead because of monitoring the memory access of the programs. The dynamic data race detection algorithms commonly introduce 2x to lOx extra runtime overhead for analyzing multi thread application, and the overhead of deterministic replay algorithms can be 10x to 100x. The large overhead of the data race detection and deterministic replay tools prevents them from widely adoption in software development procedural.Experiments show that there are a large number of objects which are initialized by one thread and then read-only accessed by other threads. Theses objects are called assign-once object. Assign once objects can be accessed by many threads, but can only be written by initializing thread. Eliminating monitors on this kind of objects will greatly reduce the overhead of data race detection and deterministic replay tolls in the same time not affecting the correctness.This paper gives the concept and the formal definition of the assign once object. Then provide a static object assign once analysis algorithm based on that formal definition. Then the object assign once analysis algorithm is implemented for Java language with statically analyzing Java bytecode. The output of the analysis is employed in some state-of-the-art data race detection and deterministic replay systems. Experiments show assign once analysis can efficiently reduce runtime overhead of the above systems, therefore expends the scope of their application.The main contributions of this dissertation are:·give the formal definition of the assign once object, ·provide an static object assign once analysis algorithm,·the analysis result is employed in data race detection system based on LockSet and HappenBefor algorithm and a deterministic replay system, and reduce the runtime overhead by 39%,75% and 62% separately.
Keywords/Search Tags:Assign Once Object, Data Race Detection, Deterministic Replay, Thread Local Object, Compiler
PDF Full Text Request
Related items