2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing 2014
DOI: 10.1109/pdp.2014.31
|View full text |Cite
|
Sign up to set email alerts
|

Formal Specifications for Java's Synchronisation Classes

Abstract: This paper discusses formal specification and verification of the synchronisation classes of the Java API. In many verification systems for concurrent programs, synchronisation is treated as a primitive operation. As a result, verification rules for synchronisation are hard-coded in the logic, and not verified. These rules describe the concrete semantics of the given synchronisation primitive, and manage how resources are protected by synchronisation.In contrast, this paper describes several synchronisation pr… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
12
1

Year Published

2014
2014
2020
2020

Publication Types

Select...
5
1

Relationship

4
2

Authors

Journals

citations
Cited by 9 publications
(13 citation statements)
references
References 25 publications
0
12
1
Order By: Relevance
“…Particular API instances of the Lock interface would have such distinction embedded in the implementation, like the ReentrantReadWriteLock that provides two sub-locks for the shared and exclusive access. A fully configurable specification that can be related to particular implementations of the lock, like presented in [3], would require further extensions of our specification shown here. Still, the example we presented here is a typical use case for model methods to provide generic, client independent specifications for the purpose of reasoning about data non-interference.…”
Section: Permission-based Reasoning With Model Methodsmentioning
confidence: 99%
“…Particular API instances of the Lock interface would have such distinction embedded in the implementation, like the ReentrantReadWriteLock that provides two sub-locks for the shared and exclusive access. A fully configurable specification that can be related to particular implementations of the lock, like presented in [3], would require further extensions of our specification shown here. Still, the example we presented here is a typical use case for model methods to provide generic, client independent specifications for the purpose of reasoning about data non-interference.…”
Section: Permission-based Reasoning With Model Methodsmentioning
confidence: 99%
“…Instead, their semantics is given with a generic API specification, which is external to the concrete use case. By passing a suitably defined resource predicate one makes such a generic specification concrete [21].…”
Section: Modular Specifications For Synchronisersmentioning
confidence: 99%
“…In each such case a generic specification that would cover the typical usage scenarios is possible. Our Lock specification is not fully generic in this respect, in particular it does not cover Java re-entrant locks, but it can be extended to resemble the ones we developed before for Separation Logic [21] that cover all kinds of Java lock flavours. However, there will always be scenarios that would not fall within such a generic scheme.…”
Section: Modular Specifications For Synchronisersmentioning
confidence: 99%
“…In essence, the problematic points are reasoning about rational fractions [3] and the necessity to provide concrete fractions (or relative amounts [13]) in specifications. Real programming languages bring further challenges, such as re-entrant locks and other complex synchronisation methods, like count-down latches [4] in Java. To provide an intuition how permissions can be treated symbolically, this section discusses two examples.…”
Section: Symbolic Permissions In a Nutshellmentioning
confidence: 99%
“…This relieves both the specifier and the verification tool of the need to, respectively, specify and reason about concrete fractions, which requires dedicated complex decision procedures in first-order reasoning [3]. To specify complex synchronisation scenarios such as Java threads with multi-join possibilities, and latches [4], the system tracks the permission originators in the permission expressions, which can be used to determine the permission return path. To handle all scenarios, under certain conditions, it is allowed to modify this return path.…”
Section: Introductionmentioning
confidence: 99%