100 likes | 112 Vues
I. A. O. IOA Code Generator (Making IOA Run). Joshua A. Tauber PODC Rump Session July 17, 2000 Joint work with: Steve Garland, Nancy Lynch, Michael Tsai. What. Generate standard language (Java) translation of IOA program that will run in a physically distributed network
E N D
I A O IOA Code Generator (Making IOA Run) Joshua A. Tauber PODC Rump Session July 17, 2000 Joint work with: Steve Garland, Nancy Lynch, Michael Tsai
What • Generate standard language (Java) translation of IOA program that will run in a physically distributed network • Execution should be efficient • No global synchronization
Why • (Short term) Test bed for distributed algorithm design • (Long term) Find practical method for generating code from specifications
How • Make humans do hard thinking • Model and use existing external services (e.g. network, console) • Use library of hand-written data type implementations • Stay in IOA until very last step • Successive refinement • Supports application of other tools
Env System Node-Channel Form Global Specification Node-Channel Form
Abstract Channels • Abstract model for ease of programming (e.g., Reliable FIFO queue): • Algorithm that implements abstract channel in terms of (model of) real channel: Auxiliary Automaton Real channel
Environment Implementation Env Delay Buffer Console Parser
Generated vs. External Automata Env Code to Generate Algorithm Channel
Code Generation Process • Submit IOA program for node algorithm • Generate parser automaton • Compose algorithm, parser (computed), and auxiliary network automata (from library) • Resolve nondeterminism in schedule • Convert implicit ND to explicit ND • Resolve explicit ND (programmer help) • Emit target language code - Link to hand coded-datatype implementations
Truth in Advertising • Assume network implements model • Assumes data type implementations implement axiomatic definitions • No current fault tolerance • Still in progess • Composer • Code generator • Proof of design correctness