Gedistribueerd Programmeren - Samenvatting



Vergelijkbare documenten
Fouttolerantie in Gedistribueerde Algoritmen

ling van die eigenschap binnen het model geldt. In het bijzonder bij het wiskundig modelleren van een programma kan een eigenschap met wiskundige zeke

TECHNISCHE UNIVERSITEIT EINDHOVEN ComputerSystemen Deeltentamen B (weken 6..9) vakcode 2M208 woensdag 19 Maart 2003, 9:00-10:30

Take-home Tentamen Protocolvericatie. Universiteit van Amsterdam. 27 Maart 1994

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Beknopte uitwerking Examen Neurale Netwerken (2L490) d.d

Discrete Wiskunde 2WC15, Lente Jan Draisma

Programmeren in Java 3

Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden.

TI-2720 Operating System Concepten. 6 november 2012, uur. docent: H.J. Sips. Dit is een tentamen met 9 open vragen

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

Computerarchitectuur en netwerken. Gedistribueerde IPC

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Semantiek (2IT40) Jos Baeten. Formele Methoden. HG 7.19 tel.: Hoorcollege 1 (29 maart 2007)

Gedistribueerd programmeren

Eerste Toets Concurrency 20 december 2018, , Educ-β.

Cover Page. The handle holds various files of this Leiden University dissertation

Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege.

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Sequentiële Logica. Processoren 24 november 2014

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

CTB1002 deel 1 - Lineaire algebra 1

Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep.

Lineaire algebra I (wiskundigen)

Algoritmes en Priemgetallen. Hoe maak je een sleutelpaar voor RSA?

ONTWERP VAN GEDISTRIBUEERDE SOFTWARE ACADEMIEJAAR STE EXAMENPERIODE, 15 JANUARI 2010, 14U 17U30 VRAAG 1: INLEIDENDE BEGRIPPEN[20 MIN]

Modelleren en Programmeren

Week 3 MODULE KIK 3 Onderwerpen Aandachtspunten. Garbage in, garbage out!

De enveloppenparadox

Computerarchitectuur en netwerken Toets 1 4 okt

Supplement Besliskunde 2017/2018. Inhoudsopgave. Hoofdstuk 1: Missende stof in de verslagen Hoofdstuk 2: Overbodige stof in de verslagen...

Opgave 1b: Toon ook aan dat meer algemeen geldt: Als het lukt met n = a munten in w keer wegen, dan lukt het voor a < n 2a in w + 1 keer wegen.

FACULTEIT ECONOMIE EN BEDRIJFSKUNDE Afdeling Kwantitatieve Economie

Quarantainenet Log Forwarder

Nederlandse samenvatting (Dutch summary)

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

Gedistribueerd programmeren

TI-2720 Operating System Concepten. 21 januari 2013, uur. docent: H.J. Sips. Dit is een tentamen met 9 open vragen

3. Structuren in de taal

TRILLINGEN EN GOLVEN HANDOUT FOURIER

Berekenbaarheid 2015 Uitwerkingen Tentamen 5 november 2015

Module Limieten van de berekenbaarheid : antwoorden

Netwerkdiagram voor een project. AON: Activities On Nodes - activiteiten op knooppunten

Benaderingsalgoritmen

12. BEHEER MODULAIR KWARTAAL

Small Basic Programmeren Text Console 2

c, X/X a, c/λ a, X/aX b, X/X

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

1. Programmeerblokken

computerarchitectuur antwoorden

Algoritmes in ons dagelijks leven. Leve de Wiskunde! 7 April 2017 Jacobien Carstens

Automaten & Complexiteit (X )

Blokmatrices. , I 21 = ( 0 0 ) en I 22 = 1.

Semaforen. Semaforen p. 1/2

In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen.

1.1 Rekenen met letters [1]

Het warmteverlies van het lichaamsoppervlak aan de wordt gegeven door de volgende formule:

Labo IDP. In dit labo gaan we IDP gebruiken voor het analyseren van logische circuits. XOR Q AND. Figuur 1: Een logisch circuit.

VBA voor doe het Zelvers deel 22. Handleiding van Helpmij.nl. Auteur: leofact

Elfde college complexiteit. 23 april NP-volledigheid III

Uitwerkingen oefenopdrachten or

Hoorcollege Logica. Hans-Dieter A. Hiep

Analyse probleem remote execution

g. Je kan nu door op de play knop te drukken je programma versturen naar de EV3 brick waarna het zal uitgevoerd worden.

Quarantainenet Log Forwarder

IN2505 II Berekenbaarheidstheorie Tentamen Maandag 2 juli 2007, uur

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Opgave 2. Binaire informatie

Rekenen aan wortels Werkblad =

PROEFEXAMEN LINEAIRE ALGEBRA donderdag 17 november 2011

Getalformaten, timers en tellers

In de door ons gebruikte demo verloopt het herkennen van beelden in feite in 2 fasen:

Een spoedcursus python

Termherschrijven. Jan van Eijck CWI. Achtergrondcollege Software Evolution, 22 september 2005

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Functioneel programmeren

1 Rekenen in eindige precisie

Vakgroep CW KAHO Sint-Lieven

Nascholing voor leerlingen. Software-ontwikkeling met behulp van Lego Mindstorms

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

Vorig college. IN2505-II Berekenbaarheidstheorie. Turingmachines. Turingmachine en Taal. College 2

Computerarchitectuur. H&P Ch 5. Thread-Level Parallelism

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Lineaire algebra 1 najaar Lineaire codes

3. Geef hier uw gebruikersnaam en wachtwoord in

MARKOV KETENS, OF: WAT IS DE KANS DAT MEVROUW DE VRIES NAT ZAL WORDEN?

Pythoncursus. week 2. cs.ru.nl/pythoncursus

Enkele valkuilen om te vermijden

Polynomen. + 5x + 5 \ 3 x 1 = S(x) 2x x. 3x x 3x 2 + 2

Algoritmen en programmeren: deel 2 - basis

opgaven formele structuren deterministische eindige automaten

1 Inleiding probleembeschrijving

Software Test Document

Programmeren met Arduino-software

Releasenotes versie 1.1 VERSIE A

Universiteit Utrecht Departement Informatica

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Opdrachtformulering (pagina 3 van 7)

MMSE. F. Visuo-constructief vermogen TOTAAL MMSE:../ 30

Transcriptie:

Gedistribueerd Programmeren - Samenvatting Geertjan van Vliet Disclaimer: Aan deze teksten kunnen geen rechten ontleend worden. Bepaalde passages zijn de visie van de auteur en niet die van de docent. Copyright: Een groot gedeelte van de tekst is min of meer letterlijk overgenomen uit het dictaat Gedistribueerd Programmeren van Gerard Tel. Alle rechten tot vermenigvuldiging liggen bij hem. 1 Hoofdstuk 7 Computerprogramma s moeten robuust worden uitgevoerd, zodat uitval van componenten niet leidt tot dramatische gevolgen. Als threads worden getermineerd door het operating system, dan moeten de overige threads dit goed kunnen opvangen. (bijvoorbeeld goed afsluiten, of de fout detecteren) Een thread die net een semafoor heeft en vervolgens crasht in de kritieke sectie kan de andere threads blokkeren. Een oplossing hiervoor die bijna werkte was een soort van try-catch blok. Als een thread dan crasht dan zal het catch(exception) gedeelte de semafoor weer vrijgeven. Dit werkte echter niet omdat het ook mis kan gaan vlak voor het try-statement. Een try rond het pakken (s.p) zetten werkt ook niet, omdat het kan zijn dat s.p crasht zonder de semafoor te pakken, en dan laat het catch blok wel een s.v gaan. Er zijn diverse soorten storingen mogelijk: 1. crashen 2. omissie : overslaan van instructies 3. onjuiste waarde in geheugen of berichten: Byzantijns falen GDP richt zich op crashes die zich elk moment kunnen voordoen. Voorlopig gaan we ervan uit dat het OS geen mededelingen kan doen over gecrashte threads aan hun collega s. 1

1.1 Beslisproblemen Een correct proces crash niet. Bij beslisproblemen moet elk correct proces (dat niet crasht) een uitvoer genereren en voldoen aan voorgangs-, consistentie- en niet-trivialiteitseisen De voortgangs-eis vraagt dat alle correcte processen uiteindelijk iets berekenen. Er zijn drie vormen 1. Deterministische terminatie 2. Probabilistische terminatie (convergentie) 3. Impliciete terminatie (stabilisatie) Deterministische terminatie Er wordt door ieder correct proces een beslissing en schrijft deze beslissing exact éénmaal naar de uitvoervariabele. Probabilistische terminatie De kans dat elk correct proces een beslissing neemt (en dus éénmaal naar de uitvoervariabele schrijf) is 1. Impliciete terminatie Beslissing zijn herroepbaar en de uitvoervariabele wordt telkens verandert. De berekening van elk algoritme is echter eindig en uiteindelijk stabiliseert de beslissing dus. Voorbeelden van beslisproblemen zijn: commit/abort of consensus - alle beslissingen zijn gelijk en electie - een proces beslist op leider en de rest op niet-leider. Niet-trivialiteit : Aan een programma dat altijd dezelfde waarde teruggeeft, onafhankelijk van de invoer is triviaal en niet nuttig te gebruiken. Formeel: Niet-trivialiteit Er is een executie waarin op 0 wordt beslist en een executie waarin op 1 wordt beslist 1.2 Voorbeeld: flexibele electie Er is een situatie waarin een set processen in staat zijn een beslisprobleem robuust uit te voeren. 1. De n gestarte processen zijn volledig verbonden en kunnen dus naar iedereen berichten sturen. 2. Er crashen maximaal t processen. De variabele t is de veiligheidsparameter, die aangeeft hoeveel crashes het programma aankan. 3. Als n klein is dan roept iedereen naar iedereen. 4. Na het roepen ( shouten ) wacht het proces op shouts van n t processen, voor tolerantie van t crashes. 5. Omdat processen mogelijk berichten hebben gehoord van gecrashte processen en andere processen niet, hebben de processen niet allemaal dezelfde informatie. Dit kan leiden tot interpretatieproblemen. 2

Vanwege puntje 5 hierboven is zijn de eisen voor electie verzwakt tot flexibele electie: Het aantal leider beslissingen is tenminste 1 en ten hoogste 1 + 2t. Daarnaast is er nog terminatie : In elke executie waar hoogstens t processen crashen beslist elk correct proces op leider of niet-leider. Worden er meerdere ronden uitgevoerd, dan moeten de berichten onderscheidbaar zijn per ronde, omdat er altijd berichten van een vorige ronde kunnen achterblijven in de INBOX, als gevolg van de robuustheid. Een ontvanger deamon moet actief blijven en alle messages die nog bij een vorige ronde horen weggooien. 1.3 Consensus-algoritmen (7.2) Bij een consensus probleem geldt de volgende eis: Overeenstemming: Alle genomen beslissingen zijn gelijk. Voor ieder probleem wordt een terminatie-eis gespecificeerd en wat dan die gemeenschappelijke beslissing kan of moet zijn. Electie is geen consensus-probleem omdat er juist maar één proces leider mag worden en de rest niet-leider. Is een kloksynchronisatie nu wel of geen consensus-probleem? Dat hangt ervan af of er sprake is van exacte synchronisatie. In dat geval is het wel en consensus-probleem, maar dit probleem blijkt onoplosbaar (?) Een (triviaal) programma dat voldoet aan overeenstemming en terminatie is decide(0) De volgende oplossing maakt gebruik van twee servers die hun waarden geven aan al de clients. De clients wachtn op een bericht. Als een van de servers crasht dan komt een waarde toch nog aan en beslissen alle clienten hetzelfde als de server. De twee servers moeten wel a priori overeenstemming hebben, dus niet alle invoercombinaties zijn toegestaan. Er wordt dan dus aan overeenstemming voldaan. Een client termineert als hij een bericht heeft gekregen. Er is dus ook sprake van terminatie zolang niet beide servers crashen. Nu kunnen we ook een zwakke broadcast proberen. Hierbij komt ieder proces de invoer van hetzelfde serverproces te weten. Er wordt een eis toegevoegd: Broadcast: Als de server niet crasht, is elke uitvoer gelijk aan de invoer x van de server. In het broadcast algoritme zal iedere client de waarde doorsturen naar iedere andere client. Zolang een client niks ontvangt blijft de uitvoer hangen op nul en als dus de invoer van de server nul is, zal de server de uitvoer op nul zetten en niets sturen. Als een correct proces (niet-crashend) aan het eind een 1 geeft, dan hebben gegarandeerd alle andere correcte processen ook een 1 als 3

uitvoer. Er is dus overeenstemming. Er is sprake van implicitie terminatie, dwz stabilisatie. Maar in het geval dat de invoer van het algoritme nul is (via de server) dan wordt er geen beslissing genomen door de processen, want ze blijven hangen op nul en wachten om op 1 te gaan. Er is dus geen terminatie. Een oplossing hiervoor is de sterke broadcast. Hierbij wordt met timeouts gewerkt. Daarvoor moet eerst berekend worden hoelang het maximaal kan duren voordat een bericht met een 1 door iedere client ontvangen is. Deze berekening is niet eenvoudig. 1.4 Stelling van Fischer, Lynch en Paterson - 7.3 Even ter herhaling: Niet-trivialiteit Er is een executie waarin op 0 wordt beslist en een executie waarin op 1 wordt beslist Het gaat hier om verschillende executies, want binnen een executie zijn de uitvoeren allemaal gelijk wegens overeenstemming. Hoe maken we een programma dat asynchroon, terminerend en niet-triviaal is en dat alle invoercombinaties (zie replicate servers) aankan. Fischer, Lynch en Paterson hebben aangetoond dat dit niet kan. Hun stelling is Stelling 7.7 - FLP,1985 Er bestaat geen asynchroon, deterministisch 1-crash robuust consensus protocol Hun bewijs bevat de redenering dat mocht er zo n programma bestaan, noem deze P, dat er een oneindig aantal stappen te verzinnen is binnen zo n programma waarbij er bij elke stap van P nog een proces is dat kan besluiten tot 1 en nog een proces dat kan besluiten tot 0. Er wordt dus niet besloten en dat is in strijd met terminatie. 1.4.1 Het maken van een model voor een bewijs Een model moet precies en kort de relevante eigenschappen van een klasse van computersystemen beschrijven. Het model wat voor het bewijs van FLP gebruikt wordt is het volgende [letterlijk uit dictaat, newlines toegevoegd] : Een protocol bestaat uit n 2 processen, die elk (o.a.) een input register x p en een output register y p hebben. De waarde van y p is 0, 1 of b en dit register mag slechts éénmaal geschreven worden (wanneer proces p beslist). Een configuratie van het protocol bestaat uit de locale toestand van elk proces en de berichtenverzameling van alle berichten, die in de configuratie onderweg zijn. Voor elk bericht is er slechts één proces, dat dit bericht kan ontvangen. In een 4

initiële configuratie zijn alle y p gelijk aan b, en er zijn geen berichten onderweg. Een initiële configuratie is volledig vastegelegd door de waarden van de x p registers. 5