Machine Assisted Reasoning for Multi - Threaded Java Bytecode - - PowerPoint PPT Presentation

machine assisted reasoning for multi threaded java
SMART_READER_LITE
LIVE PREVIEW

Machine Assisted Reasoning for Multi - Threaded Java Bytecode - - PowerPoint PPT Presentation

Background The Semantics of the JVM Examples Conclusion and Further Work Machine Assisted Reasoning for Multi - Threaded Java Bytecode Mikael Lagerkvist April 2005 Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode Background


slide-1
SLIDE 1

Background The Semantics of the JVM Examples Conclusion and Further Work

Machine Assisted Reasoning for Multi - Threaded Java Bytecode

Mikael Lagerkvist April 2005

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-2
SLIDE 2

Background The Semantics of the JVM Examples Conclusion and Further Work

Goal of Project

Define an operational semantics for an interesting subset of the multi-threaded Java Virtual Machine. Embed the semantics in a proof tool for machine assisted reasoning. Do some examples to show the formalization in action.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-3
SLIDE 3

Background The Semantics of the JVM Examples Conclusion and Further Work

Possible motivation

Formalize the behaviour of Java threads Prove properties of programs Evaluate the proof tool used

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-4
SLIDE 4

Background The Semantics of the JVM Examples Conclusion and Further Work

1

Background

2

The Semantics of the JVM

3

Examples

4

Conclusion and Further Work

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-5
SLIDE 5

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

1

Background Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

2

The Semantics of the JVM

3

Examples

4

Conclusion and Further Work

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-6
SLIDE 6

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

Operational semantics

A method for describing the meaning of programs Defined as a transition relation s

α

→ s′ for systems s and s′, and action α. Usually defined through rules, for example: c1

α

→ c′

1

SeqComp

c1; c2

α

→ c′

1; c2

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-7
SLIDE 7

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

The µ-calculus

First order logic as the base Fixed points of recursive predicates Expressive, “one and a half order” logic

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-8
SLIDE 8

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

VeriCode Proof Tool (VCPT)

Proof assistant Support for operational semantics

The transition relation is a predicate of type system → action → system s

α

→ s′ is expressed as transRel s α s′ Modalities on actions

Lazy induction

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-9
SLIDE 9

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

Java

Java is a modern object-oriented, garbage-collected, multi-threaded, distributed, portable, interpreted programming language.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-10
SLIDE 10

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

The Java Virtual Machine (JVM)

The JVM is a platform for running compiled Java programs. Stacks for computation Direct encoding of class hierarchies Parallel threads of execution Any scheduling policy is valid!

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-11
SLIDE 11

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

JVM Memory layout

A set of running threads A heap of allocated class instances Constant definitions (constant pool)

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-12
SLIDE 12

Background The Semantics of the JVM Examples Conclusion and Further Work Operational Semantics µ-calculus VeriCode Proof Tool Java and the JVM

The putfield(i) instruction

The instruction putfield is followed in the code stream by an argument i. The execution takes values val and objref from the stack. The result is that field i of instance objref is set to value val.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-13
SLIDE 13

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

1

Background

2

The Semantics of the JVM Helpful formulae The Formal Operational Semantics The Semantics in VCPT

3

Examples

4

Conclusion and Further Work

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-14
SLIDE 14

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

Helpful formulae

Some formulae were developed to manipulate lists. For example: at at List Index Element Ex: at [g, e, c] 1 e set set List Index Element List′ Ex: at [g, e, c] 1 h [g, h, c]

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-15
SLIDE 15

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

Excluded features

The following features were excluded. Exceptions Class hierarchies Datatypes other than natural numbers Distribution

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-16
SLIDE 16

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

Semantics overview

Close resemblance to the JVM definition. Semantics in two levels. Method level transitions (→m) System level transitions (→)

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-17
SLIDE 17

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

iadd at method-level

IAdd at CS PC iadd N1 + N2 = N CS, PC, [N1, N2|VS], LS →m CS, PC + 1, [N|VS], LS

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-18
SLIDE 18

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

iadd at system-level

Compute at Ths I TId, [F|T] F →m F ′ set Ths I TId, [F ′|T] Ths′ Ths, Hp, CP → Ths′, Hp, CP

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-19
SLIDE 19

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

The Semantics in VCPT

Direct embedding as explicit formula Follows the formal semantics closely Automation of derivations for concrete systems

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-20
SLIDE 20

Background The Semantics of the JVM Examples Conclusion and Further Work Helpful formulae The Formal Operational Semantics The Semantics in VCPT

Scheduling of threads

The unconstrained choice of next thread in the semantics corresponds to some legal choice of thread Next state is described as the disjunction of the legal choices

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-21
SLIDE 21

Background The Semantics of the JVM Examples Conclusion and Further Work

A Simple Program

1 class Worker extends Thread { 2 Container objref; 3 public Worker(Container objref) { 4 this.objref = objref; 5 } 6 public void run() { 7 while(true) { 8 synchronized(objref) { 9 // do something 10 } 11 } 12 } 13 }

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-22
SLIDE 22

Background The Semantics of the JVM Examples Conclusion and Further Work

One Thread in Bytecode

Code Data referenced PC Instruction goto(1) 1 load(0) 2 getfield(0) 3 dup() 4 store(1) 5 monitorenter() 6 load(1) 7 monitorexit() 8 goto(1) Local variables: 0: Reference to class instance. 1: Stored Container reference. Class variables: 0: Reference to Container instance.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-23
SLIDE 23

Background The Semantics of the JVM Examples Conclusion and Further Work

Proving properties

We will focus on which thread gets to enter the critical section. The predicate t1inCS (t2inCS) is true if thread 1 (thread 2) is in its critical section.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-24
SLIDE 24

Background The Semantics of the JVM Examples Conclusion and Further Work

Simple property

¬Eventually(t1inCS) There is no fairness in the system.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-25
SLIDE 25

Background The Semantics of the JVM Examples Conclusion and Further Work

Simple property

Sometime(¬t1inCS ∧ Eventually(t1inCS)) The queue of a mutual exclusion lock is fair.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-26
SLIDE 26

Background The Semantics of the JVM Examples Conclusion and Further Work

Slightly more advanced property

Always(¬(t1inCS ∧ t2inCS)) The two threads are never in their critical section at the same time.

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-27
SLIDE 27

Background The Semantics of the JVM Examples Conclusion and Further Work Conclusions Further Work

Contributions

The contributions of the thesis are the following. Clear operational operational semantics of Java Bytecode A treatment of multiple threads in the JVM Embedding the JVM semantics in a powerful and interesting proof assistant

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-28
SLIDE 28

Background The Semantics of the JVM Examples Conclusion and Further Work Conclusions Further Work

Conclusions

There is much additional effort involved in making a toolfor proving properties of actual programs The abstract behaviour of Java threads are relatively easy to describe as an operational semantics VCPT is an interesting environment for this kind of work

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-29
SLIDE 29

Background The Semantics of the JVM Examples Conclusion and Further Work Conclusions Further Work

Further work

Model more of the JVM (exceptions, class hierarchies,...) Better treatment of naming issues Integrate more security-guarantees of the JVM Add rewrite simplification to VCPT. Investigate potential for raising the level of abstraction

Mikael Lagerkvist Machine Assisted Reasoning for Java Bytecode

slide-30
SLIDE 30

Questions?