Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Επικοινωνία μεταξύ διεργασιών Απομακρυσμένες κλήσεις και αντικείμενα.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Επικοινωνία μεταξύ διεργασιών Απομακρυσμένες κλήσεις και αντικείμενα."— Μεταγράφημα παρουσίασης:

1 Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Επικοινωνία μεταξύ διεργασιών Απομακρυσμένες κλήσεις και αντικείμενα

2 Επικοινωνία μεταξύ διεργασιών Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 2

3 Επικοινωνία μεταξύ διεργασιών Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 3  Δύο βασικές λειτουργίες επικοινωνίας:  Αποστολή μηνύματος (send). Η διεργασία Α (αποστολέας) στέλνει μήνυμα στη διεργασία Β (παραλήπτης). Το μήνυμα τοποθετείται στην ουρά του Β ώστε να διαβαστεί όταν ο επεξεργαστής θα είναι διαθέσιμος  Παραλαβή μηνύματος (receive). Η διεργασία Β (παραλήπτης) αφαιρεί το πρώτο μήνυμα στην ουρά και το διαβάζει.  Δύο βασικοί τρόποι επικοινωνίας  Σύγχρονη επικοινωνία (synchronous) ή αλλιώς παρεμποδιστική (blocking) επικοινωνία.  Ασύγχρονη επικοινωνία (asynchronous) ή αλλιώς μη-παρεμποδιστική (non-blocking) επικοινωνία.

4 Σύγχρονη και Ασύγχρονη επικοινωνία Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 4  Σύγχρονη επικοινωνία:  όταν εκδίδεται ένα blocking send τότε η διεργασία αποστολέας σταματάει την εκτέλεσή της μέχρι να εκδοθεί εντολή receive (είτε blocking είτε non- blocking) για το μήνυμα αυτό.  Αντίστοιχα, όταν εκδίδεται ένα blocking receive τότε η διεργασία που το εξέδωσε μπλοκάρει μέχρι να εκδοθεί το αντίστοιχο send (είτε blocking είτε non-blocking) για το μήνυμα αυτό.  Ασύγχρονη επικοινωνία:  η διεργασία που εκδίδει ένα non-blocking send συνεχίζει την εκτέλεσή της αμέσως μόλις το μήνυμα γραφτεί σε ένα τοπικό buffer. Η μετάδοση του μηνύματος γίνεται ταυτόχρονα με την υπόλοιπη εκτέλεση της διεργασίας.  Η διεργασία που εκδίδει ένα non-blocking receive στην ουσία απλώς παρέχει έναν buffer για να γεμίζει με το αναμενόμενο μήνυμα (όταν έρθει) και συνεχίζει την εκτέλεσή της χωρίς να περιμένει τη λήψη του μηνύματος (αυτή θα γίνει στο background).

5 Σύγχρονη και ασύγχρονη επικοινωνία Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 5  Πλεονεκτήματα/μειονεκτήματα σύγχρονης επικοινωνίας: + Εύκολα κατανοητή συμπεριφορά, λιγότερο επιρρεπής σε σφάλματα − Δεν εκμεταλλεύεται πλήρως τον παραλληλισμό. Σε κάποιες περιπτώσεις η διεργασία θα μπορούσε να εκτελέσει χρήσιμες εντολές ενώ περιμένει την απομακρυσμένη διεργασία να ανταποκριθεί.  Πλεονεκτήματα/μειονεκτήματα ασύγχρονης επικοινωνίας: + Μεγαλύτερη εκμετάλλευση του παραλληλισμού − Μεγαλύτερη πιθανότητα σφάλματος και δυσκολία προγραμματισμού. Ειδικά το non-blocking receive εισάγει ιδιαίτερη πολυπλοκότητα καθώς ο έλεγχος αν ήρθε το μήνυμα πρέπει να γίνεται έξω από την κλασσική ροή του προγράμματος. Πολλά μοντέρνα συστήματα δεν προσφέρουν non- blocking receive.

6 Προορισμοί μηνυμάτων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 6  Στο πρωτόκολλο internet τα μηνύματα στέλνονται στη διεύθυνση που περιγράφεται από το ζεύγος [IP διεύθυνση, Τοπική θύρα]. Η θύρα δικτύου ή απλώς θύρα είναι ένας ακέραιος αριθμός στον υπολογιστή που συνήθως συνδυάζεται και με διαφορετική υπηρεσία. Ένας υπολογιστής μπορεί να έχει πολλές θύρες ανοιχτές εφόσον εξυπηρετεί πολλές διαφορετικές υπηρεσίες.  Αν ένα πρόγραμμα πελάτης χρησιμοποιεί τη σταθερή διεύθυνση IP ενός υπολογιστή S για να αποστέλλει μηνύματα σε μια υπηρεσία, τότε η υπηρεσία πρέπει να τρέχει πάντα στον S.  Η δυσκολία αυτή μπορεί να αποφευχθεί αν ο πελάτης χρησιμοποιεί ένα όνομα για κάθε υπηρεσία Υ και να υπάρχει μια υπηρεσία ονοματοδοσίας (binding service) που θα δεσμεύει την Υ στο ζεύγος [IP διεύθυνση, θύρα] του εκάστοτε υπολογιστή που την υποστηρίζει. Αυτό επιτρέπει την υπηρεσία Υ να επανατοποθετείται σε άλλο server ανάλογα με τις ανάγκες ή τα προβλήματα που πιθανώς προκύπτουν.

7 Sockets και θύρες δικτύου (ports) Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 7  Τα sockets είναι αφηρημένα τερματικά σημεία της επικοινωνίας μεταξύ δύο διεργασιών. Η έννοια προέρχεται από το BSD Unix αλλά εφαρμόζεται σε όλα τα μοντέρνα λειτουργικά συστήματα.  Για να πάρει μια διεργασία ένα μήνυμα πρέπει το socket της να προσδεθεί σε μια θύρα δικτύου του υπολογιστή. Υπολογιστής IP διεύθυνση πελάτης Υπολογιστής IP διεύθυνση server μήνυμα θύρες socket προσυμφωνημένη θύρα οποιαδήποτε θύρα

8 Sockets και ports Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 8  Οι υπηρεσίες που τρέχουν σε έναν εξυπηρετητή (πχ. η υπηρεσία ftp) δεσμεύουν μια σγκεκριμένη θύρα δικτύου στον υπολογιστή αυτό (πχ. τη θύρα 21). Κάθε πελάτης που θέλει να καλέσει αυτή την υπηρεσία πρέπει να χρησιμοποιήσει την προσυμφωνημένη αυτή θύρα. Ωστόσο η θύρα από όπου εξέρχεται η αίτηση του πελάτη μπορεί να είναι οποιαδήποτε.  Μια διεργασία μπορεί να χρησιμοποιεί πολλές θύρες για να λαμβάνει μηνύματα αλλά δεν μπορεί να γίνεται κοινή χρήση της ίδιας θύρας από δύο διαφορετικές διεργασίες στον ίδιο υπολογιστή.  Υπάρχουν 2 16 = διαθέσιμες θύρες δικτύου για κάθε υπολογιστή  Κάθε socket συνδέεται μέ ένα συγκεκριμένο πρωτόκολλο μεταφοράς (transport protocol) – είτε UDP είτε TCP.

9 Το πρωτόκολλο UDP (User Datagram Protocol) Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 9  Στο πρωτόκολλο αυτό το μήνυμα στέλνεται από τον αποστολέα στον παραλήπτη χωρίς επαλήθευση αν παρελήφθη και χωρίς επανάληψη της προσπάθειας. Αν υπάρξει αποτυχία στην διαδρομή του μηνύματος αυτό μπορεί να χαθεί και να μην παραληφθεί ποτέ. Χρήση  Σε κάποιες εφαρμογές είναι αποδεκτό να υπάρχει πιθανότητα απώλειας πακέτων χωρίς επανάληψη της μετάδοσης. Τέτοιες υπηρεσίες είναι για παράδειγμα  η υπηρεσία ονοματοδοσίας στο internet (Domain Name Service - DNS) η οποία αντιστοιχεί ονόματα (πχ. σε διευθύνσεις IP (πχ )www.teithe.gr  η υπηρεσία Voice Over IP (VOIP) η οποία μεταδίδει πακέτα ήχου (φωνής) πάνω από το πρωτόκολλο του internet  κα

10 Το πρωτόκολλο UDP Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 10  Η χρήση του πρωτοκόλλου UDP είναι ελκυστική για όποιες εφαρμογές δεν απαιτείται εγγυημένη παράδοση των μηνυμάτων διότι αποφεύγονται  η ανάγκη αποθήκευσης της κατάστασης του μηνύματος στον αποστολέα και στον παραλήπτη  οι καθυστερήσεις από την επαναμετάδοση μηνυμάτων σε περίπτωση αποτυχίας  η καθυστέρηση του αποστολέα ο οποίος περιμένει επιβεβαίωση παραλαβής

11 Το πρωτόκολλο UDP Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 11 Χαρακτηριστικά:  Μέγεθος μηνύματος: < 2 16 bytes (64 Kbytes) αλλά συνήθως < 8 Kbytes  Blocking: συνήθως non-blocking send αλλά blocking receive  Timeout: Λόγω blocking receive και πιθανότητας απώλειας του μηνύματος μπορεί ο server να περιμένει απ’ άπειρον την παραλαβή του μηνύματος. Για το λόγο αυτό εφαρμόζεται κάποιο όριο χρόνου στην αναμονή  Μοντέλο αποτυχίας:  Απώλεια μηνύματος: Μπορεί να συμβεί για δύο λόγους (α) υπάρχει checksum error (πχ κάποιο bit αλλοιώθηκε στην πορεία λόγω ηλεκτρικών παρεμβολών) (β) γέμισε ο buffer παραλαβής μηνυμάτων κάποιου κόμβου στη διαδρομή του μηνύματος  Τα μηνύματα μπορούν να παραληφθούν με άλλη σειρά από αυτή που στάλθηκαν

12 Το πρωτόκολλο TCP Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 12  Στο πρωτόκολλο TCP το socket S C ενός πελάτη και το socket S S ενός εξυπηρετητή συνδέονται με δύο ροές δεδομένων και προς τις δύο κατευθύνσεις. Μια διεργασία του πελάτη στέλνει πληροφορία σε μια άλλη στον εξυπηρετητή γράφοντας στη ροή εξόδου του socket της (το S C ) ενώ η άλλη διαβάζει τη ροή εισόδου στο δικό της socket (το S S )  Γίνεται προσπάθεια τα πακέτα να φθάσουν στον προορισμό τους και ο αποστολέας να ενημερωθεί ότι ελήφθησαν σωστά  Σε περίπτωση αποτυχίας παραλαβής ενός πακέτου αυτό επαναμεταδίδεται  Τα πακέτα παραλαμβάνονται με την σειρά που στάλθηκαν

13 Το πρωτόκολλο TCP Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 13 Χρήση  Πολλές συχνά χρησιμοποιούμενες υπηρεσίες χρησιμοποιούν TCP. Πχ.  Η υπηρεσία HTTP (HyperText Transfer Protocol) που χρησιμοποιείται για την επικοινωνία μεταξύ web browsers και web servers.  Η υπηρεσία FTP (File Transfer Protocol) που χρησιμοποιείται για την μεταφορά αρχείων από τον εξυπηρετητή στον πελάτη  Η υπηρεσία Telnet που προσφέρει πρόσβαση υπό μορφή κονσόλας τερματικού σε έναν απομακρυσμένο υπολογιστή  Η υπηρεσία SMTP (Simple Mail Transfer Protocol) που χρησιμοποιείται για την αποστολή  κα

14 Το πρωτόκολλο TCP Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 14 Χαρακτηριστικά  Μέγεθος: Τα μηνύματα κόβονται σε πακέτα μήκους συνήθως < 1500 Bytes  Χαμένα μηνύματα: Το TCP χρησιμοποιεί επιβεβαίωση ότι το μήνυμα που στάλθηκε παραλήφθηκε επιτυχώς. Αλλιώς γίνεται επαναμετάδοση  Έλεγχος κυκλοφορίας: Το TCP προσπαθεί να ταιριάζει την ταχύτητα του αποστολέα με αυτή του παραλήπτη. Αν πχ, ο αποστολέας στέλνει πιο γρήγορα μηνύματα απ’ ότι ο παραλήπτης είναι σε θέση να διαβάσει τότε ο αποστολέας μπλοκάρεται μέχρι ο παραλήπτης να διαβάσει (να καταναλώσει) ικανοποιητικό αριθμό πακέτων.  Διπλά πακέτα και ορισμός της σειράς των πακέτων: γίνεται αρίθμηση των πακέτων με τη σειρά που στάλθηκαν έτσι ώστε να σβήνονται τα διπλότυπα πακέτα και να μπορεί να τακτοποιηθούν στη σωστή σειρά στον παραλήπτη

15 Το πρωτόκολλο TCP Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 15 Χαρακτηριστικά (συνέχεια)  Timeout: Αν για κάποιο πακέτο δεν ληφθεί επιβεβαίωση εντός συγκεκριμένου χρονικού ορίου ότι παραλήφθηκε επιτυχώς τότε θεωρείται ότι υπάρχει αποτυχία αποστολής και ξαναστέλνεται. Η ακεραιότητα των πακέτων ελέγχεται με checksums. Επίσης τα πακέτα ενός μηνύματος αριθμούνται ώστε αν ένα πακέτο επαναμεταδοθεί ενώ κυκλοφορεί ήδη ένα αντίγραφό του τότε το ένα από τα δύο απορρίπτεται στο παραλήπτη.  Μοντέλο αποτυχίας  Σε περίπτωση σοβαρών καθυστερήσεων ή διακοπής της σύνδεσης ενημερώνεται η διεργασία που χρησιμοποιεί το πρωτόκολλο. Η διεργασία δεν μπορεί να διακρίνει αν φταίει το δίκτυο ή απλώς κατέρρευσε η άλλη διεργασία με την οποία επικοινωνεί  Η διεργασία δεν ξέρει αν παραλήφθηκαν επιτυχώς τα πακέτα που στάλθηκαν πρόσφατα (πριν εκπνεύσει ο χρόνoς timeout)

16 Επικοινωνία διεργασιών στο UNIX Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 16 Sockets για UDP datagrams Client: Αποστολή μηνύματοςServer: Παραλαβή μηνύματος struct sockaddr_in ClntAddr; struct sockaddr_in ServAddr; int s, MSGLEN=strlen(“message”); s = socket(AF_INET, SOCK_DGRAM, 0);... bind(s, &ClntAddr, sizeof(ClntAddr);... sendto(s, “message”, MSGLEN, 0, &ServAddr, sizeof(ServAddr)); struct sockaddr_in ClntAddr; struct sockaddr_in ServAddr; int s, len; int BUFLEN=100; char buf[BUFLEN]; s = socket(AF_INET, SOCK_DGRAM, 0);... bind(s, &ServAddr, sizeof(ServAddr));... len = recvfrom(s, buf, BUFLEN, 0, &ClntAddr, sizeof(ClntAddr));

17 Επικοινωνία διεργασιών στο UNIX Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 17 Sockets για streaming Client: Αίτηση σύνδεσηςServer: Αποδοχή σύνδεσης char buffer[MAXLEN]; int len, s; struct sockaddr_in ServAddr; int AddrLen=sizeof(struct sockaddr_in); s = socket(AF_INET, SOCK_STREAM, 0); connect(s, &ServAddr, AddrLen); len = recv(s, buf, MAXLEN, 0); struct sockaddr_in ClntAddr; struct sockaddr_in ServAddr; int s, newsocket; char msg[] = "Hello World !\n"; int AddrLen=sizeof(struct sockaddr_in); s = socket(AF_INET, SOCK_STREAM, 0); bind(s, &ServAddr, sizeof(serv)); /* start listening, allowing a queue of * up to 5 pending connection */ listen(s, 5); newsocket = accept(s, &ClntAddr, &AddrLen); send(newsocket, msg, strlen(msg), 0);

18 Κατανεμημένη επεξεργασία Απομακρυσμένες κλήσεις διαδικασιών (RPC) Αντικειμενοστραφής σχεδίαση (CORBA, Java RMI) Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 18

19 Κλήση απομακρυσμένων Διαδικασιών Remote Procedure Calls (RPC) Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 19  Ευρέως διαδεδομένη μέθοδος επικοινωνίας μεταξύ εφαρμογών σε ένα κατανεμημένο σύστημα  Δύο προγράμματα P C, P S, σε διαφορετικούς κόμβους (client και server) αλληλεπιδρούν με το πρόγραμμα P C να καλεί διαδικασίες (ρουτίνες) από το πρόγραμμα P S σαν να έτρεχαν στην ίδια μηχανή.  Δημοφιλής μέθοδος κατανεμημένης επεξεργασίας καθώς  Η κλήση (call) μιας διαδικασίας (ρουτίνας) είναι γνωστή και κατανοητή έννοια σε όλους τους προγραμματιστές  Ορίζονται συγκεκριμένες συναρτήσεις διεπαφής S1(), S2(),..., SN() μεταξύ πελάτη και εξυπηρετητή, με σαφείς λειτουργίες και τύπους ορισμάτων.  Η συνολική διεπαφή (σύνολο S1, S2,..., SN) είναι σαφής οπότε, σε κάποιες περιπτώσεις, ο κώδικας επικοινωνίας μπορεί να γραφτεί αυτόματα.  Μπορούν να γραφτούν μεγαλύτερες ενότητες λογισμικού (modules) που μπορούν να χρησιμοποιηθούν από άλλους κόμβους

20 Πρωτόκολλα ανταλλαγής RPC (RPC exchange protocols) Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 20  Πρωτόκολλο Αίτησης [Request (R)]:  Στέλνεται μόνο ένα μήνυμα αίτησης από τον πελάτη στον εξυπηρετητή. Δεν επιστρέφεται καμία τιμή και ο πελάτης δεν ζητά επαλήθευση ότι η διαδικασία εκτελέστηκε. Χρήση πακέτων UDP με κίνδυνο απώλειας  Πρωτόκολλο Αίτησης – Απόκρισης [Request – Reply (RR)]:  Η πιο συνηθισμένη περίπτωση. Ο πελάτης στέλνει αίτηση, και ο εξυπηρετητής αποκρίνεται. Δεν απαιτείται επαλήθευση από τον πελάτη καθώς η απόκριση του εξυπηρετητή αποτελεί επαλήθευση ότι ελήφθη το αίτημα. Όταν γίνει επόμενο RPC από τον ίδιο πελάτη θεωρείται ότι επαληθεύεται το προηγούμενο RPC. Χρήση πακέτων TCP.  Πρωτόκολλο Αίτησης – Απόκρισης – Επαλήθευσης [Request – Reply – Acknowledge (RRA)]:  Ίδιο με το RR με επί πλέον επαλήθευση της λήψης της απόκρισης του εξυπηρετητή με ένα μήνυμα του πελάτη προς τον εξυπηρετητή

21 Πρωτόκολλα ανταλλαγής RPC Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 21 ΌνομαΑποστολέας Μηνύματος ΠελάτηςΕξυπηρετητήςΠελάτης RΑίτηση RRΑίτησηΑπόκριση RRAΑίτησηΑπόκρισηΕπιβεβαίωση messageTypeint (0=request, 1=reply) requestIdint objectReferenceRemoteObjectRef methodIdint ή Method arguments// array Δομή μηνύματος request-reply

22 Απομακρυσμένες κλήσεις διαδικασιών Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 22 Εφαρμογή Πελάτης Τοπική ρουτίνα (εφαρμογή χρήστη ή συνάρτηση πυρήνα του ΛΣ) Τοπική Κλήση Τοπική Απόκριση Απομακρυσμένη Εφαρμογή Εξυπηρετητής Τοπική Κλήση Τοπική Απόκριση Client Stub Μηχανισμός RPC Server Stub Μηχανισμός RPC Τοπική Κλήση Τοπική Απόκριση Απομακρυσμένη κλήση Απομακρυσμένη απόκριση

23 Μηχανισμός απομακρυσμένης κλήσης Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 23 Κλήση του πελάτη  Η εφαρμογή του πελάτη καλεί το client stub (= ενδιάμεσο πρόγραμμα που αναλαμβάνει να διεκπεραιώσει το RPC). Η κλήση είναι τοπική με παραμέτρους που γίνονται push κανονικά στη σωρό (stack).  Το client stub πακετάρει τις παραμέτρους σε ένα μήνυμα και εκτελεί μια κλήση συστήματος (system call) για να στείλει το μήνυμα. Το πακετάρισμα των παραμέτρων καλείται marshalling.  Ο πυρήνας του ΛΣ του πελάτη στέλνει το μήνυμα στον εξυπηρετητή.  Ο πυρήνας του ΛΣ του εξυπηρετητή περνάει τα εισερχόμενα πακέτα στο server stub (= αντίστοιχο του client stub αλλά από τη μεριά του server).  Το server stub ξεπακετάρει τις παραμέτρους (unmarshalling) και καλεί την ρουτίνα στον εξυπηρετητή κάνοντας push τις παραμέτρους στη σωρό του εξυπηρετητή

24 Μηχανισμός απομακρυσμένης κλήσης Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 24 Απόκριση του εξυπηρετητή  Αφού ολοκληρωθεί η ρουτίνα ο εξυπηρετητής καλεί το τοπικό server stub. Οι παράμετροι γίνονται pop κανονικά από την τοπική σωρό (stack).  Το server stub πακετάρει τις παραμέτρους σε ένα μήνυμα και εκτελεί μια κλήση συστήματος (system call) για να στείλει το μήνυμα.  Ο πυρήνας του ΛΣ του εξυπηρετητή στέλνει το μήνυμα στον πελάτη.  Ο πυρήνας του ΛΣ του πελάτη περνάει τα εισερχόμενα πακέτα στο τοπικό client stub.  Το client stub ξεπακετάρει τις παραμέτρους ενημερώνει τις παραμέτρους και τερματίζει την κλήση κάνοντας pop τις παραμέτρους από την τοπική σωρό.

25 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 25  Πέρασμα παραμέτρων: γίνεται αποκλειστικά κλήση ως προς την τιμή (call by value). Το πέρασμα παραμέτρων με κλήση κατ’ αναφορά (call by reference), δηλαδή το πέρασμα παραμέτρων με χρήση pointer στη μεταβλητή, δεν είναι πρακτικά εφικτή καθώς δεν είναι γνωστή στον πελάτη η διεύθυνση της μεταβλητής στη μνήμη του εξυπηρετητή.  Αναπαράσταση τύπων δεδομένων. Εφόσον ο πελάτης και ο εξυπηρετητής είναι μηχανές που αναπαριστούν τους τύπους δεδομένων με τον ίδιο τρόπο τότε δεν υπάρχει πρόβλημα στο πακετάρισμα και ξεπακετάρισμα των παραμέτρων. Πχ, αν ο τύπος int αναπαρίσταται με 4 bytes και στις δύο μηχανές βάζοντας το most significant byte πρώτο τότε το μήνυμα θα διαβαστεί σωστά 00 fa c3 b1 int a 01 3b d0 26 int b πακετάρισμα 00 fa c3 b1 int a=ΟΚ 01 3b d0 26 int b=ΟΚ πελάτης εξυπ/τής ξεπακετάρισμα

26 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 26  Αναπαράσταση τύπων δεδομένων (συνέχεια). Έστω όμως ότι οι αναπαραστάσεις των δεδομένων ανάμεσα στις δύο μηχανές διαφέρουν μεταξύ τους. Πχ, στον πελάτη ο τύπος int περιγράφεται με 4 bytes ενώ στον εξυπηρετητή περιγράφεται με 8 bytes. Τότε δημιουργείται πρόβλημα.  Λύση: η χρήση ενδιάμεσης αναπαράστασης όλων των τύπων δεδομένων (ακεραίων, αριθμών κινητής υποδιαστολής, συμβολοσειρών, κλπ). Οι εγγενείς τύποι του μηχανήματος μετατρέπονται στην ενδιάμεση αναπαράσταση πριν το πακετάρισμα και από την ενδιάμεση αναπαράσταση μετά το ξεπακετάρισμα. 00 fa c3 b1 int a 01 3b d0 26 int b πακετάρισμα 00 fa c3 b101 3b d0 26 int a = λάθοςint b=? πελάτης εξυπ/τής ξεπακετάρισμα

27 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 27  Δέσμευση (binding). Τα προγράμματα του πελάτη δημιουργούν ένα «δεσμό» (bind) με τον εξυπηρετητή ώστε να εγκαταστήσουν μια συνεδρία επικοινωνίας (session). Ο δεσμός περιεχει όλη την πληροφορία που χρειάζεται η εφαρμογή του πελάτη ώστε να δημιουργήσει το session:  πληροφορία σχετικά με τον εξυπηρετητή που θα χρησιμοποιηθεί: διεύθυνση (address) και πόρτα (port) στην οποία «ακούει» τις κλήσεις για τα προγράμματα που εξυπηρετεί.  τους αριθμούς των προγραμμάτων που εξυπηρετούνται. Τα προγράμματα ταυτοποιούνται με κάποιο μοναδικό αριθμό ώστε να χρησιμοποιούνται από όλους τους πελάτες στο δίκτυο.  Το session είναι απαραίτητο για να γίνει η απομακρυσμένη κλήση και το binding είναι απαραίτητο για να γίνει το session: BindingSessionRPC

28 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 28  Επιλογές Binding:  Μη συνεχής δέσμευση (non-persistent binding): Ο δεσμός μεταξύ πελάτη και εξυπηρετητή δημιουργείται ακριβώς πριν από την κλήση της απομακρυσμένης διαδικασίας και τερματίζεται μόλις επιστραφούν οι τιμές, δηλαδή μόλις ολοκληρωθεί η κλήση. + Οικονομία στους πόρους του συστήματος − Μεγάλο χρονικό κόστος αν γίνονται πολλά RPC από τον ίδιο πελάτη  Συνεχής δέσμευση (persistent binding): Ο δεσμός μεταξύ πελάτη και εξυπηρετητή δημιουργείται ακριβώς πριν από την κλήση της απομακρυσμένης διαδικασίας αλλά διατηρείται και μετά την ολοκλήρωση της κλήσης. Τερματίζεται μετά από το πέρας συγκεκριμένου χρονικού ορίου αδράνειας του δεσμού. + Μικρότερο χρονικό κόστος όταν γίνονται πολλά RPC από τον ίδιο πελάτη − Καταναλώνει πόρους του συστήματος για μεγάλο διάστημα

29 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 29  Δύο τρόποι επικοινωνίας:  Σύγχρονος και  Ασύγχρονος.  Σύγχρονη κλήση (Synchronous RPC) : η εφαρμογή του πελάτη που ενεργοποιεί την απομακρυσμένη κλήση περιμένει μέχρι να επιστραφεί η απάντηση από τον εξυπηρετητή. Μοιάζει με μια κλασική κλήση τοπικής υπορουτίνας κατά την οποία το πρόγραμμα που κάλεσε την υπορουτίνα μπλοκάρει μέχρι αυτή να επιστρέψει. + Εύκολα κατανοητή συμπεριφορά, συμβατή με τον κλασικό προγραμματισμό − Δεν εκμεταλλεύεται πλήρως τον παραλληλισμό. Σε κάποιες περιπτώσεις ο πελάτης θα μπορούσε να εκτελέσει χρήσιμες εντολές ενώ περιμένει την απομακρυσμένη κλήση να επιστρέψει. Αυτό δεν γίνεται αν πρέπει να περιμένει την επιστροφή της κλήσης.

30 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 30  Ασύγχρονη κλήση (Asynchronous RPC) : Η εφαρμογή του πελάτη που κάνει την απομακρυσμένη κλήση συνεχίζει την εκτέλεση κανονικά χωρίς να περιμένει την απομακρυσμένη απόκριση. Δύο σενάρια: + Μεγαλύτερη εκμετάλλευση του παραλληλισμού − Μεγαλύτερη πιθανότητα σφάλματος και δυσκολία προγραμματισμού Α: 1.Έναρξη RPC 2.Κάνω κάτι χρήσιμο ενώ περιμένω 3.Αν το RPC ολοκληρώθηκε πάω στο 4 αλλιώς επιστρέφω στο 2 4.Συνέχίζω... Β: 1.Έναρξη πολλαπλών RPC 2.Κάνω κάτι χρήσιμο ενώ περιμένω 3.Αν ολοκληρώθηκαν ΟΛΑ τα RPCs πάω στο 4 αλλιώς επιστρέφω στο 2 4.Συνέχίζω...

31 Θέματα απομακρυσμένων κλήσεων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 31 Γλώσσες ορισμού της διεπαφής (Interface Definition Languages – IDL)  SUN XDR IDL  Microsoft Interface Definition Language (MIDL)

32 Αντικειμενοστραφής κατανεμημένη επεξεργασία Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 32  Εναλλακτικά με τη μέθοδο των απομακρυσμένων κλήσεων διαδικασιών (RPC) έχει αναπτυχθεί τα τελευταία χρόνια μια αντικειμενοστραφής προσέγγιση στην επικοινωνία μεταξύ υπολογιστών (πελάτη – εξυπηρετητή).  Σύμφωνα με την προσέγγιση αυτή υπάρχουν αντικείμενα (objects) τα οποία διαθέτουν μεθόδους (κατά το πρότυπο της Java). Οι μέθοδοι αυτές μπορούν να κληθούν από απομακρυσμένους πελάτες όπως περίπου γίνεται μια κλήση RPC.  Η απομακρυσμένη κλήση μεθόδων (Remote Method Invocation – RMI) είναι μια τεχνική που σε πολλά σημεία μοιάζει με την μέθοδο RPC. Για παράδειγμα, γίνεται και εδώ marshalling των δεδομένων που ανταλλάσσονται ενώ χρησιμοποιούνται μηνύματα για την επικοινωνία των μεταξύ των εφαρμογών πελάτη και εξυπηρετητή.

33 Το μοντέλο των αντικειμένων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 33 Βασική ορολογία των αντικειμενοστραφών εφαρμογών  Αναφορά σε αντικείμενο (object reference): Μια μεταβλητή που φαίνεται να φυλάει ένα αντικείμενο στην πραγματικότητα φυλάει μια αναφορά (pointer) στο αντικείμενο  Διεπαφή (Interface): σύνολο ονομάτων, τύπων ορισμάτων εισόδου, επιστρεφόμενων τιμών, και εξαιρέσεων που αντιστοιχούν στις μεθόδους ενός αντικειμένου, δηλαδή οι μέθοδοι του αντικειμένου χωρίς τον κώδικα.  Ενέργεια (Action): η κλήση μιας μεθόδου. Το αντικείμενο που αντιστοιχεί στην μέθοδο που καλείται λέγεται στόχος (target) ή παραλήπτης (receiver). Μια ενέργεια μπορεί να έχει τα εξής αποτελέσματα :  Αλλάζει την κατάσταση του παραλήπτη αντικειμένου ή  Δημιουργεί νέο αντικείμενο (τότε η μέθοδος καλείται constructor) ή  Καλεί επί πλέον μεθόδους άλλων αντικειμένων

34 Το μοντέλο των αντικειμένων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 34  Εξαιρέσεις (Exceptions): όταν προκύπτουν σφάλματα ή απρόβλεπτες καταστάσεις μπορεί να προκληθεί μια εξαίρεση. Ένα κομμάτι κώδικα «πετάει» (throw) μια εξαίρεση στην περίπτωση συγκεκριμένου σφάλματος. Την εξαίρεση «πιάνει» (catch) ένα άλλο κομμάτι κώδικα που χειρίζεται το συγκεκριμένο σφάλμα. Μετά το catch ο έλεγχος δεν ξαναγυρίζει στο σημείο που προκλήθηκε throw (μοιάζει πολύ με την διαχείριση διακοπών στο λειτουργικό σύστημα).  Συλλογή σκουπιδιών (garbage collection): όταν ένα αντικείμενο δεν είναι πλέον προσπελάσιμο πρέπει να απελευθερωθεί ο χώρος που καταλαμβάνει στη μνήμη. Γλώσσες όπως η Java έχουν αυτοματοποιημένη συλλογή σκουπιδιών σε αντίθεση με άλλες γλώσσες (πχ C++) όπου τα σκουπίδια μπορεί να προκαλέσουν σημαντικά προβλήματα στο πρόγραμμα.

35 Κατανεμημένα αντικείμενα Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 35  Στα συστήματα κατανεμημένων αντικειμένων τα αντικείμενα βρίσκονται στον εξυπηρετητή ο οποίος και τα διαχειρίζεται, ενώ οι πελάτες καλούν απομακρυσμένα τις μεθόδους των αντικειμένων αυτών (remote method invocation).  Όπως και στο RPC η κλήση μιας μεθόδου γίνεται με αποστολή μηνύματος από τον πελάτη στον εξυπηρετητή. Η κλήση εκτελείται στον εξυπηρετητή και το αποτέλεσμα επιστρέφεται στον πελάτη με άλλο μήνυμα.  Ένας εξυπηρετητής Α μπορεί να καλέσει απομακρυσμένα μια μέθοδο ενός άλλου εξυπηρετητή Β, γινόμενος έτσι πελάτης του Β. Με τον τρόπο αυτό μπορούν να δμηιουργηθούν «αλυσσίδες» κλήσεων για την υλοποίηση μιας μεθόδου.

36 Κατανεμημένα αντικείμενα Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 36  Εκτός από το κλασικό μοντέλο προσπέλασης ενός αντικειμένου σε ένα μοναδικό εξυπηρετητή υπάρχει και η εναλλακτική περίπτωση το αντικείμενο να αντιγραφεί σε ένα δεύτερο εξυπηρετητή τόσο για λόγους ανοχής σε σφάλματα όσο και για καλύτερη επίδοση.  Πλεονεκτήματα αντικειμενοστραφούς σχεδίασης:  Το να έχεις ξεχωριστά αντικείμενα πελάτη και αντικείμενα εξυπηρετητή επιβάλει την ενθυλάκωση (encapsulation). Το αντικείμενο βρίσκεται μέσα σε ένα «θύλακα», δηλαδή, η κατάσταση του είναι προσπελάσιμη μόνο μέσω των συγκεκριμένων μεθόδων που προσφέρονται γι’αυτό συνεπώς προστατεύεται απο χρήση μη εγκεκριμένων μεθόδων (εσφαλμένων ή κακόβουλων)  Ένα απομακρυσμένο αντικείμενο μπορεί να αντιγραφεί σε μια τοπική cache στον πελάτη και προσπελαστεί άμεσα και γρήγορα, εφόσον η υλοποίηση της κλάσης είναι διαθέσιμη τοπικά.

37 Αναφορά σε κατανεμημένα αντικείμενα Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 37  Όταν ένας πελάτης καλεί μια μέθοδο ενός κατανεμημένου αντικειμένου στέλνει ένα μήνυμα στον εξυπηρετητή που φιλοξενεί το αντικείμενο.  Η αναφορά στο αντικείμενο απαιτεί τη χρήση ενός μοναδικού στοιχείου ταυτότητας (identifier) το οποίο πρέπει να περιέχεται στο μήνυμα.  Γενικά μπορεί να υπάρχουν πολλές διεργασίες σε διαφορετικούς κόμβους που φιλοξενούν κατανεμημένα αντικείμενα, οπότε απαιτείται μοναδική ταυτοποίηση του κάθε αντικειμένου ώστε να αποφεύγονται τα λάθη (πχ. κλήση σε λάθος αντικείμενο).  Αν ένα απομακρυσμένο αντικείμενο σβηστεί είναι σημαντικό η αναφορά σε αυτό να μην ξαναχρησιμοποιηθεί. Ακόμη και αν χρησιμοποιηθεί ξανά τότε πρέπει να οδηγήσει σε λάθος παρά να επιτρέψουμε την προσπέλαση ενός άλλου αντικειμένου!

38 Αναφορά σε κατανεμημένα αντικείμενα Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 38  Ένας απλός τρόπος μοναδικής ταυτοποίησης ενός κατανεμημένου αντικειμένου είναι ο συνδυασμός (α) της IP διεύθυνσης του εξυπηρετητή που το φιλοξενεί (β) του αριθμού της θύρας (port number) της διεργασίας που το δημιούργησε (γ) του χρόνου της δημιουργίας του αντικειμένου (συνήθως εκφρασμένος σε δευτερόλεπτα από την 1/1/1970) και (δ) τον τοπικό αριθμό του αντικειμένου IP διεύθυνση Αριθμός θύρας Χρόνος Αριθμός αντικειμένου Διεπαφή 32 bits

39 Κλήση κατανεμημένων αντικειμένων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 39  Στα απλά πρωτόκολλα RMI το αντικείμενο δημιουργείται μαζί με τη διεργασία, καλείται με το μοναδικό αριθμό ταυτότητας που περιγράψαμε παραπάνω, εφόσον η διεργασία που το δημιούργησε εξακολουθεί να τρέχει, ενώ καταστρέφεται όταν η διεργασία τερματίζεται.  Το μειονέκτημα του παραπάνω τρόπου ταυτοποίησης των αντικειμένων είναι ότι δεσμεύονται σε ένα συγκεκριμένο εξυπηρετητή και δε μπορούν να μεταναστεύσουν σε άλλον. Αυτό έχει συνέπεια ως προς την αξιοπιστία του συστήματος σε περίπτωση σφάλματος (πχ κατάρρευσης) του υπολογιστή που φιλοξενεί το αντικείμενο.  Υπάρχουν εναλλακτικοί τρόποι ταυτοποίησης αντικειμένων όταν απαιτείται διαφανής αναφορά σε ένα αντικείμενο (χωρίς δέσμευση σε κάποιο server). Παράδειγμα η αρχιτεκτονική CORBA

40 CORBA (Common Object Request Broker Architecture) Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 40  Η Αρχιτεκτονική Μεσίτη για Αιτήσεις Κοινόχρηστων Αντικειμένων (Common Object Request Broker Architecture - CORBA) είναι ένα standard του Object Management Group (OMG) που επιτρέπει σε εφαρμογές γραμμένες σε διαφορετικές γλώσσες και πλατφόρμες να συνεργάζονται μεταξύ τους μέσω κατανεμημένων αντικειμένων.  Η γλώσσα ορισμού των διεπαφών (Interface Definition Language – IDL) της CORBA επιτρέπει στον πελάτη και τον εξυπηρετητή να γράφουν εφαρμογές σε οποιαδήποτε γλώσσα επιθυμούν αντικειμενοστραφή (πχ Java) ή όχι (πχ. C)

41 Βασικά συστατικά της αρχιτεκτονικής CORBA Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 41 πελάτης server ORB αίτημα απόκριση Αποθήκη υλοποίησης μεθόδων Αποθήκη διεπαφών IDL stub Α πρόγραμμα Object Adapter IDL skeleton Υπηρεσία Α Δυναμική κλήση Δυναμικός σκελετός ήή

42 Χαρακτηριστικά του CORBA Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 42  Οι πελάτες δημιουργούν κλήσεις σε απομακρυσμένα αντικείμενα  Ο πυρήνας ORB είναι υπεύθυνος για την επικοινωνία μεταξύ πελατών και απομακρυσμένων αντικειμένων. Ο πυρήνας ORB βρίσκει το αντικείμενο στο δίκτυο μέσω της υπηρεσίας ονομάτων. Οι προγραμματιστές δεν χρειάζεται να γνωρίζουν την τοποθεσία του αντικειμένου.  Η υπηρεσία ονομάτων (naming service) αντιστοιχεί τα ονόματα των αντικειμένων με τους servers όπου αυτά φιλοξενούνται. Είναι ένας binder.  Διεπαφή (interface): σύνολο μεθόδων και τύπων που υποστηρίζονται από το αντικείμενο.  Η γλώσσα διεπαφής IDL χρησιμοποιείται για να ορίσει τα αντικείμενα και τις μεθόδους τους. Παράδειγμα διεπαφής σε γλώσσα IDL Interface Factory { Object create(); }; Διεπαφή Factory Μέθοδος create(). Επιστρέφει αναφορά σε ένα αντικείμενο τύπου Object

43 Χαρακτηριστικά του CORBA Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 43  Η Αποθήκη μεθόδων καταγράφει τα αντικείμενα και τους servers που είναι ενεργοποιημένοι  Η Αποθήκη διεπαφών καταγράφει όλες τις καταχωρημένες διεπαφές, δηλαδή ονόματα μεθόδων και τα ορίσματα που χρησιμποιούν  Το απόκομμα IDL (IDL stub) εκτελεί κλήσεις στον πυρήνα ORB εκ μέρους της εφαρμογής του πελάτη για μια συγκεκριμένη μέθοδο Α  Ο σκελετός IDL (IDL skeleton) καλεί μια συγκεκριμένη μέθοδο Α στον εξυπηρετητή  Με τη δυναμική κλήση ο πελάτης καλεί μια απομακρυσμένη μέθοδο η οποία δεν υπήρχε την ώρα της μετάφρασης, χρησιμοποιώντας την αποθήκη μεθόδων και την πληροφορία που παίρνει από εκεί για να χρησιμοποιήσει τα κατάλληλα ορίσματα.  Με τον δυναμικό σκελετό μπορεί να προστεθεί δυναμικά ένα αντικείμενο με τις μεθόδους του στον server το οποίο δεν ήταν γνωστό κατά τη διάρκεια της μετάφρασης. Ο δυναμικός σκελετός εξυπηρετή δυναμικές κλήσεις.  Ο προσαρμοστής αντικειμένου (Object adapter) διαχείρίζεται λειτουργίες όπως η ενεργοποίηση αντικειμένων και η ενεργοποίηση μεθόδων.

44 Java RMI Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 44  Το Java Remote Object Invocation επεκτείνει το μοντέλο αντικειμένων της Java ώστε να καλύπτει κατανεμημένα αντικείμενα. Ο προγραμματισμός είναι απλούστερος από την CORBA καθώς τα προγράμματα client και server γράφονται στην ίδια γλώσσα (Java). //Παράδειγμα απομακρυσμένης διεπαφής (interface) import java.rmi.*; import java.util.Vector; public interface Shape extends Remote { int getVersion() throws RemoteException; GraphicalObject getState() throws RemoteException; } //Παράδειγμα απομακρυσμένης διεπαφής (interface) import java.rmi.*; import java.util.Vector; public interface Shape extends Remote { int getVersion() throws RemoteException; GraphicalObject getState() throws RemoteException; }

45 Java RMI – Σειριοποίηση αντικειμένων Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 45  H Java RMI κάνει «Σειριοποίηση» (Serialization) αντικειμένων, δηλαδή μετατρέπει τα αντικείμενα σε μια σειρά από bytes έτσι ώστε να μπορούν να περνούν εύκολα ως παράμετροι σε ένα μήνυμα που στέλνεται //Παράδειγμα κλάσης που σειριοποιείται public class Person implements Serializable { private String name; private String place; private int year; public Person(String aName, Sting aPlace, int aYear) { name = aName; place = aPlace; year = aYear; }... } //Παράδειγμα κλάσης που σειριοποιείται public class Person implements Serializable { private String name; private String place; private int year; public Person(String aName, Sting aPlace, int aYear) { name = aName; place = aPlace; year = aYear; }... }

46 Java RMI Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 46  Όταν γίνεται αποσειριοποίηση του αντικειμένου υποτίθεται ότι ο παραλήπτης του μηνύματος πρέπει να το ανακατασκευάσει χωρίς να γνωρίζει τη δομή του. Επομένως απαιτείται κάποια συμπληρωματική πληροφορία στην σειριακή ακολουθία έτσι ώστε να αποκατασταθεί το αντικείμενο στην αρχική του μορφή  Παράδειγμα: Σειριοποίηση του Person p = new Person(“Smith”, “London”, 1934); PersonVersion (8 byte)h0 3java.lang.String namejava.lang.String placeint year 5 Smith6 London1934h1h1 Σειριοποίηση του αντικειμένου (σειρά από bytes κατάλληλα για αποστολή σε μήνυμα):

47 Java RMI Θεωρία Λειτουργικών Συστημάτων Κ. Διαμαντάρας 47  Το RMIregisrty είναι ένας καταχωρητής (binder) των δεσμεύσεων μεταξύ αντικειμένων και servers. Ένα στιγμιότυπο του registry πρέπει να τρέχει σε κάθε εξυπηρετητή που φιλοξενεί κατανεμημένα αντικείμενα.  Το registry προσπελαύνεται από τις μεθόδους της κλάσης Name  Οι καταχωρήσεις είναι της μορφής: computerName : port / objectName


Κατέβασμα ppt "Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Επικοινωνία μεταξύ διεργασιών Απομακρυσμένες κλήσεις και αντικείμενα."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google