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

Σχετικά έγγραφα
Χειµερινό Εξάµηνο

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

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

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

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

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

Έρευνα στα Ασύρματα Δίκτυα Αισθητήρων WSN

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

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1


Ο έλεγχος στο επίπεδο συστήµατος επικοινωνιών εξασφαλίζει ότι έχουµε µεταφορά στο δίκτυο χωρίς λάθη.

υναµικές οµές εδοµένων

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Επιµέλεια Θοδωρής Πιερράτος

Α. Ερωτήσεις Ανάπτυξης

Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ. Ασκήσεις 1-2 Εισαγωγή

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

(programming interfaceή/και application programming interface API).

Εισαγωγή στην Πληροφορική

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

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

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

CYGWIN Οδηγίες Χρήσης (Συγγραφέας: Γιώργος ούκας)

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

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

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

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

Περίληψη ιπλωµατικής Εργασίας

Προγραμματισμός Χειμερινό Εξάμηνο 2014

Προγραμματισμός Υπολογιστών με C++

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Λειτουργικά Συστήματα (Λ/Σ)

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

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

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

Δομημένος Προγραμματισμός

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

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

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

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Κεφάλαιο 10 ο Υποπρογράµµατα

Αρχίζοντας. Το Joomla τρέχει: Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) PHP MySql

Ενεργοποίηση του πρωτοκόλλου IPv6

Προγραμματισμός Χειμερινό Εξάμηνο 2017

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

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

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Εισαγωγή στην Πληροφορική

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

2.1. Οι λογαριασµοί χρηστών Σύνδεση (login) και αποσύνδεση (logout)

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

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

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

Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός

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

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Η γλώσσα προγραμματισμού C

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

Αρχιτεκτονική Υπολογιστών

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

ίκτυα - Internet Μάθηµα 3ο Ενότητα Β: Το Πρότυπο ΤCP/IP Eισαγωγή - Επικοινωνία µεταξύ δύο Υπολογιστών Παρασκευή 10 NOE 2006 ιευθύνσεις

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

Ανάπτυξη Plugins για το AgentSheets

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Υλοποίηση στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

2η Προγραµµατιστική Εργασία

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

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

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

6. Εισαγωγή στον προγραµµατισµό

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007

Transcript:

Φροντιστήρια Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Γιώργος Μυλωνάς Παρασκευή, 31 Οκτωβρίου, 2008 Αίθουσα Β3 2 ώρες την εβδοµάδα Παρασκευή 11:00-13:00, Β3 Θεωρία Απορίες - ιευκρινίσεις Προετοιµασία εξέτασης Ασκήσεις Απορίες - ιευκρινίσεις Απαντήσεις Πρακτική Γλώσσα προγραµµατισµού nesc Υλοποίηση αλγορίθµων στο περιβάλλον TinyOS Εκτέλεση στο περιβάλλον TOSSIM Εργαστήρια Απορίες Σχετικά µε το εργαστήριο 3 ώρες την εβδοµάδα Υπολογιστικό - ύο ϐάρδιες Τρίτη 15:00-18:00 Πέµπτη 15:00-18:00 4 σετ εργαστηρίων (αν προλάβουµε ;) 1-2 ϑέµατα Πρακτική Εκτέλεση αλγορίθµων στο περιβάλλον TOSSIM Υλοποίηση αλγορίθµων σε nesc Για κάθε ολοκληρωµένη παρακολούθηση +0.75 bonus στον τελικό ϐαθµό Για οτιδήποτε χρειαστείτε ϑα µε ϐρείτε στο ΤΜΗΥΠ: Προκατ τµήµατος Καθηµερινά - µέχρι τις 5 το απόγευµα Τηλ. - 2610 997541 Μέσω e-mail: mylonasg@ceid.upatras.gr Χρήστος Κονίνης: koninis@ceid.upatras.gr

Ανάλυση συστηµάτων Μοντέρνα συστήµατα Μια ϐασική µέθοδος για την µελέτη ενός συστήµατος είναι η top-down προσέγγιση µε ιεραρχικό τρόπο. Αρχικά αφαιρούµε όλες τις τεχνικές λεπτοµέρειες και µελετάµε το σύστηµα σε υψηλό επίπεδο Στην συνέχεια, µελετάµε συγκεκριµένες παραµέτρους και τους τρόπους που επηρεάζουν την απόδοση του συστήµατος Επίπεδο προς επίπεδο ϐήµα, ϐήµα καταλήγουµε στο τελικό σύστηµα, στις πραγµατικές συνθήκες Αυτή η προσέγγιση οδηγεί σε καλά αποτελέσµατα για να οργανώσουµε ενα µεγάλο εύρος δοµών Οι ιεραρχικές, κεντρικοποιηµένες προσεγγίσεις έχουν οδηγήσει σε πολύ καλές λύσεις: τα σηµερινά συστήµατα π.χ. συστήµατα διαχείρισης δεδοµένων, κινητής τηλεφωνίας Οµως ο κόσµος γίνεται ολοένα και πιο πολύπλοκος. Είναι αδύνατο να αγνοήσουµε ότι πολλά µοντέρνα συστήµατα έχουν τελείως διαφορετική δοµή π.χ. η ευστάθεια και αποδοτικότητα των σύγχρονων πολιτικό-οικονοµικών συστηµάτων ϐασίζεται σε αποκεντρωτικούς, κατανεµηµένους µηχανισµούς που πρέπει να αυτό-οργανώνονται Το Internet είναι ένα γνήσιο παράδειγµα µιας αντίστοιχης προσέγγισης σε τεχνολογικό επίπεδο Ακόµα δεν µπορούµε να αντιληφθούµε πως να οργανώσουµε τεράστιες συλλογές συσκευών µε ετερογενείς δυνατότητες Πρόσφατα παρατηρείται µια στροφή από κεντρικοποιηµένα συστήµατα σε κατανεµηµένα δίκτυα που αυτο-οργανώνονται Κατανεµηµένα συστήµατα Θεωρητική Μελέτη Κατανεµηµένων συστηµάτων Ενα κατανεµηµένο σύστηµα: Αποτελείται από ένα πλήθος αυτόνοµων κόµβων που επικοινωνούν µεταξύ τους µε κάποιο τρόπο για την επίτευξη ενός συγκεκριµένου κοινού στόχου Μπορεί να χαρακτηρίζεται από πλήθος παραµέτρων Πλήθος περιπτώσεων που µπορεί να χρησιµοποιηθεί ένα τέτοιο σύστηµα Πλήθος απαιτήσεων λειτουργικότητας ανάλογα µε την εφαρµογή Η µελέτη των κατανεµηµένων συστηµάτων είναι ιδιαίτερα περίπλοκη διαδικασία. Η µελέτη ενός κατανεµηµένου συστήµατος σε ϑεωρητικό επίπεδο προϋποθέτει: Την µοντελοποίηση του συστήµατος αφαίρεση των τεχνικών λεπτοµερειών Αυτό προϋποθέτει ότι µπορούµε να αναγνωρίσουµε τα τεχνικά χαρακτηριστικά που έχουν κεντρική σηµασία Οσο πιο αφαιρετικό είναι το µοντέλο, τόσο γενικότερη είναι η µελέτη µας Ορισµός του προβλήµατος σύµφωνα µε το µοντέλο Σχεδιασµός αλγοριθµικών λύσεων Μελέτη της συµπεριφοράς του συστήµατος Απόδειξη ορθότητας Μέτρηση πολυπλοκότητας

Περιορισµοί Θεωρητικής Μελέτης Πειραµατική Μελέτη Κατανεµηµένων συστηµάτων Η µελέτη ενός κατανεµηµένου συστήµατος σε ϑεωρητικό επίπεδο προσφέρει ένα ϐασικό υπόβαθρο για την κατανόηση της συµπεριφοράς και την αυστηρή διατύπωση της απόδοσης του. Οµως εµπεριέχει κινδύνους: Η αφαίρεση ορισµένων τεχνικών λεπτοµερειών µπορεί να µας οδηγήσει σε µη ϱεαλιστικές / µη εφαρµόσιµες λύσεις Η µέτρηση της πολυπλοκότητας δεν υπολογίζει τις κρυφές σταθερές Μια λύση χειρότερης πολυπλοκότητας µπορεί στην πράξη να είναι καλύτερη Μερικές ϕορές είναι πολύ δύσκολο (και ίσως αδύνατο) να αναλυθεί η συµπεριφορά ενός συστήµατος µε ϑεωρητικά εργαλεία Μια διαφορετική προσέγγιση είναι η υλοποίηση συστηµάτων και η πειραµατική αξιολόγηση τους Υλοποίηση της λύσης σε πειραµατικό πλαίσιο π.χ. προσοµοιωτής, εργαστηριακές εγκαταστάσεις Μελέτη της συµπεριφοράς του συστήµατος σύµφωνα µε ελεγχόµενα σενάρια Μέτρηση της πραγµατικής απόδοσης του συστήµατος Αµεση επιβεβαίωση για την εφαρµοσιµότητα µιας λύσης στις πραγµατικές υφιστάµενες τεχνολογίες Τα αποτελέσµατα είναι µεταφέρσιµα στις πραγµατικές συσκευές ιττή Προσέγγιση Κύκλος Θεωρητικής και Πειραµατικής Προσέγγισης Η κάθε προσέγγιση έχει ϑετικά και αρνητικά σηµεία: Η Θεωρητική µελέτη προσφέρει λύσεις που είναι αποδείξιµα σωστές, αποδοτικές... που µπορεί να µην είναι εφαρµόσιµες ή πολύ δύσκολο να προγραµµατιστούν Η πρακτική µελέτη αντιµετωπίζει άµεσα τα τεχνολογικά ϑέµατα... που µπορεί να µην είναι καινοτόµες και αποδοτικές σε µεγάλα συστήµατα Για να είµαστε αποτελεσµατικοί πρέπει να ακολουθήσουµε διττή προσέγγιση.

Η πλατφόρµα που ϑα χρησιµοποιήσουµε στο εργαστήριο Αποτελείται από τρία ϐασικά µέρη: TinyOS: ϐιβλιοθήκη - λειτουργικό σύστηµα nesc: γλώσσα προγραµµατισµού TOSSIM: εξοµοιωτής Πλεονεκτήµατα: Σχετική ευκολία χρήσης οκιµασµένες λύσεις Υπάρχουσα τεκµηρίωση Εκδοση 1.1.x Λειτουργικό σύστηµα TinyOS Πολύ µικρό σε µέγεθος (και απαιτήσεις) Σχεδιασµένο ειδικά για συστήµατα µε λιγοστούς πόρους και προσανατολισµένο στην εξοικονόµηση ενέργειας (ασύρµατα δίκτυα αισθητήρων) Μπορεί να χρησιµοποιηθεί για τη ανάπτυξη κατανεµηµένων συστηµάτων (ειδικού) σκοπού Παρέχει ένα σύνολο από υπηρεσίες στο χρήστη (ασύρµατη και σειριακή επικοινωνία, χειρισµός interrupt, κτλ) Είναι περισσότερο µία ϐιβλιοθήκη, παρά ένα λειτουργικό σύστηµα (από µια άποψη) Open-source project, διαθέσιµο για Windows και Linux Στα Windows χρειάζεται το CygWin για να λειτουργήσει Είναι εγκατεστηµένο σε συγκεκριµένα µηχανήµατα στο υπολογιστικό κέντρο Γλώσσα προγραµµατισµού nesc Περιβάλλον εξοµοίωσης TOSSIM Το προγραµµατιστικό µοντέλο του TinyOS nesc = network embedded system C Βασίζεται στη C Τα αρχεία nesc έχουν την κατάληξη.nc Το TinyOS και οι ϐιβλιοθήκες του είναι γραµµένες κι αυτές σε nesc Η σύνταξή της διευκολύνει κάποιες λειτουργίες σε συστήµατα µε περιορισµένους πόρους Πολύ εύκολος τρόπος επικοινωνίας µεταξύ διεργασιών (που εκτελούνται σε διαφορετικές συσκευές) Μικρός κώδικας απλή διαχείριση µνήµης Ενας εξοµοιωτής για το TinyOS Επιτρέπει πειραµατική µελέτη κώδικα nesc στο PC σας Περιβάλλον σε γραµµή εντολών και σε γραφικό (παραθυρικό) περιβάλλον Αρκετά ευέλικτος, υπάρχουν αρκετά plugin που επεκτείνουν τη λειτουργικότητά του Προσφέρει εύκολο τρόπο για να ορίσουµε τοπολογίες δικτύων Μπορούµε να µελετήσουµε σφάλµατα επικοινωνίας και σφάλµατα τερµατισµού

Γενικά Θέµατα Προγραµµατισµού στην nesc (1) Βασίζεται στην C εµπλουτισµένη µε ορισµένα στοιχεία αντικειµενοστραφούς προγραµµατισµού Χρησιµοποιεί το µοντέλο των Interface (ϐλ. JAVA) Αντί για αντικείµενα έχει Components Ολες οι τοπικές µεταβλητές είναι αυστηρά private Η διασύνδεση µε άλλα Components γίνεται αυστηρά µέσω Interfaces εν προσφέρει καθολικό χώρο ονοµάτων Βασίζεται στην ιδέα της συνδεσµολογίας των Components ιαχωρισµός υλοποίησης και διασύνδεσης Μια προσέγγιση µε στόχο την επεκτασιµότητα και προσαρµοστικότητα του κώδικα Γενικά Θέµατα Προγραµµατισµού στην nesc (2) Εισαγωγή στα Components Οταν γίνεται η µεταγλώττιση του κώδικα, η διασύνδεση µεταξύ των component γίνεται στατικά. Ενα component δεν µπορεί να έχει (απ ευθείας) πρόσβαση σε µεταβλητή σε άλλο component Ενα component δηλώνει τις λειτουργίες που µπορεί να εκτελέσει ΚΑΙ τις λειτουργίες άλλων component που ϑέλει να καλέσει, όταν γράφουµε τον κώδικα 3 λόγοι γι αυτό: 1. Αποδοτική υλοποίηση 2. Η λειτουργία των software components να µοιάζει µε αυτή των hardware components. 3. Επαναχρησιµοποίηση κώδικα Ενα µέρος της δυσκολίας στη nesc έγκειται στον τρόπο που γίνεται η διασύνδεση µεταξύ components Μπορούµε να δούµε κάθε component σαν ένα µαύρο κουτί Καθορίζει τις εισόδους και τις εξόδους του, δηλώνοντας ότι χρησιµοποιεί ένα interface και ότι παρέχει κάποιο άλλο interface Ενα component µπορεί να παρέχει και να χρησιµοποιεί πολλά interface. Οταν ένα component χρησιµοποιεί κάποιο interface, το κάνει για να έχει πρόσβαση στη λειτουργικότητα κάποιου άλλου component Οταν ένα component παρέχει κάποιο interface, δηλώνει τον τρόπο που τα υπόλοιπα component µπορούν να το χρησιµοποιήσουν

Η οµή των Προγραµµάτων / Εφαρµογών Παράδειγµα Εφαρµογής (1) Το component LCR υλοποιεί έναν αλγόριθµο εκλογής αρχηγού. Μια εφαρµογή χωρίζεται σε δύο µέρη: Modules: Τα component που υλοποιούµε τις λειτουργίες του συστήµατος. Κάθε module ορίζει τα interface χρησιµοποιεί και παρέχει και κατόπιν υλοποιεί τις λειτουργίες. Configurations: Ορίζουν τη διασύνδεση των component που χρησιµοποιεί µια εφαρµογή. Οι εφαρµογές που ϑα αναπτύξουµε ϑα έχουν πολλά modules αλλά µόνο ένα configuration. Χρησιµοποιεί τα interface SendMsg και ReceiveMsg για την ανταλλαγή µηνυµάτων Το αρχείο LCR.nc περιέχει το module LCR 1. Ορίζει τα interface που χρησιµοποιεί 2. Υλοποιεί το component LCR Για να λειτουργήσει πρέπει να διασυνδεθεί µε το component GenericComm Το αρχείο MyApp.nc περιγράφει το configuration MyApp 1. ηλώνει την χρήση των component LCRM και GenericComm 2. Συνδέει τα interface SendMsg και ReceiveMsg που προσφέρει το GenericComm µε αυτά που χρησιµοποιεί το LCR Παράδειγµα Εφαρµογής (2) Παράδειγµα Εφαρµογής (3) LCR.nc module LCR{ provides { interface LeaderElection; uses { interface SendMsg; interface ReceiveMsg; implementation { //... MyApp.nc configuration MyApp { implementation { components LCR, GenericComm; LCR.SendMsg -> GenericComm.SendMsg; LCR.ReceiveMsg -> GenericComm.ReceiveMsg;

Εισαγωγή στα Interfaces (1) Εισαγωγή στα Interfaces (2) Τα interface παρέχουν δύο µηχανισµούς: command και event Command: ένα component που ϑέλει να χρησιµοποιήσει τις λειτουργίες ενός άλλου, πρέπει να χρησιµοποιήσει ένα command από αυτά που προσφέρει το interface στην ουσία πρόκειται για παραδοσιακές συναρτήσεις Event: ένα καλούµενο component όταν ολοκληρώσει την εργασία που του έχει ανατεθεί ϑα στείλει το αντίστοιχο event στο component που το έχει καλέσει γνωστά και ως call back Commands και Events χρησιµοποιούνται σε διαφορετικές χρονικές στιγµές Σε ένα component που το προσφέρει ένα interface το command είναι σηµείο εισόδου και το event είναι σηµείο εξόδου... σε ένα component που χρησιµοποιεί ένα interface το command είναι σηµείο εξόδου και το event είναι σηµείο εισόδου Ανάλογα µε το αν παρέχουν ή χρησιµοποιούν το interface, τα component πρέπει να προσφέρουν την υλοποίηση των αντίστοιχων command ή event Το component που προσφέρει ένα interface πρέπει να υλοποιεί όλα τα command Το component που χρησιµοποιεί ένα interface πρέπει να υλοποιεί όλα τους διαχειριστές των event Παράδειγµα Interface (1) Παράδειγµα Interface (2) Ενα πολύ ϐασικό interface είναι το StdControl Χρησιµοποιείται για να αρχικοποιήσει, να εκκινήσει ή να σταµατήσει ένα component Ορίζει 3 command δεν προσφέρει καµία έξοδο (event) Η λειτουργία του κώδικά µας ξεκινά από την αρχικοποίηση ενός component που ονοµάζεται Main StdControl.nc interface StdControl { command result_t init(); command result_t start(); command result_t stop(); Μπορούµε να σκεφτούµε τα event ως µια µορφή interrupt, αφού είπαµε ότι τα software µοιάζουν στη λειτουργία τους µε τα hardware components... ή ως ένα signal (ϐλ. POSIX) Για κάθε event πρέπει να υλοποιήσουµε ένα διαχειριστή (event handler) ReceiveMsg.nc interface ReceiveMsg { event TOS_MsgPtr receive(tos_msgptr m);

Παράδειγµα Interface (3) Γενικά, µπορούµε να ϕανταστούµε πώς υπάρχει µια ϱοή ελέγχου από τα ανώτερα component προς τα κατώτερα Οσο πάµε πιο κάτω πλησιάζουµε πιο πολύ στο TinyOS Οταν καλούµε µια εντολή µπορούµε να ϑεωρήσουµε ότι πάµε πιο κάτω, ενώ όταν µας επιστρέφεται ένα event πάµε προς τα πάνω. SendMsg.nc interface SendMsg { command result_t send(uint16_t address, uint8_t length, TOS_MsgPtr msg); event result_t senddone(tos_msgptr msg, result_t success); Παράδειγµα Interface (4) LeaderElection.nc interface LeaderElection { command result_t init(uint16_t deviceid); async command result_t elect(); event result_t electdone(uint16_t leaderid, uint8_t isleader); command uint8_t getstatus(); command uint16_t getleaderid(); Παράδειγµα Εφαρµογής Επικοινωνία στο TinyOS µε Active Messages Μια πολύ απλή εφαρµογή Εχουµε ένα πλήρες δίκτυο Οι συσκευές διατηρούν έναν αριθµό (είσοδος από κάποιο component ) Θέλουµε να υπολογίσουν το άθροισµα όλων των αριθµών Η επικοινωνία στο TinyOS γίνεται ασύρµατα Ο τρόπος που χειριζόµαστε το ασύρµατο µέσο (στο εργαστήριο) δεν δηµιουργεί ουσιαστικές ασυµβατότητες µε το ϑεωρητικό µοντέλο Χρησιµοποιούνται 3 component : Main, GenericComm, Sum Τα Active Messages είναι ένας µηχανισµός για επικοινωνία παράλληλων και κατανεµηµένων συστηµάτων, ο οποίος ϐασίζεται στην ανταλλαγή µηνυµάτων Τα Active Messages επελέγησαν ως τρόπος επικοινωνίας µεταξύ κόµβων που τρέχουν TinyOS Μέσω του µηχανισµού αυτού µπορούµε να υλοποιήσουµε διάφορους αλγόριθµους για κατανεµηµένα συστήµατα που ϑα δούµε στο µάθηµα Κάθε µήνυµα αποτελείτε από ένα header και ένα µέρος data Ο header του περιέχει τον αριθµό ενός handler, ο οποίος καλείται από το σύστηµα για να διαχειριστεί το µήνυµα Μοιάζει µε τον αριθµό στα TCP port, π.χ. 80 για το http

Active Message Handlers Ταυτότητες διεργασιών και ειδικές διευθύνσεις Ο προγραµµατιστής καθορίζει τον αριθµό του AM handler, υποθέτουµε ότι όλοι οι κόµβοι ξέρουν πώς να χειριστούν τον αριθµό αυτό Στο πρόγραµµά µας καθορίζουµε ποιο κοµµάτι του κώδικα αναλαµβάνει να επεξεργαστεί το µήνυµα µε ΑΜ αριθµό Χ Οταν ϕτάσει ένα µήνυµα µε αριθµό ΑΜ 25, το component GenericComm καλεί προς εκτέλεση τον αντίστοιχο κώδικα ιαβάζουµε τα data του µηνύµατος, κάνουµε επεξεργασία και αν χρειάζεται στέλνουµε µήνυµα (προφανώς ανάλογα µε τον αλγόριθµο) Πάνω σε αυτή τη λογική µπορούµε να χτίσουµε τον κατανεµηµένο αλγόριθµό µας Κάθε κόµβος του συστήµατος έχει µια ταυτότητα (την αναθέτουµε εµείς) Η επικοινωνία µε τους άλλους κόµβους γίνεται µε τη χρήση του αριθµού αυτού Υπάρχουν και µερικές ειδικές διευθύνσεις που µπορούµε να χρησιµοποιήσουµε: 1. Broadcast διεύθυνση, µετάδοση προς όλους τους κόµβους που ϐρίσκονται στην εµβέλεια µετάδοσής µας 2. Serial port διεύθυνση, προς τη σειριακή ϑύρα του κόµβου Προσοχή: πρέπει να υπάρχει κάποιο πρωτόκολλο δροµολόγησης για multihop επικοινωνία, αλλιώς µιλάµε για 1-hop επικοινωνία (όπως στην ϑεωρία) Λογική αποστολής και λήψης µηνυµάτων Ορισµός Μηνύµατος Αποστολέας: 1. Εχουµε δεσµεύσει ένα buffer, τον οποίο χρησιµοποιούµε για να αποθηκεύσουµε τα δεδοµένα που ϑα στείλουµε 2. Αποφασίζουµε ποιον AM handler χρησιµοποιούµε (το port του άλλου κόµβου στο οποίο ϑα πάει το µήνυµα) 3. Στέλνουµε το µήνυµα Παραλήπτης: Sum.h typedef struct SumMsg { uint16_t value; SumMsg; 1. Λαµβάνει το µήνυµα και διαβάζει τον AM handler 2. Καλεί το αντίστοιχο κοµµάτι του κώδικα για να χειριστεί το µήνυµα

Sum.nc module Sum { provides { interface StdControl; uses { interface SendMsg; interface ReceiveMsg; implementation { u_int16 m_value = ###; u_int16 m_sum = 0; TOS_Msg m_msg; Sum.nc command result_t StdControl.start() { SumMsg * msg = (SumMsg *) m_msg.data; msg->value = m_value; m_sum += m_value; dbg(dbg_temp, "Node %d -- value %d\n", TOS_LOCAL_ADDRESS, m_value); call SendMsg.send(TOS_BCAST_ADDR, sizeof(summsg), &m_msg); Sum.nc Sum.nc event result_t SendMsg.sendDone(TOS_MsgPtr msg, bool success) { dbg(dbg_temp, "Node %d -- value sent\n", TOS_LOCAL_ADDRESS); return SUCCESS; event TOS_MsgPtr ReceivMsg.receive( TOS_MsgPtr recv_packet) { SumMsg * msg = (SumMsg *) recv_packet->data; dbg(dbg_temp, "Node %d -- rcvd value %d\n", TOS_LOCAL_ADDRESS, msg->value); m_sum += msg->value; return SUCCESS; command result_t StdControl.stop() { dbg(dbg_temp, "Node %d -- tot value %d\n", TOS_LOCAL_ADDRESS, m_sum);

ιασύνδεση Το περιβάλλον που ϑα χρησιµοποιήσουµε MyApp.nc includes Sum; configuration MyApp { implementation { components Main, GenericComm as Comm, Sum; Main.StdControl -> Sum.StdControl; Main.StdControl -> Comm; Το TinyOS είναι διαθέσιµο για Windows και Linux Το περιβάλλον που ϑα χρησιµοποιήσουµε περιλαµβάνει: τις ϐιβλιοθήκες του TinyOS ενα µεταγλωττιστή (ncc) για κώδικα nesc, ο οποίος ϐγάζει εκτελέσιµο κώδικα για διάφορες πλατφόρµες διάφορα εργαλεία για την ανάπτυξη εφαρµογών TinyOS και άλλα πολλά... :) Sum.SendMsg -> Comm.SendMsg[11]; Sum.ReceiveMsg -> Comm.ReceiveMsg[11]; Το περιβάλλον Cygwin οµή ϕακέλων της εγκατάστασης του TinyOS (2) Το Cygwin µας παρέχει σε Windows ένα περιβάλλον παρόµοιο µε ένα Unix σύστηµα. Βασίζεται σε µια ϐιβλιοθήκη που µεταφράζει POSIX system calls σε win32 system calls, και υπάρχουν διαθέσιµες εφαρµογές που ϐρίσκουµε σε Unix συστήµατα (π.χ. υπάρχει bash shell, gcc, κτλ) Apps: στο ϕάκελο αυτό περιέχονται διάφορες έτοιµες εφαρµογές (οι περισσότερες είναι για ασύρµατα δίκτυα αισθητήρων) Doc: εδώ ϐρίσκονται κάποια (χρήσιµα) tutorial για το σύστηµα, specifications,διαγράµµατα εφαρµογών, κ.α. Tools: εδώ ϐρίσκουµε χρήσιµα εργαλεία για την ανάπτυξη εφαρµογών (συνήθως σε Java) TOS: στο ϕάκελο αυτό ϐρίσκουµε τις ϐιβλιοθήκες του TinyOS, τους ορισµούς των interfaces, drivers για διάφορες πλατφόρµες, κτλ.

Ενδεδειγµένη επιλογή εγκατάστασης Ενδεδειγµένη επιλογή εγκατάστασης (2) Μέσω virtualization... Xubuntos = Xubuntu + TinyOS Live CD - toilers.mines.edu/public/xubuntos VMWare TinyOS image - docs.tinyos.net/index.php/getting_started Οπότε... Κατεβάζετε το VMWare Player (δωρεάν) Κατεβάζετε το virtual machine image (π.χ. για το TinyOS 2.1) Ακολουθείτε τις οδηγίες για να ϱυθµίσετε ποια έκδοση του TinyOS ϑα χρησιµοποιείτε