dreieck.gif(183 kb)

Diplomová práce

Distribuovaná simulace s optimistickým synchronizačním algoritmem

Jakub Pastyřík

email: pajda18@post.cz

|Main| |Dokumentace k distribuované simulaci(html)| |Dokumentace k vizualizaci(html)| |Dokumentace k diplomové práci (.ps)| |Dokumentace k diplomové práci (.html)| |Programová dokumentace (javadoc)|
 

Distribuovaná simulace


Tyto knihovny byly vytvořeny v rámci diplomové práce.


Příklady simulací example_0, example_1, example_2
Třídy pro obsluhu serveru ServerData, ServerGui, ServerReadThread, ServerWriteThread, SettingsForm
Třídy pro obsluhu klienta ClientData, ClientMainThread, ClientReadThread, ClientWriteThread, MainClient, SimulationData
Třídy pro simulaci Server, NetPoint, Generator, DistributedSimulation, QueueWithServer, Transaction, QueueingNetworksExample
J-Sim knihovny unstable_4
Přeložení javac *.java
Spuštění java ServerGui.java (server)
java QueueingNetworksExample_n (klienti)

K překladu je nutné nastavovat cestu k nestandartním(unstable) J-Sim knihovnám !

set CLASSPATH = cesta ke knihovnám

Třídy QueueingNetworksExample, které představují jednotlivé distribuované simulace se musí být ve stejném adresáři
jako ostatní třídy pro obsluhu serveru, pro obsluhu klienta a pro simulaci. J-Sim knihovny mohou byt kdekoliv, ale musi k nim být nastavená cesta CLASSPATH
jak bylo uvedeno výše.

Program spouštějte pouze tam, kde je možné ukládat a vytvářet soubory !!!

1. Ukázkový příklad - example_0

Tento simulace byla vytvořena tak, aby byly vyvolány operace undo, rollback a mechanismus zasílání anti-zpráv.

Ukázkový příklad představuje simulaci, která je distribuovaná do pěti částí. Jednotlivé časti jsou pojmenováný
Pes, Kočka, Lev, Opice, Vlk a odpovídají jím soubory QueueingNetworksExample_1 - QueueingNetworksExample_5.
Simulace by se měla spustit v tomto pořadí. Nejprve server (ServerGui) a a pak klienti (QueueingNetworksExample_1 - 5).


Example_0.jpg(60 kb)

Simulace Vlk (QueueingNetworksExample_4) vygeneruje pouze nekolik událostí, které jsou uměle upraveny, tak
aby v simulaci Lev (QueueingNetworksExample_3) způsobily undo operaci. Simulace Lev musí poslat
anti-zprávu simulaci Opice (QueueingNetworksExample_5). Tato anti-zpráva způsobí rollback operaci.

2. Ukázkový příklad - example_1

Tento simulace byla vytvořena tak, aby obsahovala smyčku v grafu závislostí.

Simulace je rozdělena pouze do tří částí Pes, Kočka, Lev.


Example_1.jpg(60 kb)

Jak bylo uvedeno v dokumetaci v diplomové práci, tak pokud graf závislostí simulačních uzlů obsahuje smyčku může dojít k
uvíznutí celé simulace. Aby se tomu předešlo, tak byl implementován mechanismu, který kontroluje časovou prodlevu serveru.
Pokud tato prodleva je delší než uživatelem nastavená hodnota, server pošle príkazy ke korektnímu ukončení simulace.

server_shoot_1.jpg(60 kb)

A zde je ukázka grafického výstupu serveru.

server_shoot_2.jpg(60 kb)

3. Ukázkový příklad - example_2

Tento simulace byla vytvořena tak, aby ukazovala jak ukladat udalosti do simulace pomoci parametru gate.


Example_2.jpg(60 kb)

Událost ze simulace Pes je poslána do simulace Lev s parametrem gate = 0.
Událost ze simulace Kočka je poslána do simulace Lev s parametrem gate = 1.
Vstupní bod (NetPoint) simulace Lev převezme události od komunikační vrstvy a podle parametru gate je vloží do příslušné fronty v simulaci.

  (c) 2004 Jakub Pastyřík pajda18@post.cz