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

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

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

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

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

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

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

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

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

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

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

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

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

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Δομές ελέγχου ροής προγράμματος

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Λογισµικό (Software SW) Γλώσσες

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Εκλογή αρχηγού σε σύγχρονο δακτύλιο: Οι αλγόριθμοι LCR και HS. 1 Ο αλγόριθμος LCR (Le Lann, Chang, and Roberts)

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

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

Εντολές επιλογής Επαναλήψεις (if, switch, while)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

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

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

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

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

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

Ιδιοκτησία Αντικειµένου

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

Άρα, Τ ser = (A 0 +B 0 +B 0 +A 0 ) επίπεδο 0 + (A 1 +B 1 +A 1 ) επίπεδο 1 + +(B 5 ) επίπεδο 5 = 25[χρονικές µονάδες]

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

Δομές Δεδομένων (Data Structures)

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εργαστήριο 10 Κλάσεις

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Λύσεις Σειράς Ασκήσεων 5

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

Δομές Δεδομένων & Αλγόριθμοι

Εκλογήαρχηγού. Εισαγωγή Ισχυρά συνδεδεµένος γράφος ακτύλιος µίας κατεύθυνσης Τοπολογία δένδρου. Κατανεµηµένα Συστήµατα 06-1

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ιαφάνειες παρουσίασης #3

Συναρτήσεις και διαδικασίες

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

HY150a Φροντιστήριο 3 24/11/2017

Προγραµµατισµός 2 The shell

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

Δομές Δεδομένων και Αλγόριθμοι

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

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

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

Διάλεξη 6: Εκλογή Προέδρου σε Σύγχρονους Δακτύλιους. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Προγραμματιστικές Τεχνικές

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

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

Εντοπισμός τερματισμού. Κατανεμημένα Συστήματα 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

8. ΠΙΝΑΚΕΣ (ARRAYS) (Πρόχειρο σχέδιο - Μαθήµατος 5) //26. Array.cpp #include <iostream> using namespace std;

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

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

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

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

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

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Θεωρητικό Μέρος. 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++

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ

Transcript:

Επισκόπηση Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Χρήστος Κονίνης Ορέστης Ακριβόπουλος Example Τρίτη, 9 Νοεµβρίου 2010 Υπολογιστικό 1. Αποφασίζουµε για όλες τις µεταβλητές που χρειάζεται ο αλγόριθµός 2. Τις δηλώνουµε στο αρχείο processor.h ως private µεταβλητές π.χ.: private : bool i s _leader_ ; / / ; 3. Τις αρχικοποιείται στον constructor του processor.cpp π.χ.: Processor : : Processor ( ) { is_leader_ = false ; 4. Τις αρχικοποιείται επιπλέον αν χρειάζεται στην boot() ή special_boot() του processor.cpp π.χ.: void Processor : : boot ( void ) { i f ( i d ( ) == 0) { i s _ l e a d e r _ = true ; 5. Τοποθετούµε τον κώδικα για τα περιοδικά tasks στη work() π.χ.: 6. Για κάθε τύπο µηνύµατος ϑα έχουµε µια µέθοδο handle_ τύπος µηνύµατος _message() και τοποθετούµε εκεί τον κώδικα για την επεξεργασία του

Χρήσιµες συναρτήσεις που µπορείτε να καλέσετε Χρήσιµες συναρτήσεις που µπορείτε να καλέσετε - παράδειγµα Οι πιο σηµαντικές συναρτήσεις ενός µηνύµατος είναι: int source_w().id() : Ο κόµβος που έστειλε το µήνυµα. set_size(int) : Θέτουµε το µέγεθος του µηνύµατος, δεν πρόκειται για το πραγµατικό µέγεθος των δεδοµένων που στέλνουµε αλλά για εικονικό µέγεθος int size() : Παίρνουµε µέγεθος του µηνύµατος που έχουµε ϑέσει double timestamp_time() : Η χρονική στιγµή που στάλθηκε το µήνυµα, το ϑέτει αυτόµατα ο κόµβος-αποστολέας Προσθέστε τον παρακάτω κώδικα ώστε να γνωρίζετε από ποιόν πήρατε µήνυµα: void Processor : : handle_flooding_message ( const Message& f l o o d i n g ) throw ( ) { cout << id ( ) << " : Received flooding msg from "<< flooding. source_w Επισκόπηση (1 of 4) Example Μέχρι τώρα για να εκτελέσουµε τις εξοµοιώσεις γράφουµε όλες τις παραµέτρους σε ένα.conf αρχείο Αλλά τι γίνεται σε περίπτωση που ϑέλουµε να έχουµε πιο πολύπλοκο έλεγχο των εξοµοιώσεων; Για παράδειγµα έστω ότι χρειαζόµαστε να εκτελέσουµε 100 ϕορές µια εξοµοίωση for-loops if-then Το είναι ένας διαφορετικός τρόπος για να γράφουµε config αρχεία που µας επιτρέπει µεγαλύτερο έλεγχο της εξοµοίωσης

(2 of 4) (3 of 4) Οι κύριες εντολές ενός config αρχείου είναι: 1. shawn.setglobalvariable("variable","value") : Θέτει µια µεταβλητή, είναι ισοδύναµο µε variable=value στο κλασικό config αρχείο 2. shawn.runcommand( "task-name", "extra parameters") : Εκτελεί ένα µια εντολή (task) µε παραµέτρους Το υποστηρίζει πλήρη σύνταξη Java οπότε µπορείτε: Να δηλώσετε µεταβλητές π.χ. int i = 0 Να τυπώσετε διαγνωστικά µηνύµατα π.χ. System.out.println("i = " + i) Να χρησιµοποιήσετε for-loops π.χ. for(int i=0; i<10; i++) Παράδειγµα αρχείου shawn.runcommand ( " prepare_world ", " edge_model= simple comm_model= disk_graph range =10" ) ; shawn. runcommand ( " rect_world ", " width =5 height =5 count=30 processors=helloworld " ) ; shawn. runcommand ( " simulation ", " max_iterations = 1 0 " ) ; Ισοδύναµο config αρχείο prepare_world edge_model= s i m p l e 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 s i m u l a t i o n m a x _ i t e r a t i o n s =10 (4 of 4) Example Για να ξεκινήσετε µια εξοµοίωση µε το δίνεται την εντολή από τον ϕάκελο buildfiles: Παράδειγµα αρχείου java j a r.. / jshawn allinone. j a r \ s. / shawn \ b c on f _ f il e. jshawn Μετατρέψτε το παρακάτω config σε jshawn και εκτελέστε µια εξοµοιώση: 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 s i m u l a t i o n m a x _ i t e r a t i o n s =10 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

Επισκόπηση - Υλοποίηση Example Ο αλγόριθµος : 1. Στον πρώτο γύρο, ένας processor στέλνει ένα µήνυµα σε όλους τους γείτονές του 2. Μόλις µια διεργασία λάβει ένα µήνυµα: Αν έχει ξαναστείλει µήνυµα τότε το αγνοεί Αν δεν έχει ξαναστείλει µήνυµα, τότε στέλνει ένα µήνυµα στους γείτονές της 3. Η εξοµοίωση τερµατίζει όταν το µήνυµα έχει διαδοθεί σε όλο το δίκτυο (όλες οι διεργασίες έχουν παραλάβει το µήνυµα) - Υλοποίηση Λεπτοµέρειες υλοποίησης του αλγορίθµου : Για την υλοποίηση ϑα χρησιµοποιήσετε το template(σκελετό κώδικα) που ϑα ϐρείτε στην σελίδα του µαθήµατος ϑα χρειαστείτε µια µεταβλητή για τον αλγόριθµο ώστε να διατηρείτε την πληροφορία αν έχει στείλει µήνυµα π.χ.: bool send_msg : Αν έχω ήδη στείλει µήνυµα. Χρειάζεται να τροποποιήσετε µόνο τις µεθόδους special_boot(), boot() και handle_flooding_message() του floodmax_processor.cpp - Πειραµατική αξιολόγιση Πειραµατική αξιολόγηση του αλγορίθµου : Σας Ϲητείται να µετρήσετε: Χρονική πολυπλοκότητα του αλγορίθµου : Ο αριθµός των γύρων (iterations) µέχρι τον τερµατισµό του αλγορίθµου Πολυπλοκότητα µηνυµάτων του αλγορίθµου : Ο αριθµό των µηνυµάτων που στείλανε οι διεργασίες κατά την εκτέλεση του αλγορίθµου Θα εκτελέσετε 10 εξοµοιώσεις του αλγορίθµου Για εξοµοιώσεις ϑα χρησιµοποιήσετε τις τοπολογίες (SHAWN-FixDensity-Topologies.tar.bz2) που σας δίνονται στην σελίδα του µαθήµατος Τα ονόµατα των αρχείων ακολουθούν την εξής σύµβαση: fix-density- αριθµός κόµβων - µέση πυκνότητα κόµβων - διάµετρος δικτύου.xml: 10 κόµβοι διάµετρος 4 fix-density-10-8.8-2.xml: 10 κόµβοι διάµετρος 2 πυκνότητα 8.8

FloodMax - Πειραµατική αξιολόγιση Ακολουθεί ένα παράδειγµα για το πως πρέπει να είναι το config αρχείο που ϑα χρειαστείτε: Παράδειγµα config αρχείου για την Ασκηση 3 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 load_world f i l e = f i x density 10 8.8 2.xml p r o c e s s o r s = f l o o d i n g s i m u l a t i o n m a x _ i t e r a t i o n s =100 d u m p _ t r a n s m i s s i o n _ s t a t s