Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Σχετικά έγγραφα
Υποδοχείς (Sockets) Προγραμματισμός II 1

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19

Παραδείγµατα δικτυακών τεχνολογιών. Ethernet Internet ATM

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

7.2.2 Σχέση OSI και TCP/IP

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

1.8 Το μοντέλο OSI 1 / 33

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

Επίπεδο δικτύου IP διευθυνσιοδότηση

Λογισμικό Δικτύων Πέτρος Λάμψας 2007

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

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

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

Επαναληπτικές Ασκήσεις Μαθήματος

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

Ερώτηση 1 η : Τι είναι τα πρωτόκολλα επικοινωνίας? : Ποιες είναι οι λειτουργίες των πρωτοκόλλων. Ερώτηση 2 η επικοινωνίας?

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Δίκτυα Η/Υ Θεωρία. Διάλεξη 2η

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Αποµακρυσµένη κλήση διαδικασιών

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Εισαγωγή στο πως λειτουργεί το διαδίκτυο

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Πρωτόκολλα Διαδικτύου

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Δίκτυα (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Σχήμα 4.1. Δίκτυο μη συγκεκριμένης τοπολογίας (mesh topology)

.1 Βασικές Έννοιες Δικτύωσης. .2 Δίκτυα Άμεσου Συνδέσμου. .3 Δίκτυα Μεταγωγής και Διαδίκτυα. .4 Δικτύωση: συνολική θεώρηση

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Βασικές Αρχές Δικτύωσης. Ευάγγελος Παπαπέτρου

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Κεφάλαιο 2. Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

Μάθημα 6: Αρχιτεκτονική TCP/IP

Ζητήματα Σχεδίασης Λογισμικού Πελάτη

Δίκτυα Θεωρία

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Φύλλο Εργασίας 1 ου Κεφαλαίου

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

ΔΙΚΤΥΑ (18-19) Π. Φουληράς

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

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

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Στρώμα δικτύου στο Internet. Δίκτυα Υπολογιστών

Επικοινωνία. Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης. Κατανεμημένα Συστήματα (E) Επικοινωνία 1

Προγραμματισμός Δομές Δεδομένων

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

OSI και TCP/IP. Εισαγωγή στα Δίκτυα υπολογιστών και τεχνολογίες διαδικτύου

ΗΜΥ 360: Δίκτυα Υπολογιστών. Εισαγωγή

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

ΔΙΚΤΥΑ Η/Υ Ι. Εισαγωγή στα Δίκτυα Επικοινωνιών. Διδάσκων: Γεώργιος Ν. Μπάρδης

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Εργαστήριο Δικτύων Υπολογιστών

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες

Δίκτυα Υπολογιστών Ι

ΤΕΙ Στερεάς Ελλάδας Τμ. Ηλ.γων Μηχ/κων ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΜΗΧΑΝΙΣΜΟΙ ΠΟΙΟΤΗΤΑΣ ΥΠΗΡΕΣΙΑΣ ΣΕ ΔΙΚΤΥΑ

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

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

Φύλλο Κατανόησης 1.8

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Transcript:

Βασικά Θέματα Επικοινωνίας Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr

Πρωτόκολλο επικοινωνίας Η/Υ Προσδιορίζει τους κανόνες που διέπουν την επικοινωνία ανάμεσα στα εμπλεκόμενα μέρη τα μηνύματα και (εν μέρει) το περιεχόμενο τους τις ενέργειες που οφείλει να πραγματοποιεί κάθε πλευρά για κάθε μήνυμα που λαμβάνει Δεν προσδιορίζει την υλοποίηση ο τρόπος που η κάθε πλευρά θα τηρήσει τους κανόνες Η υλοποίηση ενός πρωτοκόλλου μπορεί να διαφέρει (σημαντικά) κατά περίπτωση διαφορετικά λειτουργικά συστήματα διαφορετικές γλώσσες/περιβάλλοντα προγραμματισμού Κατανεμημένα Συστήματα 2 lalis@inf.uth.gr

Εφαρμογή Α API Εφαρμογή Β API Υλοποίηση πρωτοκόλλου Pa πρωτόκολλο P Υλοποίηση πρωτοκόλλου Pb Δίκτυο 01100101 Δίκτυο Κατανεμημένα Συστήματα 3 lalis@inf.uth.gr

Στοίβες πρωτοκόλλων Για λόγους δομημένης ανάπτυξης, η λειτουργικότητα επικοινωνίας υλοποιείται συνήθως σε στρώματα Κάθε στρώμα εστιάζει στην επίλυση / διαχείριση συγκεκριμένων προβλημάτων επικοινωνίας με βάση την λειτουργικότητα των πιο χαμηλών στρωμάτων Όταν το στρώμα Ν βασίζεται στο στρώμα Ν-1 και παρέχει λειτουργικότητα στο στρώμα Ν+1, μιλάμε για μια στοίβα πρωτοκόλλων ISO-OSI, Internet protocols, κτλ Κατανεμημένα Συστήματα 4 lalis@inf.uth.gr

OSI & Internet Protocol Family Application Presentation Session Transport TCP IP Network Data Link Physical UDP TCP: - port-based local addressing - reliable byte stream - bidirectional data transfer - error checking via checksums - sequencing, flow control, buffering UDP: - port-based local addressing - unreliable messages, up to 64K IP: - machine addressing, routing - unreliable messages, up to 64K - network technology independence - packet fragmentation / re-assembly - protocol (de)multiplexing Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr

Διευθύνσεις δικτύου Κάθε τεχνολογία ορίζει διευθύνσεις μέσω των οποίων καθορίζονται τα άκρα της επικοινωνίας ειδικές διευθύνσεις για broadcast ή multicast Οι διευθύνσεις (παραλήπτη / αποστολέα) βρίσκονται σε συγκεκριμένη θέση μέσα σε κάθε πακέτο Ethernet frame Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr

Πολυπλεξία Συνύπαρξη διαφορετικών «εφαρμογών» πάνω από το ίδιο δίκτυο (υπηρεσία επικοινωνίας) Επιπλέον αναγνωριστικά για τον διαχωρισμό ανάμεσα στα πακέτα της κάθε εφαρμογής Βρίσκονται σε συγκεκριμένη θέση σε κάθε πακέτο Ethernet frame Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr

Ενθυλάκωση δεδομένων εφαρμογής Τα δεδομένα της εφαρμογής δεν «ερμηνεύονται» από το επίπεδο μεταφοράς Μπορεί να περιέχουν δεδομένα ενός πρωτοκόλλου επικοινωνίας που βρίσκεται σε πιο ψηλό επίπεδο Ethernet frame 0x8000=IP 0x11=UDP 21=FTP UDP payload FTP payload Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr

#3 #4 #3 3 ClientIDs: 3 3 #2 #1 3 3 ClientIDs: 3,4 3 3 network interface 1 3 3 ClientIDs: 1,2 MyAddr=3 network 3 1 3 3 Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr

Εντοπισμός της άλλης πλευράς Πως μπορεί ο Α να ανακαλύψει τα στοιχεία επικοινωνίας (διεύθυνση / αναγνωριστικό) του Β; 1. Τα στοιχεία επικοινωνίας του Β είναι ήδη γνωστά (π.χ. προσυμφωνημένα με κάποιο τρόπο) σύμβαση επικοινωνίας (σε τοπικό ή παγκόσμιο επίπεδο) 2. Οι Α και Β υιοθετούν ένα πρωτόκολλο εκπομπής λύνει το πρόβλημα μόνο σε χαμηλό επίπεδο δικτύου 3. Οι Α και Β χρησιμοποιούν μια υπηρεσία καταλόγου (directory / registry service) πρέπει να μπορεί να ανακαλυφθεί η υπηρεσία καταλόγου αναπαράγουμε το πρόβλημα που πάμε να λύσουμε; Κατανεμημένα Συστήματα 10 lalis@inf.uth.gr

Εκπομπή (1) "C"??? C addrc "A" Α B addra "D" D addrd Κατανεμημένα Συστήματα 11 lalis@inf.uth.gr

Εκπομπή (2) "C"??? C addrc Α "A" REQUEST addra B addra "D" D addrd Κατανεμημένα Συστήματα 12 lalis@inf.uth.gr

Εκπομπή (2) "C" C addrc Α "A" REPLY B addra "D" D addrd Κατανεμημένα Συστήματα 13 lalis@inf.uth.gr

Κατάλογος (1) "C" C addrc "A" Α B addra Κατανεμημένα Συστήματα 14 lalis@inf.uth.gr

Κατάλογος (2) "C" C addrc "A" addra Α REGISTER B Κατανεμημένα Συστήματα 15 lalis@inf.uth.gr

Κατάλογος (3) "C"??? C addrc "A" Α B addra Κατανεμημένα Συστήματα 16 lalis@inf.uth.gr

Κατάλογος (4) "C"??? C addrc "A" addra Α REQUEST addra B Κατανεμημένα Συστήματα 17 lalis@inf.uth.gr

Κατάλογος (5) "C" C addrc "A" Α B addra REPLY Κατανεμημένα Συστήματα 18 lalis@inf.uth.gr

Αναπαράσταση δεδομένων Σε ένα κατανεμημένο σύστημα, τα μέρη που επικοινωνούν μπορεί να έχουν διαφορετικές εσωτερικές αναπαραστάσεις/κωδικοποιήσεις δεδομένων διαφορές σε υλικό, λειτουργικά, γλώσσες, μεταφραστές Προσέγγιση χωρίς πρότυπη αναπαράσταση ο αποστολέας/παραλήπτης μετατρέπει τα δεδομένα που στέλνει/λαμβάνει προς/από τη εσωτερική αναπαράσταση της άλλης πλευράς Προσέγγιση με πρότυπη αναπαράσταση ο αποστολέας/παραλήπτης μετατρέπει τα δεδομένα που στέλνει λαμβάνει προς/από ένας κοινό πρότυπο / standard, π.χ., ASCII, XDR, CDR, Java, MIME, XML Κατανεμημένα Συστήματα 19 lalis@inf.uth.gr

Μετατροπή/σειριοποίηση δεδομένων Απαιτείται μετατροπή των δεδομένων από την εσωτερική στην επιθυμητή αναπαράσταση ακέραιοι, πίνακες, strings, structs, pointers Επιπλέον, για διασυνδεδεμένες δομές δεδομένων, απαιτείται η μετατροπή τους σε σειριακή μορφή ώστε να μπορούν να αποθηκευτούν σε ένα μήνυμα Η διαδικασία μετατροπής ονομάζεται σειριοποίηση ή διευθέτηση (data serialization / marshalling) Παρόμοιο πρόβλημα: αποθήκευση σε αρχεία γιατί; Κατανεμημένα Συστήματα 20 lalis@inf.uth.gr

Host & network byte order (integers) Βασικός τύπος δεδομένων: ακέραιοι Host byte order: η σειρά αποθήκευσης των bytes ενός multi-byte ακεραίου στην τοπική μνήμη Network byte order: η σειρά αποθήκευσης των bytes ενός multi-byte ακεραίου μέσα σε ένα πακέτο που στέλνεται πάνω από το δίκτυο Για το διαδίκτυο (Internet Protocols), συνήθως το λειτουργικό δίνει έτοιμες συναρτήσεις μετατροπής htons(), htonl() / ntohs(), ntohl() Κατανεμημένα Συστήματα 21 lalis@inf.uth.gr

Σύνθετοι τύποι δεδομένων Τα περιεχόμενα σύνθετων τύπων δεδομένων μπορεί (και αυτά) να αποθηκεύονται διαφορετικά στη μνήμη Ακόμα και για προγράμματα στην ίδια γλώσσα π.χ., εμβόλιμα (filler) bytes που βάζει ο μεταφραστής ως συνάρτηση της αρχιτεκτονικής του υπολογιστή Για κάθε σύνθετο τύπο δεδομένων Τ που χρησιμοποιείται στην επικοινωνία, προκύπτει εκ νέου το πρόβλημα της αναπαράστασης/σειριοποίησης Πρέπει να συμφωνηθεί κοινή αναπαράσταση για τον Τ Πρέπει να γίνεται μετατροπή των δεδομένων τύπου Τ προς και από την κοινή αναπαράσταση Κατανεμημένα Συστήματα 22 lalis@inf.uth.gr

struct T { char c; int i; char s[7]; }; memory footprint A c i s c i s memory footprint B filler bytes serialization void writet(struct T *t) { writechar(t->c); writeint(t->i); for (i=0;i<7;i++) writechar(t->s[i]); } deserialization void readt(struct T *t) { t->c=readchar(); t->i=readint(); for (i=0;i<7;i++) t->s[i]=readchar(); } Κατανεμημένα Συστήματα 23 lalis@inf.uth.gr

Χειρισμός δεικτών Απαγόρευση δεν επιτρέπεται η μεταφορά δεικτών Ρηχή αντιγραφή (shallow copy) μεταφέρονται τα περιεχόμενα του αντικειμένου, χωρίς να γίνεται χειρισμός τυχόν επιπλέον δεικτών στον παραλήπτη δημιουργείται ένα αντίγραφο με τα ίδια περιεχόμενα (αν το ίδιο το αντικείμενο περιέχει δείκτες, αυτοί αρχικοποιούνται σε NULL) Αντιγραφή σε βάθος (deep copy) όπως παραπάνω, αλλά γίνεται χειρισμός των δεικτών που τυχόν υπάρχουν μέσα στο ίδιο το αντικείμενο ο παραλήπτης λαμβάνει μια πλήρως ανεπτυγμένη δομή Κατανεμημένα Συστήματα 24 lalis@inf.uth.gr

data object typedef struct listobj { int val; struct listobj *nxt; } L; shallow copy p0 5 7 3 9 NULL deep copy p1 5 NULL p2 5 7 3 9 NULL Κατανεμημένα Συστήματα 25 lalis@inf.uth.gr

serialization void writelptr(l *p) { deserialization L *readlptr() { L *p=null; byte flag; } if (p==null) writebyte(0); else { writebyte(1); writelobj(p); } } flag=readbyte(); if (flag==1) p=(l*)malloc(sizeof(l)); readlobj(p); } return(p); void writelobj(l *p) { writeint(p->val); writelptr(p->nxt); } void readlobj(l *p) { p->val=readint(); p->nxt=readlptr(); } Κατανεμημένα Συστήματα 26 lalis@inf.uth.gr

p 5 7 3 9 NULL σειριοποίηση απο-σειριοποίηση root val nxt val nxt val nxt val nxt 1 5 1 7 1 3 1 9 0 write/read direction Κατανεμημένα Συστήματα 27 lalis@inf.uth.gr

Χειρισμός κυκλικών αναφορών Γράψιμο/σειριοποίηση σε κάθε αντικείμενο δίνεται μοναδικό αναγνωριστικό κρατείται πληροφορία για το αν έχει γίνει χειρισμός του αν ένα αντικείμενο έχει ήδη σειριοποιηθεί, δίνεται το αναγνωριστικό του Διάβασμα/αποσειριοποίηση αν διαβαστεί ένα νέο αναγνωριστικό, δημιουργείται ένα νέο αντικείμενο με τα αντίστοιχα περιεχόμενα διαφορετικά, γίνεται αναφορά στο αντικείμενο που έχει ήδη αποσειριοποιηθεί με αυτό το αναγνωριστικό Κατανεμημένα Συστήματα 28 lalis@inf.uth.gr

serialization void writelptr(l *p) { deserialization L *readlptr() { L *p; int id; } if (p==null) writeint(0); else { writeint(getid(p)); if (MARKED(p)) return; else { MARK(p); writelobj(p); } } } id=readint(); if (id==0) return(null); else if ((p=findbyid(id)) return(p); else { p=(l*)malloc(sizeof(l)); REGISTER(p,id); readlobj(p); return(p); } Κατανεμημένα Συστήματα 29 lalis@inf.uth.gr

p 5 7 3 9 σειριοποίηση απο-σειριοποίηση root val nxt val nxt val nxt val nxt 1 5 2 7 3 3 4 9 1 write/read direction Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr

Αυτοματοποίηση σειριοποίησης Το γράψιμο κώδικα σειριοποίησης/αποσειριοποίησης είναι μια βαρετή διαδικασία, όπου όμως είναι και ιδιαίτερα εύκολο να γίνουν «θανατηφόρα» λάθη Ιδανικά ο κώδικας αυτός παράγεται αυτόματα με βάση τις συντακτικές δηλώσεις των τύπων δεδομένων Υπάρχουν διάφορες προσεγγίσεις: προεπεξεργαστές, βιβλιοθήκες, υποστήριξη σε επίπεδο γλώσσας Στην γενικότερη περίπτωση, πρέπει να παρέμβει ο προγραμματιστής καθώς μόνο αυτός γνωρίζει την σημασία των δεδομένων της εφαρμογής Κατανεμημένα Συστήματα 31 lalis@inf.uth.gr