Examen Gedistribueerde Systemen
Academiejaar 2012-2013
Prof: Tom Van Cutsem
Reconstructie van het examen. Vragen zijn exact dezelfde, layout van het document niet. Vragen dienen ingevuld te worden op de opgavebladen (die je dus ook afgeeft)
1 Open vragen (22 pt)
1.1
Client-Server (5 pt)
We hebben verschillende manieren gezien waarop een server binnenkomende requests van clients kan afhandelen:
- Single threaded - Multi-threaded
- Multi-threaded met een thread pool - Event driven
Voor elk van deze aanpakken, leg kort uit wat het principe is en wat de voor- en nadelen van deze aanpak zijn.
1.2
Indirecte communicatie (6 pt)
Omschrijf het doel en de werking van een tuple space. Verduidelijk met een figuur en leg uit hoe processen kunnen communiceren via een tuple space aan de hand van een voorbeeld. Leg uit of en hoe tuple spaces processen ontkoppelen in tijd, ruimte en/of synchronisatie.
1.3
Peer-to-peer systemen (6 pt)
Gedistribueerde hashtabellen zoals Chord vormen een manier om op een gedistribueerde en toch gedecentraliseerde manier sleutels (keys) te verdelen over een netwerk.
- Leg uit op welke manier Chord de sleutels verdeelt over nodes in het netwerk.
- Teken een figuur en gebruik een concreet voorbeeld waarin je aanduidt welke node welke sleutels beheert
- Leg uit hoe een lookup van een sleutel in zijn werk gaat en vermeld hierbij hoe Chord een lookup performantie van O(Log(n)) kan bekomen, waarbij n het maximaal aantal nodes in het netwerk is.
1.4
WWW
Beschrijf kort het HTTP protocol. Wat zijn de belangrijkste verschillen tussen een HTTP GET en POST request? Wat bedoelt men met het feit dat HTTP stateless is, en wat zijn de voor- en nadelen hiervan?
2 Multiple choice vragen (10 pt)
Omcirkel telkens het juiste antwoord. Je krijgt 2 punten per juist antwoord, -1 per fout antwoord, 0 punten per blanco antwoord.
2.1
Networking (2 pt)
TCP is een voorbeeld van:
a) Een virtual circuit protocol b) Een connectionless protocol c) Een network layer protocol d) Alle bovenstaande opties
2.2
Naming en binding (2 pt)
Het Domain Name System is verantwoordelijk voor het vertalen van: a) Leesbare namen naar IP adressen
b) IP adressen naar ethernet MAC adressen
c) Ethernet MAC adressen naar hun overeenkomstige IP adressen d) Interne (intranet) IP adressen naar externe (internet) IP adressen
2.3
Logische klokken (2 pt)
Twee events a en b worden beschouwd als concurrent indien: a) Ze op hetzelfde tijdstip plaatsvinden
b) Er geen causaal verband is zodat noch a -> b noch b -> a c) Ze zich voordoen op verschillende processoren
d) Events a en b verschillende Lamport timestamps hebben
2.4
Consensus (2 pt)
Wanneer we Paxos willen gebruiken als een algoritme om gedistribueerde transacties te committen, welke bewering is dan waar:
a) Paxos zorgt ervoor dat de transacties in seriële volgorde uitgevoerd worden
b) Paxos vermijdt de nood aan een gedistribueerde commit door transacties in isolatie uit te voeren c) Paxos laat toe om een transactie te committen zolang een meerderheid van alle subtransacties
bereikbaar is
d) Paxos vervangt de coördinatie uit het two-phase commit protocol met een fout-tolerante variant
2.5
Security (2 pt)
Een hybride cryptosysteem is er een waar:
a) Een private key wordt gebruikt voor de key exchange en een public key voor de data encryptie
b) Een public key algoritme wordt gebruikt voor de key exchange en een symmetrisch algoritme voor de data encryptie
c) Twee of meer lagen encryptie worden gebruikt op de data voor verhoogde beveiliging
d) Data van de client naar de server wordt geëncrypteerd met een verschillend algoritme dan data van de server naar de client
3 Oefeningen (8 pt)
3.1
Vraag 1 (5 pt)
Gegeven is de code (Java code niet gegeven, red.) voor een dubbelgelinkte lijst. Deze lijst zal waarden opslaan als Java Strings en biedt de methodes add(String), get(int) en remove(int) aan.
- De LinkedList code is niet thread-safe. Geef een scenario waarbij het fout gaat: teken de tijdslijn waarbij twee threads een gelinkte lijst manipuleren en een concurrency bug zich voordoet. Toon ook duidelijk wat de oorspronkelijke staat, de bedoelde eindstaat en de foute eindstaat van de lijst is.
- Pas deze code nu zo aan dat ze thread-safe is. Geef hierbij duidelijk aan welke methodes/welke lijnen code je aanpast.
3.2
Vraag 2 (3 pt)
Hieronder is de code gegeven (in dit document is de code niet gegeven, red.) van een Java RMI programma. - Leg kort uit wat dit programma doet
- Geef de output die in de console zal geprint worden na het uitvoeren van de volgende commando’s (RMIregistry is reeds opgestart):
1) Java mirrorApp s 2) Java mirrorApp c