Επισκόπηση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Simulation Commands

Σχετικά έγγραφα
Επισκόπιση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Collecting Messages Statistics

Επισκόπηση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Λεπτοµέρειες υλοποίησης αλγορίθµων

Επισκόπιση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Σφάλµατα επικοινωνίας στο Shawn

Επισκόπηση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Μάθημα 5 ο : Μετάδοση Μηνυμάτων

Γενικά. Σχήµα Ι: Επικοινωνία Client-Server, ExecuteCommand TuniConnection

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης


Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

Χρήση του Ηλεκτρονικού Ταχυδροµείου µεαποµακρυσµένη σύνδεση

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Κατανεμημένα Συστήματα. Javascript LCR example

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ - ΜΕΡΟΣ Γ'

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Α)Εγκατάσταση του προγράµµατος

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Κεφάλαιο Ι : Το περιβάλλον εργασίας και το πρώτο απλό πρόγραµµα σε Java.

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

MESSAGE EDITOR FOR WINDOWS Ο ΗΓΙΕΣ ΧΡΗΣΕΩΣ

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

Κατανεμημένα Συστήματα

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Σύνοψη 3 ης ιάλεξης

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Packet Tracer. ηµιουργία τοπολογίας Βήµα 1: Εκτελούµε το Packet Tracer

Μοντέλο Σύγχρονου ικτύου. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

του και από αυτόν επιλέγουµε το φάκελο εµφανίζεται ένα παράθυρο παρόµοιο µε το ακόλουθο:

Χειµερινό Εξάµηνο

Αντικειμενοστρεφής Προγραμματισμός

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΥΓΕΙΑΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ΧΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΝΟΣΟΚΟΜΕΙΟΥ CARE2X

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

οµήτης παρουσίασης Marzullo και Neiger αλγόριθµος Παράδειγµα Distributed Debugging Εισαγωγικά

Προγραµµατισµός Ι (ΗΥ120)

ΚΕ.ΠΛΗ.ΝΕ.Τ. ΖΑΚΥΝΘΟΥ 2013 ΜΕΡΙΚΕΣ ΠΡΑΚΤΙΚΕΣ ΛΥΣΕΙΣ ΓΙΑ ΟΛΟΥΣ WINDOWS 8

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο


Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Εισαγωγή 3D αντικειµένων. 'Εκδοση 7

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Οι δείκτες στη γλώσσα C

ΑΣΚΗΣΗ 1. Structural Programming

Απαντήσεις. Απάντηση. Απάντηση

Χειµερινό Εξάµηνο

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ANDROID Προγραμματισμός Εφαρμογών

Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΚΕΦΑΛΑΙΟ Web Services

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Το Ηλεκτρονικό Ταχυδροµείο ( ) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο

Καθολικέςκαταστάσεις. Ορισµοί Κατασκευή καθολικών καταστάσεων Παθητική στρατηγική Ενεργητική στρατηγική. Κατανεµηµένα Συστήµατα 04-1

Γενικές Πληροφορίες Πρέπει να προγραµµατίσουµε τα είδη επιλέγοντας τον κωδικό είδους ανάλογο µε την ύπαρξη ζυγαριάς ετικέτας- scanner ή όχι.

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

ιαχείριση Πληροφοριών στο ιαδίκτυο

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Start/Programs/ Administrative Tools/DNS

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Οδηγίες για το Βιβλίο Κοστολογίου στα Γ κατηγορίας βιβλία

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Ποιος είναι ο σκοπός του εργαστηρίου

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοηµοσύνη Ι» 7ο Φροντιστήριο 15/1/2008

Χρησιμοποιώντας συναρτήσεις

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

Τελικό τεστ - απαντήσεις

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

2.1 Αντικειµενοστρεφής προγραµµατισµός

Προηγούµενο Μάθηµα. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

2.2.3 Η εντολή Εκτύπωσε

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT

Transcript:

Επισκόπηση Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Χρήστος Κονίνης Ορέστης Ακριβόπουλος Τρίτη, 2 Νοεµβρίου 2010 Υπολογιστικό Examples Πώς ϕτιάχνουµε µια νέα διεργασία στο shawn Πώς εισάγουµε ένα template processor στο shawn The Processor The Messages Simulation Commands Simulation Commands Για να εκτελέσουµε µια εξοµοίωση πρέπει να δώσουµε στο shawn ένα σύνολο από εντολές Τις εντολές αυτές συνήθως τις γράφουµε σε ένα αρχείο µε κατάληξη.conf (π.χ. hello.conf) στο ϕάκελο shawn/buildfiles Και για να τις εκτελέσουµε δίνουµε την εντολή στο ίδιο ϕάκελο:./shawn -f hello.conf Παράδειγµα ενός hello.conf prepare_world edge_model= simple comm_model= disk_ graph range=1 r e c t _ w o r l d width =5 height =5 count =30 p r o c e s s o r s = h e l l o w o r l d Οι εντολές αποτελούνται από το όνοµα της εντολής ακολουθούµενο από µια σειρά από παραµέτρους, π.χ.: command_name parameter=<value> parameter=<value>... 1. Η εντολή prepare_world δηµιουργεί ένα νέο περιβάλλον εξοµοίωσης: prepare_world edge_model=simple comm_model=disk_graph range=1 2. Η εντολή rect_world κατασκευάζει µια παραλληλόγραµµη περιοχή και τοποθετεί τυχαία κόµβους και τους ϑέτει την διεργασία helloworld: rect_world width=5 height=5 count=50 processors=helloworld 3. Η εντολή simulation εκκινεί την εξοµοίωση µε µέγιστο αριθµό γύρων(iterations) : simulation max_iterations=50

Simulation Commands 1. Η εντολή save_world αποθηκεύει την τρέχουσα τοπολογία(γράφο δικτύου) στο αρχείο που δίνετε από την παράµετρο file: save_world file=topology.xml snapshot=0 2. Η εντολή load_world ϕορτώνει τις ϑέσεις των κόµβων από µια αποθηκευµένη τοπολογία και τους ϑέτει την διεργασία helloworld: load_world file=topology.xml processors=helloworld Την χρησιµοποιούµε όταν έχουµε ένα αντίστοιχο αρχείο αντί της εντολής rect_world 1. Ανοίγουµε ένα αρχείο hello.conf στον ϕάκελο shawn/buildfiles και γράφουµε τις παρακάτω εντολές: prepare_world edge_model= simple comm_model= disk_ graph range=1 r e c t _ w o r l d width =5 height =5 count =30 p r o c e s s o r s = h e l l o w o r l d save_world f i l e = topology. xml snapshot =0 2. Ανοίγουµε µια κονσόλα στον ϕάκελο shawn/buildfiles 3. Εκτελούµε την εντολή:./shawn -f hello.conf Επισκόπηση Επαναλαµβάνουµε τα ϐήµατα 1 ως 3 αλλάζοντας το hello.conf σε : prepare_world edge_model= simple comm_model= disk_ graph range=1 # r e c t _ w o r l d width =5 height =5 count =30 p r o c e s s o r s = h e l l o w o r l d # save_world f i l e = topology. xml snapshot =0 load_world f i l e = topology. xml p r o c e s s o r s = h e l l o w o r l d Examples Πώς ϕτιάχνουµε µια νέα διεργασία στο shawn Πώς εισάγουµε ένα template processor στο shawn The Processor The Messages

Transmission model Μέχρι τώρα κατασκευάζαµε ένα simulation world µε την εντολή: prepare_world edge_model=simple comm_model=disk_graph range=1 Στην οποία αν και δεν δηλώνεται, το transmission model είναι το reliable, δηλαδή όλα τα µηνύµατα αποστέλνονται µε επιτυχία και χωρίς καθυστερήσεις prepare_world edge_model=simple comm_model=disk_graph transm_model=reliable range=1 Γενικά µπορούµε να χρησιµοποιήσουµε πολλαπλά transmission models και κάθε µήνυµα που αποστέλνεται περνάει από κάθε transmission model πριν παραδοθεί στους τελικούς παραλήπτες Message -> ChainTransModel1 -> ChainTransModel2 -> EndTransModel Αν ϑέλουµε ο shawn να κρατάει στατιστικά για τον αριθµό των µηνυµάτων που στάλθηκαν σε µια εξοµοίωση, χρησιµοποιούµε το stats_chain µοντέλο prepare_world edge_model= l i s t comm_model= disk_ graph \ transm_model= s t a t s _ c h a i n \ range=1 chain_transm_model name= r e l i a b l e Προσθέσαµε µια επιπλέον παράµετρο transm_model=stats_chain, που συλλέγει πληροφορίες για το σύνολο των µηνυµάτων που στέλνονται Το task chain_transm_model προσθέτει το µοντέλο reliable που τελικά µεταδίδει τα µηνύµατα Message -> stats_chain -> reliable Collecting Statistics Tasks Example 1. Φτίαχνουµε ένα αρχείο msgstats.conf στον ϕάκελο shawn/buildfiles και γράφουµε τις παρακάτω εντολές: Για να πάρουµε τα στατιστικά που συλλέγει το stats_chain µοντέλο χρησιµοποιούµε την εντολή: dump_transmission_stats : Τυπώνει τον συνολικό αριθµό µηνυµάτων που στάλθηκαν, καθώς και αναλυτικά τον αριθµό των διαφορετικών τύπων µηνυµάτων connectivity : Τυπώνει τον µέσο αριθµό γειτόνων των κόµβων καθώς και τον µέγιστο και ελάχιστο αριθµό γειτόνων prepare_world edge_model= l i s t comm_model= disk_ graph \ transm_model= s t a t s _ c h a i n range=1 chain_transm_model name= r e l i a b l e r e c t _ w o r l d width =50 height =50 count =5000 p r o c e s s o r s = h e l l o w o r l d c o n n e c t i v i t y d u m p _ t r a n s m i s s i o n _ s t a t s 2. Ανοίγουµε µια κονσόλα στον ϕάκελο shawn/buildfiles 3. Εκτελούµε την εντολή:./shawn -f msgstats.conf

Επισκόπηση Examples Πώς ϕτιάχνουµε µια νέα διεργασία στο shawn Πώς εισάγουµε ένα template processor στο shawn The Processor The Messages Πώς εισάγουµε ένα template application στο shawn Προετοιµασία της δοµής των ϕακέλων Ο κώδικας για τις διεργασίες(processors) που κατασκευάζουµε ϑα τοποθετούνται στον ϕάκελο src/legacyapps/ Αν δεν υπάρχει πρέπει να τον κατασκευάσουµε Κατεβάζουµε το ϕάκελο του legacyapps που περιέχει όλα τα απαραίτητα αρχεία: f t p : / / c a r r o t. c t i. gr /DS I / legacyapps. t a r. bz2 Αποσυµπιέζουµε το αρχείο στον ϕάκελο στην ϑέση shawn/src/: t a r x v j f legacyapps. t a r. bz2 ίνουµε την εντολή ccmake../src στον ϕάκελο shawn/buildfiles και µετά: Στην επιλογή LEGACYAPPS_PATH προσθέστε το ϕάκελο /home/<username>/shawn/src/legacyapps c, για να ενηµερωθεί για τις αλλαγές Ενεργοποιήστε την επιλογή CONFIGURE_LEGACYAPPS (πατώντας enter) c, για να ενηµερωθεί για τις αλλαγές g, για να αποθηκεύσει τις αλλαγές Τα αρχεία µιας διεργασίας Κατεβάζουµε το ϕάκελο που περιέχει όλα τα απαραίτητα αρχεία για την υλοποιήση ενός ένα κατανεµηµένου αλγόριθµου π.χ. : f t p : / / c a r r o t. c t i. gr /DS I /SHAWN Flooding Template. t a r. bz2 Αντιγράφουµε τον ϕάκελο στην ϑέση shawn/src/legacyapps/ Από την κονσόλα πηγαίνουµε στον ϕάκελο shawn/buildfiles ίνουµε την εντολή ccmake../src και µετά: c, για να ενηµερωθεί για τον νέο κώδικα που προσθέσατε Παρατηρούµε πως έχει εµφανιστεί µια νέα επιλογή στην πρώτη ϑέση µε το όνοµα της εφαρµογής (MODULE_LEGACYAPPS_FLOODING) Ενεργοποιήστε την επιλογή (πατώντας enter) c, για να ενηµερωθεί για τις αλλαγές g, για να αποθηκεύσει τις αλλαγές Τέλος δώστε την εντολή make για να γίνει compile το shawn Την παραπάνω διαδικασία την εκτελούµε µόνο όταν προσθέτουµε ένα νέο processor στον ϕάκελο legacyapps module.cmake : Περιέχει το όνοµα της νέας εφαρµογής που ενεργοποιούµε µε το ccmake simple_app_message.{cpp/h}: Περιέχει τα µηνύµατα που στέλνει ο αλγόριθµος simple_app_processor.{cpp/h}: Περιέχει τον κώδικα και τις µεταβλητές του αλγορίθµου, εδώ υλοποιούµε όλη την λογική της διεργασίας µας simple_app_processor_factory.{cpp/h}: Παρέχει 2 σηµαντικές συναρτήσεις, την create() και name(), που ϕτιάχνει ένα νέο processor και επιστρέφει το όνοµά του

The Processors Συναρτήσεις που µπορείτε να υλοποιήσετε (1 of 2) Μας επιτρέπουν να υλοποιούµε την λογική των κατανεµηµένων αλγορίθµων µας Μπορούµε να έχουµε πολλούς processors(διεργασίες) σε ένα κόµβο Αλγόριθµο Tree Routing Αλγόριθµο Leader election Εχουν τρεις καταστάσεις Active: Πλήρη λειτουργία Sleep: εν δέχονται µηνύµατα Inactive: Καµία λειτουργία Αν όλοι οι processors σε ένα κόµβο είναι Inactive τότε ο κόµβος γίνεται Inactive Αν όλοι οι κόµβοι είναι Inactive η εξοµοίωση τερµατίζει Ακολουθεί µια λίστα µε ϐασικές συναρτήσεις που µπορείτε να υλοποιήσετε µέσα στον processor void boot() Εκτελείται µια ϕορά για κάθε processors στην αρχή της εξοµοίωσης.χρησιµοποιείται συνήθως για αρχικοποίηση του αλγορίθµου µας. void special_boot() Εκτελείται µια ϕορά για κάθε processors που ϐρίσκεται σε ένα ειδικό (special) κόµβο. Καλείται πριν την boot() void work() Εκτελείται µια ϕορά για κάθε γύρο (iteration) της εξοµοίωσης. Χρησιµοποιείται για την εκτέλεση περιοδικών tasks. Συναρτήσεις που µπορείτε να υλοποιήσετε (2 of 2) Χρήσιµες συναρτήσεις που µπορείτε να καλέσετε bool process_message(messagehandle& ) Εκτελείται όταν ο κόµβος λάβει ένα µήνυµα. Το µήνυµα παραδίδεται στους processors του κόµβου. Μπορεί να λάβει διαφορετικά µηνύµατα οπότε πρέπει να εξετάζουµε τον τύπο του µηνύµατος. bool MyProcessor : : process_message ( const shawn : : ConstMessageHandle& mh ) { const MyMessage mymsg = dynamic_cast < const MyMessage > ( mh. get ( ) ) ; i f ( MyMessage! = NULL ) { / / handle my message r e t u r n t r u e ; } r e t u r n shawn : : P r o c e s s o r : : process_message ( mh ) ; } Ακολουθεί µια λίστα µε ϐασικές συναρτήσεις που µπορείτε να καλέσετε µέσα στον processor void send(messagehandle& ) Στέλνει ένα µήνυµα στους γείτονες π.χ. : send ( new FloodingMessage ( ) ) ; void set_state() Θέτει την κατάσταση του processor π.χ. : s e t _ s t a t e ( Sleep ) s e t _ s t a t e ( I n a c t i v e ) int simulation_round() Επιστρέφει τον γύρο στον οποίο ϐρίσκεται η εξοµοίωση int id() Επιστρέφει το id του κόµβου

Τα µηνύµατα στο Shawn Ολα να µηνύµατα που στέλνουµε είναι κλάσεις και ϐρίσκονται συνήθως στα αρχεία <name>_message.{h/cpp}. Και κληρονοµούν από την κλάση shawn Message c l a s s MyMessage : p u b l i c shawn : : Message { p u b l i c : MyMessage ( ) ; v i r t u a l MyMessage ( ) ; } ; Κάθε πρωτόκολλο υλοποιεί τα δικά του µηνύµατα, δηλαδή διαφορετικές κλάσεις Κάθε processor κάνει cast το γενικό µήνυµα που λαµβάνει στην process_message(messagehandle& ) για να πάρει το δικό του µήνυµα const FloodingMessage mymsg = dynamic_cast < const FloodingMessage > ( mh. get ( ) ) ; Τα µηνύµατα στο Shawn Το παρακάτω µήνυµα έχει µια µεταβλητή id_ και µια συνάρτηση id() για να την διαβάζουµε Αποστολή ενός µηνύµατος : send( new FloodingMessage(3) ) Παράδειγµα κώδικα ενός µηνύµατος (flooding_message.h) c l a s s FloodingMessage : p u b l i c shawn : : Message { p u b l i c : FloodingMessage ( i n t ) ; v i r t u a l FloodingMessage ( ) ; i n l i n e i n t i d ( void ) const throw ( ) { r e t u r n i d _ ; } ; p r i v a t e : i n t i d _ ; } ; Τα µηνύµατα στο Shawn - Παράδειγµα Χρήσιµες διευθύνσεις Προσθέστε τις δυο παρακάτω γραµµές κώδικα στις αντίστοιχες συναρτήσεις void boot ( void ) {... send ( new FloodingMessage ( ) ) ;... } void handle_flooding_message ( const... ) {... cout << " Elaba ena neo Flooding message " << endl ;... } Κάνουµε compile το shawn εκτελώντας στον ϕάλεκο shawn/buildfiles την εντολή make Εκτελούµε το shawn χρησιµοποιώντας το hello.conf αλλάζοντας τον processor σε flooding Οδηγίες εγκατάστασης του shawn (για windows Visual Studio, Linux, MAC): h t t p : / / shawn. s f. net Ubuntu shawn image: f t p : / / c a r r o t. c t i. gr /DS I / ubuntu_shawn_image. 7 z