https://hal.inria.fr/hal-00786398Dubois, SwanSwanDuboisLPD - LPD - Distributed Programming Laboratory - EPFL - Ecole Polytechnique Fédérale de Lausanne - EPFL - Ecole Polytechnique Fédérale de LausanneGuerraoui, RachidRachidGuerraouiLPD - LPD - Distributed Programming Laboratory - EPFL - Ecole Polytechnique Fédérale de Lausanne - EPFL - Ecole Polytechnique Fédérale de LausanneIntroducing Speculation in Self-Stabilization - An Application to Mutual ExclusionHAL CCSD2013Fault-toleranceSpeculationSelf-stabilizationMutual exclusion[INFO.INFO-DC] Computer Science [cs]/Distributed, Parallel, and Cluster Computing [cs.DC]Dubois, Swan2013-02-08 15:06:282017-10-02 16:06:042013-02-09 12:09:26enReportshttps://hal.inria.fr/hal-00786398/documentapplication/pdf1Self-stabilization ensures that, after any transient fault, the system recovers in a finite time and eventually exhibits. Speculation consists in guaranteeing that the system satisfies its requirements for any execution but exhibits significantly better performances for a subset of executions that are more probable. A speculative protocol is in this sense supposed to be both robust and efficient in practice. We introduce the notion of speculative stabilization which we illustrate through the mutual exclusion problem. We then present a novel speculatively stabilizing mutual exclusion protocol. Our protocol is self-stabilizing for any asynchronous execution. We prove that its stabilization time for synchronous executions is diam(g)/2 steps (where diam(g) denotes the diameter of the system). This complexity result is of independent interest. The celebrated mutual exclusion protocol of Dijkstra stabilizes in n steps (where n is the number of processes) in synchronous executions and the question whether the stabilization time could be strictly smaller than the diameter has been open since then (almost 40 years). We show that this is indeed possible for any underlying topology. We also provide a lower bound proof that shows that our new stabilization time of diam(g)/2 steps is optimal for synchronous executions, even if asynchronous stabilization is not required.