Presentation - The Department of Computer Science
Download
Report
Transcript Presentation - The Department of Computer Science
Self-Stabilization as a
Foundation for
Autonomic Computing
Olga Brukman, Shlomi Dolev,
Yinnon A. Haviv, Reuven Yagel.
Ben-Gurion University of the Negev,
Beer-Sheva, Israel
FOFDC 2007, Vienna
Trends in Autonomic Computing
Self-healing, Self-managing, Self-*.
Recovery Oriented Computing [Berkeley,
Stanford].
Autonomic Computing [IBM].
Robust infrastructure for achieving the above is
missing.
Processor.
Operating systems do not stabilize.
Nothing built on top of this platform can be fully
robust.
FOFDC 2007, Vienna
Self-Stabilization: Well Established
Theory !
Self-Stabilization[Dijk’74].
Self-Stabilization [Dolev’2K].
Abstract, stand-alone
algorithms.
Self-stabilization was not
fully deployed in real-life
systems.
Self-stabilizing protocols.
FOFDC 2007, Vienna
Routing Information Protocol
(RIP).
Self-Stabilization
Self-stabilization is achieved through algorithm fully exploring the
system state space.
Self-stabilizing algorithm is continuously executed, and its code is
not corrupted.
FOFDC 2007, Vienna
Self-Stabilization as a Base for
True Autonomic Computing
Well
defined and provable property.
Ability to deal with unpredicted
failures.
Automatic recovery from any state.
FOFDC 2007, Vienna
Self-Stabilization Stack
Self-Stabilizing Program
Stabilization Preserving
Compiler
Self-Stabilizing
Operating System
Self-Stabilizing Processor
FOFDC 2007, Vienna
Self-Stabilization Stack: Non SelfStabilizing Programs
Self-Stabilizing Program
Recovery Oriented
Software
Stabilization
Preserving
Compiler
Eventually Byzantine
Program
Self-Stabilizing Automatic
Recoverer
Self-Stabilizing
Operating System
Self-Stabilizing Processor
Recovery Oriented Program
FOFDC 2007, Vienna
Self-Stabilizing
Processor
Shlomi Dolev, Yinnon A. Haviv
Self Stabilizing Microprocessor
Legal execution of a processor
Every
process starting from an arbitrary state
reaches fetch-decode-execute sequence.
What is a self-stabilizing processor?
Every
execution of the processor starting from
an arbitrary state reaches a safe
configuration, which implies legal execution
after the safe state
FOFDC 2007, Vienna
Self-Stabilizing Processor: How?
Verifying
self-stabilization in existing
processor
Each
circle in the processor automata
has a fetch-decode-execute loop.
Adding
self-stabilization to a
processor
Using
a self-stabilizing watchdog
FOFDC 2007, Vienna
Self-Stabilizing
Operating System
Shlomi Dolev, Reuven Yagel
Self-Stabilizing Operating System
Black box
Reloading
OS code from ROM periodically.
The reloading function is hardwired in ROM
Tailored Solution
Process
scheduling
Memory management
Device drivers
FOFDC 2007, Vienna
Tailored Solution: Scheduling
Fairness and stabilization preservation
Periodic execution
non-maskable interrupts and watchdog
Scheduler state (process table)
correctness
Bounded
index to fix number of processes
Enforcing separation through segmentation
FOFDC 2007, Vienna
Tailored Solution: Memory
Management
Eventual consistency of memory hierarchy
Stabilization preservation
Processes
do not affect other processes
memory
Solutions
Allocate
entire memory
Fixed partitions with continuous monitoring
Lease based dynamic schemes
FOFDC 2007, Vienna
Tailored Solution: Device Drivers
Device
Driver
Controller
I/O Device
OS
Self-stabilizing
protocol
Ping-pong requirement
Exchange requests and replies infinitely often
Progress requirement
Eventually every I/O request is executed according to
specifications
FOFDC 2007, Vienna
Tailored Solution: Device Drivers
Self-stabilizing protocol
1.
Lease based execution of the protocol
OR
2.
Assuming the device controller is selfstabilizing, enforces state consistency
through snapshots.
FOFDC 2007, Vienna
Tailored Solution: Implementation
Prototype based on Intel
Pentium processor
Detailed proof of the
assembly code
correctness
Our prototype shows
that it is possible to
design a self-stabilizing
OS kernel.
FOFDC 2007, Vienna
Self-Stabilization
Preserving Compiler
Shlomi Dolev, Yinnon A. Haviv,
Mooly Sagiv,
Department of Computer Science
Tel Aviv University, Israel
Non-Stabilization Preserving
Compiler
S
high abstraction
language
Compiler
T
machine
language
S and T behave the same only when started in
the initial state.
Existing compilers are non-stabilization
preserving
T may reach an unexpected state due to soft-error
experienced by microprocessor
FOFDC 2007, Vienna
Non-Stabilization Preserving
Compiler: Example
mov ax, 10
mov cx, 0
loop1:
push cx
call f
inc cx
cmp cx,ax
jne loop
for (int i=0; i<10; i++)
f(i)
Compiled code: start with cx=12 inside the loop…
Moreover: Any runtime mechanism can get stuck or
become inconsistent.
Stack, heap
FOFDC 2007, Vienna
Stabilization Preserving Compiler
Enforce invariants
Variable declarations
upon <condition_1> do
<statement_1>
S.P. Compiler
Scheduler
condition_1
…
condition_n
Statement_1
upon <condition_n> do
<statement_n>
Statement_n
FOFDC 2007, Vienna
Recovery Oriented
Software
Olga Brukman, Shlomi Dolev
Software Contains Bugs
Writing self-stabilizing software is hard
Correct and faultless SW is hard
Long-lived running programs, e.g., OS
Heisenbugs, corrupt states, leaked resources
are common…
Usually software is tested when starting
from initial state and considering limited
time scenarios.
FOFDC 2007, Vienna
Fault Model Reflecting Reality
Software packages can be trusted to work as
required after restart.
Eventual Byzantine software.
System administrators and users use reboot to
deal with faults.
Contract between the client, project manager and
programmers, that is checked on line!
Additional (thin) monitoring and recovering layer
is self-stabilizing.
FOFDC 2007, Vienna
Parts in Contract
Specifications Composer
(Project Manager)
Invariants and predicates
important properties on
program IO
Recovery actions
• Programmer
• Best-effort implementation
• Using same IO variables as
specifier
• Still: bugs and
unexpected states
FOFDC 2007, Vienna
26
Environment
Self-stabilizing processor + Self-stabilizing OS
Processes exist and execute their code
Infrastructure for robust monitoring and recovery
Not immediately Byzantine
eventual
Byzantine program
Long enough to do
sufficient job
FOFDC 2007, Vienna
Self-Stabilizing
Recoverer for Eventual
Byzantine Software
Olga Brukman, Shlomi Dolev
Hillel Kolodner,
Haifa Research Labs
IBM, Israel
Middleware Architecture
<Preds,RActs>1
<Preds,RActs>2
…
<Preds,RActs>n
OMR
Kernel
OS
FOFDC 2007, Vienna
Recovery Oriented
Programming
Olga Brukman and Shlomi Dolev
Our Framework: Transforming
Recovery Tuples into Code
External
Monitor
Subsystems
hierarchy
event-driven
monitoring
event-driven
monitoring
Recovery
tuples
External
Monitor
event-driven
monitoring
event-driven
monitoring
Pre-compiler
External
Monitor
event-driven
monitoring
Code
event-driven
monitoring
Subsystem
External
Monitor
FOFDC 2007, Vienna
31
Conclusions
Self-Stabilization as an effective paradigm
for creating robust systems.
Rigorous approach for designing basic
system components
Microprocessor
Operating
system
Compiler
Recovery
Oriented Software
FOFDC 2007, Vienna
Faces Behind the Paper
Recovery Oriented
Software [BDK03, BD06]
Stabilization Preserving
Compiler [DHS05]
Self-Stabilizing
Operating System [DY04]
Self-Stabilizing Processor
[DH06]
FOFDC 2007, Vienna
Thank You!
Questions?