Principles of Multi-Level Reflection for Fault Tolerant Architectures
PRDC'02 (Dec 16-18 2002, Tsukuba, Japan) François Taïani, Jean-Charles Farbre, Marc-Olivier Killijian #
Principles of Multi-Level Reflection for Fault Tolerant - - PowerPoint PPT Presentation
* # Principles of Multi-Level Reflection for Fault Tolerant Architectures PRDC'02 (Dec 16-18 2002, Tsukuba, Japan) Franois Taani, Jean-Charles Farbre, Marc-Olivier Killijian Context Software COTS now in systems with high FT
PRDC'02 (Dec 16-18 2002, Tsukuba, Japan) François Taïani, Jean-Charles Farbre, Marc-Olivier Killijian #
2
⇒ Adaptation needed
⇒ Reflective architectures seem a good choice
3
4
5
separating fault-tolerance from functional concerns
"the ability of a system to think and act about itself"
meta-model (generic connector)
fault-tolerance
meta-interfaces meta-level base-level
control
6
are needed to implement fault-tolerance
– State capture (observation) / State recovery (control) – Method interception (observation) / Duplication (control) – Non-deterministic decision points – …
– Information/controls possible in different layers / abstraction levels – Higher levels (application, language): partial info / rich semantics – Lower layers (OS, middleware): complete info / poor semantics
7
8
ad hoc interlevel coordination fault-tolerance "patches"
OS application middleware
ad hoc connection FT code↔original code
9
OS application middleware
fault-tolerance
generic, uniform meta-interface
10
OS application middleware fault-tolerance
11
POSIX C++ Appli CORBA
class, object, method, attribute, invocation request, concurrency-model, interoperable object reference threads, address space, stack, locks, sockets, queues
12
13
14
15
– Concepts – Primitives / base entities (keywords, syscalls, data types, …) – Rules on how to use them
– Very broad notion (includes programming languages) – Self contained
– Can’t be split in smaller entities within the programming model. – Implemented by more elementary entities within the component. – Implementation is internal ⇒ hidden to component user.
(I)
16
abstraction level CORBA interaction
client server client server
mutex socket thread signal transparent interaction composite interaction chain
Mw. Appli. OS
17
– Coupling between emerging entities of next upper level and implementation entities of lower levels
– translation / aggregation / multiplexing / hiding
– creation / binding / destruction / observation / modification
(III)
abstraction level CORBA interaction client server client server mutex socket thread signal
Mw. Appli. OS
18
Berkeley sockets as seen by the middleware programmer
close | shutdown
send
bound idle accepting connections
accept call accept return
unbound
bind ; listen socket call to recv return from recv
idle new socket waiting for reception
OS
(I)
19
Object Creation Thread Creation Method Invocation
Socket API
bind listen accept recv send shutdown
Mw. OS
(II)
20
Executive Layer Ln+1 Executive Layer Ln Abstraction Level Levn+1 Abstraction Level Levn System's Functional Interface Application Layer LA
– State capture – Monitoring of non-determinism
Abstraction Level Levn-1
(I)
21
Executive Layer Ln+1 Executive Layer Ln Abstraction Level Levn+1 Abstraction Level Levn System's Functional Interface Application Layer LA
– Fault propagation analysis / confinement – Rollback propagation / state recovery
Abstraction Level Levn-1
(II)
22
23
(≈ Translucent Interfaces) can be very powerful
– Accuracy of action & observation from lower levels – Power of correlation and understanding from higher level
– Some low implementation decisions are equivalent when observed at higher levels ( a.b ⇔ b.a, for instance memory management) – Identifying higher level patterns (for instance queue managmnt for Corba requests) can help reduce instrumentation costs.
⇒"Adding higher level semantics to low-level entities"
24