This work presents a machine-checked formalisation of the java memory model and connects it to an operational semantics for java and java bytecode. For the whole model, I prove the data race freedom guarantee and type...
详细信息
This work presents a machine-checked formalisation of the java memory model and connects it to an operational semantics for java and java bytecode. For the whole model, I prove the data race freedom guarantee and type safety. The model extends previous formalisations by dynamic memory allocation, thread spawns and joins, infinite executions, the wait-notify mechanism, and thread interruption, all of which interact in subtle ways with the memorymodel. The formalisation resulted in numerous clarifications of and fixes to the existing JMM specification.
Shared-memory parallel programs are hard to get right. A major challenge is that language and hardware memorymodels allow unexpected, erroneous behaviors for executions containing data races. Researchers have introdu...
详细信息
ISBN:
(纸本)9781450343176
Shared-memory parallel programs are hard to get right. A major challenge is that language and hardware memorymodels allow unexpected, erroneous behaviors for executions containing data races. Researchers have introduced dynamic analyses that expose weak memorymodel behaviors, but these approaches cannot expose behaviors due to loading a "future value"-a value written by a program store that executes after the program load that uses the value. This paper presents prescient memory (PM), a novel dynamic analysis that exposes behaviors due to future values. PM speculatively returns a future value at a program load, and tries to validate the speculative value at a later store. To enable PM to expose behaviors due to future values in real application executions, we introduce a novel approach that increases the chances of using and successfully validating future values, by profiling and predicting future values and guiding execution. Experiments show that our approach is able to uncover a few previously unknown behaviors due to future values in benchmarked versions of real applications. Overall, PM overcomes a key limitation of existing approaches, broadening the scope of program behaviors that dynamic analyses can expose.
The purpose of the java memory model is to formalize the behavior of the shared memory in multithreaded java programs The subtlest points of its formalization are causality requirements that serve to provide safety an...
详细信息
ISBN:
(纸本)9783642144028
The purpose of the java memory model is to formalize the behavior of the shared memory in multithreaded java programs The subtlest points of its formalization are causality requirements that serve to provide safety and security guarantees for incorrectly synchronized java programs In this paper we consider the problem of verifying whether an execution of a multithreaded java program satisfies these causality requirements and show that this problem is undecidable
Jackal is a fine-grained distributed shared memory implementation of the java programming language. It aims to implement java's memorymodel and allows multithreaded java programs to run unmodified on a distribute...
详细信息
Jackal is a fine-grained distributed shared memory implementation of the java programming language. It aims to implement java's memorymodel and allows multithreaded java programs to run unmodified on a distributed memory system. It employs a multiple-writer cache coherence protocol. In this paper, we report on our analysis of this protocol. We present its formal specification in mu CRL, and discuss the abstractions that were made to avoid state explosion. Requirements were formulated and model checked with respect to several configurations. Our analysis revealed two errors in the implementation. (C) 2006 Elsevier Inc. All rights reserved.
All multithreaded programs are inherently less predictable. In order to find the relationship between thread execution and memory allocation, one must understand the java memory model (JMM). The JMM model is introduce...
详细信息
ISBN:
(纸本)1932415513
All multithreaded programs are inherently less predictable. In order to find the relationship between thread execution and memory allocation, one must understand the java memory model (JMM). The JMM model is introduced in this paper to understand thread execution. The deterministic replay approach is shown based on the past and ongoing research to understand logical scheduling and interleaving of the threads. The aim of this paper is to investigate an approach of verifying a multithreaded java programs with the use of metrics and the knowledge of JMM.
暂无评论