Πληροφορίες Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 «Επικοινωνία σε Κατανεµηµένα Συστήµατα» Σελίδα µαθήµατος http://www.cs.uoi.g/~phadjido/couss/e-03.htm Βιβλίο Κατανεµηµένα Συστήµατα µε JAVA. Ι. Κ. Κάβουρας. Εκδόσεις Κλειδάριθµος. 2005. ρ. Παναγιώτης Χατζηδούκας (Π..407/80) E-03: Λειτουργικά Συστήµατα ΙΙ 1 E-03: Λειτουργικά Συστήµατα ΙΙ 2 Εισαγωγή Στόχοι Κατανεµηµένων Συστηµάτων Κατανεµηµένα Συστήµατα Συλλογή ανεξάρτητων υπολογιστών που εµφανίζεται στους χρήστες του σαν ένα ενιαίο συνεπές σύστηµα Ζητήµατα Υλικού Πολυεπεξεργαστές, πολυυπολογιστές Πέρα από τα µονοεπεξεργαστικά ΛΣ Κατανεµηµένα ΛΣ ΛΣ ικτύου ΛΣ Ενδιάµεσου Λογισµικού (Middlwa) Ευελιξία Ευκολία αλλαγής ή επέκτασης του συστήµατος Ανοιχτή υλοποίηση Παροχή υπηρεσιών σύµφωνα µε ένα σύνολο αυστηρά προδιαγεγραµµένων κανόνων Επίδοση Υψηλή ταχύτητα διεκπεραίωσης διεργασιών ιαφάνεια Παρασκηνιακή επίτευξη της εικόνας ενός ενιαίου συστήµατος για τους χρήστες Κλιµάκωση υνατότητα αύξησης του πλήθους των επεξεργαστών Αξιοπιστία Υψηλή διαθεσιµότητα, ανοχή στις βλάβες, ασφάλεια E-03: Λειτουργικά Συστήµατα ΙΙ 3 E-03: Λειτουργικά Συστήµατα ΙΙ 4 ιαφάνεια Υπηρεσίες Κατανεµηµένων Συστηµάτων ιαφάνεια πρόσβασης (accss) ιαφάνεια τοποθέτησης (location) ιαφάνεια µετανάστευσης (migation) ιαφάνεια επανατοποθέτησης (location) ιαφάνεια οµοιοτυπίας (plication) ιαφάνεια ταυτοχρονισµού (concuncy) ιαφάνεια βλάβης (failu) ιαφάνεια διατήρησης (psistnc) ιαφάνεια παραλληλισµού (paalllism) Υπηρεσίες επικοινωνίας Υψηλότερου επιπέδου σε σχέση µε τα σύγχρονα λειτουργικά συστήµατα για την διευκόλυνση υλοποίησης εφαρµογών Υπηρεσία επικοινωνίας οµάδων Επικοινωνία µέσω ουρών µηνυµάτων (ασύγχρονα αξιόπιστα): διεργασίες Υπηρεσία ηλεκτρονικού ταχυδροµείου: χρήστες Υπηρεσίες εκτέλεσης Υπηρεσία αποµακρυσµένης εκτέλεσης: εκτέλεση εντολών φλοιού σε κάποιον εξυπηρετητή (sh) Υπηρεσία αποµακρυσµένου τερµατικού: σύνδεση Υπηρεσία αποµακρυσµένων διεργασιών: οποιαδήποτε διεργασία, µε δυνατότητα µετανάστευσης Κλήση αποµακρυσµένων διαδικασιών / αντικειµένων ή µεθόδων E-03: Λειτουργικά Συστήµατα ΙΙ 5 E-03: Λειτουργικά Συστήµατα ΙΙ 6 1
Υπηρεσίες Κατανεµηµένων Συστηµάτων Υπηρεσίες Κατανεµηµένων Συστηµάτων Υπηρεσίες ονοµασίας Υλοποίηση ενός κοινού χώρου ονοµάτων για τους πόρους ολόκληρου του συστήµατος ιεύθυνση πόρου: µηχανή όπου βρίσκεται ο πόρος και στοιχεία του Υπηρεσία ευρετηρίων: αναζήτηση πόρου µε βάση όχι το όνοµα του αλλά τον τύπο, γεωγραφική θέση, ιδιοκτήτη Υπηρεσία εντοπισµού: τρέχουσα θέση πόρου σε περίπτωση µετανάστευσης (φορητές µηχανές, διεργασίες) Υπηρεσίες αρχείων Κατανεµηµένο σύστηµα εξυπηρετητών αρχείων Ανάγνωση, εγγραφή αρχείων Συνεργασία χρηστών µέσω κοινών αρχείων και υποστήριξη κατανεµηµένου κλειδώµατος των αρχείων Υπηρεσία ευρετηρίων: δηµιουργία, διαγραφή και αναζήτηση αρχείου Υπηρεσίες συναλλαγών Συναλλαγή (tansaction): ακολουθία ενεργειών που πρέπει να εκτελεστούν µε ατοµικό τρόπο, δηλαδή όλες ή καµία Μεταφορά χρηµάτων µεταξύ τραπεζών Υπηρεσία κατανεµηµένων συναλλαγών: συγχρονισµός πελατών που επιθυµούν να εκτελέσουν ταυτόχρονα συναλλαγές µε τους ίδιους πόρους Υπηρεσίες αντικειµένων Είδη αντικειµένων Αποµακρυσµένο αντικείµενο: προσπέλαση από οπουδήποτε, κατάσταση σε µια µηχανή Κατανεµηµένο αντικείµενο: κατάσταση σε διάφορα µέρη του συστήµατος Υπηρεσία αντικειµένων: υποδοµή για κατασκευή κατανεµηµένων εφαρµογών προσανατολισµένων στα αντικείµενα ηµιουργία, µετανάστευση, αντιγραφή, διαγραφή, αποθήκευση E-03: Λειτουργικά Συστήµατα ΙΙ 7 E-03: Λειτουργικά Συστήµατα ΙΙ 8 Υπηρεσίες Κατανεµηµένων Συστηµάτων Κατηγορίες ΛΣ Υπηρεσίες αναπαραγωγής ιάθεση δεδοµένων σε πολλά αντίγραφα: αύξηση επίδοσης και αξιοπιστίας ιαχείριση αναπαραγωγής και συγχρονισµού αντιγράφων των δεδοµένων Παράδειγµα: καθρεπτισµένοι εξυπηρετητές (miod svs) Υπηρεσίες ασφάλειας Επαλήθευση ταυτότητας χρήστη, διαφύλαξη απορρήτου, έλεγχο πρόσβασης στους πόρους Κεντρικοποιηµένο σύστηµα: µηχανισµοί υλικού Κατανεµηµένο σύστηµα: χρήση κρυπτογραφικών µηχανισµών Η υπηρεσία ασφάλειας παρέχει έλεγχο πρόσβασης κι όχι πολιτικές, οι οποίες καθορίζονται από τους διαχειριστές του συστήµατος Κατανεµηµένο Λειτουργικό Σύστηµα (DOS) Στενά συνδεδεµένο ΛΣ για πολυεπεξεργαστές και οµοιογενείς πολυυπολογιστές Αποκρύβει και διαχειρίζεται τους πόρους υλικού Λειτουργικό Σύστηµα ικτύου (NOS) Χαλαρά συνδεδεµένο ΛΣ για ετερογενείς πολυυπολογιστές (LAN and WAN) Παρέχει τοπικές υπηρεσίες σε αποµακρυσµένους χρήστες Ενδιάµεσο λογισµικό Επιπρόσθετο επίπεδο σε ένα ΛΣ ικτύου που υλοποιεί υπηρεσίες γενικού σκοπού E-03: Λειτουργικά Συστήµατα ΙΙ 9 E-03: Λειτουργικά Συστήµατα ΙΙ 10 Σύγκριση µεταξύ των συστηµάτων Επικοινωνία µεταξύ διεργασιών Ζήτηµα Βαθµός ιαφάνειας Ίδιο ΛΣ σε όλους τους κόµβους Κατανεµηµένο ΛΣ Πολύεπεξεργαστέυπολογιστές Πολύ- Πολύ υψηλή Υψηλή Ναι Ναι ΛΣ ικτύου Χαµηλή Όχι ΛΣ βασισµένο σε ενδιάµεσο λογισµικό Υψηλή Όχι Αδόµητη επικοινωνία Χρήση διαµοιρασµένης µνήµης ή διαµοιρασµένων δοµών δεδοµένων οµηµένη επικοινωνία Χρήση ρητών µηνυµάτων (IPCs): snd, civ Αντίγραφα ΛΣ Βάση επικοινωνίας ιαχείριση πόρων 1 Κοινή Μνήµη Καθολική, Κεντρική N Μηνύµατα Καθολική, Κατανεµηµένη N Αρχεία Ανά κόµβο N Εξαρτάται από το µοντέλο Ανά κόµβο Κατανεµηµένα Συστήµατα: και οι δύο µορφές χρειάζονται υποστήριξη επικοινωνίας χαµηλού επιπέδου.. Ικανότητα κλιµάκωσης Όχι Μέτρια Ναι Ποικίλει Ανοιχτή σχεδίαση Κλειστή Κλειστή Ανοιχτή Ανοιχτή E-03: Λειτουργικά Συστήµατα ΙΙ 11 E-03: Λειτουργικά Συστήµατα ΙΙ 12 2
Πρωτόκολλα Επικοινωνίας Τα πρωτόκολλα είναι προκαθορισµένοι κανόνες που διέπουν το µορφότυπο, τα περιεχόµενα και τη σηµασία των µηνυµάτων που αποστέλλονται ή παραλαµβάνονται ύο γενικές κατηγορίες πρωτοκόλλων: 1. Προσανατολισµένα σε σύνδεση (connction-ointd): Εγκατάσταση σύνδεσης µεταξύ αποστολέα και παραλήπτη Αρχική διαπραγµάτευση ως προς το πρωτόκολλο ιακοπή σύνδεσης µετά την ανταλλαγή των δεδοµένων 2. Χωρίς σύνδεση (connctionlss): Ο αποστολέας στέλνει τα δεδοµένα όποτε είναι έτοιµος Το µήνυµα λαµβάνεται κάποια στιγµή Τα δεδοµένα πάντα συνοδεύονται από την διεύθυνση του παραλήπτη Τυποποίηση πρωτοκόλλων επικοινωνίας Το σύνολο των λειτουργιών ενός δικτύου διαιρείται σε 7 επίπεδα: φυσικό, ζεύξης, δικτύου, µεταφοράς, συνόδου, παρουσίασης, εφαρµογής (στοίβα πρωτοκόλλων) E-03: Λειτουργικά Συστήµατα ΙΙ 13 E-03: Λειτουργικά Συστήµατα ΙΙ 14 Φυσικό επίπεδο Οι υπηρεσίες του αφορούν στην αποστολή των bits στις επικοινωνιακές γραµµές. Ιδιαίτερα: πόσα volts είναι το 1 και το 0, πόσα bits/sc µπορούν να σταλούν, διπλής ή µονής κατεύθυνσης επικοινωνία Επίπεδο ζεύξης Το 1 ο επίπεδο αρκεί αν δεν υπάρχει η πιθανότητα λάθους. (π.χ. στέλνω"1" και λαµβάνει"0"). Ο µηχανισµός που ασχολείται µε την ανίχνευση και αντιµετώπιση λαθών είναι το κύριο µέρος του 2 ου επιπέδου. Τα bits οµαδοποιούνται σε fams και το επίπεδο διασφαλίζει ότι το κάθε fam καταφθάνει «σώο και αβλαβές» Χρησιµοποιείται ένα chcksum που στέλνεται µε το µήνυµα Μηνύµατα επιβεβαίωσης χρησιµοποιούνται για την αντιµετώπιση χαµένων µηνυµάτων/fams. Επίπεδο δικτύου Ασχολείται κυρίως µε τα προβλήµατα outing & congstion contol. ηλαδή ασχολείται κυρίως µε το να διαλέγει την καλύτερη διαδροµή που θα ακολουθήσει ένα µήνυµα για να φθάσει στον προορισµό του. Congstion contol είναι ένας έλεγχος ούτως ώστε να µην χρησιµοποιούνται πολύ µόνο µερικές γραµµές, δηµιουργώντας συµφόρηση, ενώ θα µπορούσαν να χρησιµοποιηθούν άλλες. Επίπεδο µεταφοράς Ασχολείται κυρίως µε την αξιόπιστη µεταφορά των πακέτων από τον αποστολέα στον αποδέκτη. ηµιουργεί δηλαδή αξιόπιστες συνδέσεις (liabl connction). Τα προβλήµατα κυρίως είναι: χαµένα πακέτα, αλλοιωµένα πακέτα, και πακέτα "εκτός σειράς". E-03: Λειτουργικά Συστήµατα ΙΙ 15 E-03: Λειτουργικά Συστήµατα ΙΙ 16 Επίπεδο συνόδου Συµπληρώνει το επίπεδο µεταφοράς, π.χ. διορθώνει σπασµένες συνδέσεις-µπορεί να χρησιµοποιεί chckpoints για ανάνηψη από cash. ιαλέγει επίσης το κατάλληλο πρωτόκολλο επιπέδου µεταφοράς. εν χρησιµοποιείται συχνά. Επίπεδο αναπαράστασης Τι σηµαίνουν τα bits π.χ. data ncoding (ASCII, EBCDIC για chas). Επίσης, data compssion & data ncyption / dcpytion. Επίπεδο εφαρµογής Μια συλλογή από πρωτόκολλα που προσφέρουν πολύ-ζητηµένες υπηρεσίες, π.χ. -mail, ftp, κ.τ.λ. Το µοντέλο OSI είναι πολύ βαρύ, δηλαδή κοστίζει πολύ για να χρησιµοποιηθεί σε πολλά Κ.Σ. Το µεγάλο κόστος προκύπτει από τα πολλά επίπεδα: δύο αντίστοιχα επίπεδα (σε αποστολέα κι αποδέκτη) επικοινωνούν µέσω ενός had. Καθώς το µήνυµα περνάει από το ένα επίπεδο στο αµέσως κατώτερο επίπεδο στον αποστολέα, το κάθε επίπεδο βάζει το δικό του had στο µήνυµα που στέλνεται. Αντίστοιχα, όπως το µήνυµα "ανεβαίνει" επίπεδα στον αποδέκτη, το κάθε επίπεδο αφαιρεί το κατάλληλο had από το µήνυµα πριν το περάσει στο ανώτερο επίπεδο. Η "επικοινωνία" των πρωτοκόλλων στο ίδιο επίπεδο γίνεται µέσω του had (π.χ. το πρωτόκολλο µετάδοσης βάζει ένα had µε τον αριθµό του µηνύµατος, τον αριθµό του πακέτου. Οι αριθµοί χρησιµοποιούνται από το πρωτόκολλο µετάδοσης στον αποδέκτη για αντιµετώπιση λαθών). E-03: Λειτουργικά Συστήµατα ΙΙ 17 E-03: Λειτουργικά Συστήµατα ΙΙ 18 3
Στρωµατοποιηµένα Πρωτόκολλα Ένα τυπικό µήνυµα όπως εµφανίζεται στο δίκτυο Πρωτόκολλα Ενδιάµεσου Λογισµικού Ενδιάµεσο λογισµικό: επίπεδο µεταξύ ΛΣ και εφαρµογής Μπορεί να υλοποιεί πρωτόκολλα γενικού σκοπού που δηµιουργούν τα δικά τους επίπεδα E-03: Λειτουργικά Συστήµατα ΙΙ 19 E-03: Λειτουργικά Συστήµατα ΙΙ 20 Μοντέλο Επικοινωνίας Πελάτη-Εξυπηρετητή Μοντέλο Επικοινωνίας Πελάτη-Εξυπηρετητή Το Κ.Σ. δοµείται σαν µια σειρά διεργασιών (πελατών & εξυπηρετητών). Η επικοινωνία τους βασίζεται στο απλό µοντέλο αίτησης-απόκρισης. Έτσι αποφεύγονται τα πολλά επίπεδα Απαιτούνται µόνο το φυσικό επίπεδο, το επίπεδο ζεύξης και το επίπεδο συνόδου που υλοποιεί το πρωτόκολλο αίτησης-απόκρισης Αφούτο υλικό υλοποιεί τα δύο πρώτα επίπεδα, από πλευράς λογισµικούµένει µόνο η υλοποίηση του πρωτοκόλλου αίτησηςαπόκρισης ύο κλήσεις συστήµατος: snd(dst,&msg), civ(add, &buf) το dst ορίζει τον αποδέκτη-διεργασία &msg είναι η διεύθυνση του µηνύµατος add είναι η διεύθυνση στην οποία ακούει ο αποδέκτης για µηνύµατα &buf είναι η διεύθυνση του buff όπου θέλει ο αποδέκτης να ληφθεί το µήνυµα οµή: σύνολο εξυπηρετητών που παρέχουν υπηρεσία σε πελάτες Βασίζεται στο παράδειγµα αίτησης απόκρισης Τεχνικές: Sockts, Rmot Pocdu Calls (RPC), Rmot Mthod Invocation (RMI) clint knl fil sv pocss sv tminal sv knl knl knl E-03: Λειτουργικά Συστήµατα ΙΙ 21 E-03: Λειτουργικά Συστήµατα ΙΙ 22 Ζητήµατα Επικοινωνίας Πελάτη-Εξυπηρετητή ιευθυνσιοδότηση Ανασταλτική και µη επικοινωνία Αποθηκευόµενη και µη επικοινωνία Αξιόπιστη και µη επικοινωνία Αρχιτεκτονική εξυπηρετητή Κλιµακωσιµότητα Ζητήµατα ιευθυνσιοδότησης Πως ορίζεται ο αποδέκτης του µηνύµατος; 1. Μπορούµε να δώσουµε την διεύθυνση στο δίκτυο της µηχανής όπου τρέχει ο αποδέκτης. Πως, όµως, ξέρουµε αυτή τη διεύθυνση; Τι γίνεται αν αλλάξει; Τι γίνεται αν τρέχουν πολλές διεργασίες στη µηχανή; 2. Μπορούµε να στείλουµε στη διεύθυνση pocss@machin (ή machin.svic_nam, όπου ο κάθε εξυπηρετητής µε µια κλήση συστήµατος ενηµερώνει τον πυρήνα για το δικό του svic_nam). Το βασικότερο πρόβληµα είναι η έλλειψη διαφάνειας. Ο χρήστης πρέπει να ξέρει σε ποια µηχανή τρέχει ο αποδέκτης. E-03: Λειτουργικά Συστήµατα ΙΙ 23 E-03: Λειτουργικά Συστήµατα ΙΙ 24 4
Ζητήµατα ιευθυνσιοδότησης Πως ορίζεται ο αποδέκτης του µηνύµατος; 3. Μπορούµε να αφήσουµε την κάθε διεργασία να διαλέξει τη διεύθυνσή της από ένα πολύ µεγάλο και αραιό χώρο διευθύνσεων, π.χ. 64-bit ακέραιοι. Ηπιθανότητα σύγκρουσης είναι αµελητέα. Χρειάζεται όµως πριν από κάθε επικοινωνία να σταλεί σε όλους (boadcast) ένα ειδικό πακέτο για να µάθει ο αποστολέας τη διεύθυνση της µηχανής που τρέχει η διεργασία. 4. Μια καλή λύση είναι να χρησιµοποιηθεί ένας nam sv ο οποίος συνδέει ASCII, υψηλού επιπέδου ονόµατα, µε χαµηλού επιπέδου διευθύνσεις (π.χ. "filsvic" machin: panoamix; pocss: 17). Έτσι πρώτα ρωτάται ο nam sv και µετά επικοινωνεί ο πελάτης µε την κατάλληλη διεργασία. Ηβασική ερώτηση είναι: όταν εκτελείται η εντολή snd() ή civ(), πότε θα εκτελεστεί η επόµενη εντολή της διεργασίας; (ή πότε θα επιστραφεί ο έλεγχος εκτέλεσης στη διεργασία χρήστη) Οι απόψεις για το πότε µια διεπαφή επικοινωνίας είναι blocking ή non-blocking διίστανται. E-03: Λειτουργικά Συστήµατα ΙΙ 25 E-03: Λειτουργικά Συστήµατα ΙΙ 26 snd(): Τρεις περιπτώσεις 1. Ο αποστολέας-διεργασία µπλοκάρει έως ότου το µήνυµα αποθηκευτεί σε έναν buff του πυρήνα και τότε ο πυρήνας επιστρέφει τον έλεγχο εκτέλεσης στον αποστολέα, ο οποίος συνεχίζει να εκτελεί εντολές παράλληλα µε την αποστολή του µηνύµατος. 2. Ο αποστολέας-διεργασία µπλοκάρει µόνο µέχρις ότου ο πυρήνας πάρει τις βασικές πληροφορίες (π.χ. σηµειώσει που είναι το µήνυµα, που πάει,...). Έτσι επιτυγχάνει ακόµα µεγαλύτερο παραλληλισµό. 3. Ο αποστολέας-διεργασία µπλοκάρει έως ότου ο αποδέκτηςπυρήνας να λάβει το µήνυµα και να στείλει τη σχετική επιβεβαίωση. Όλοι συµφωνούν ότι το 2 είναι non-blocking και ότι το 3 είναι blocking. Οι διαφωνίες αφορούν στο 1. Ο Tannbaum θεωρεί πως ουσιαστικό το 1 είναι "blocking". Ο λόγος είναι ότι ο αποστολέας του µπορεί µε ασφάλεια να ξαναχρησιµοποιήσει τον buff µιας και έχει αντιγραφθεί στον πυρήνα. Αντιθέτως, το 2 θεωρείται non-blocking γιατί ο αποστολέας δεν µπορεί να ξέρει πότε µπορεί µε ασφάλεια να ξαναχρησιµοποιήσει τον buff του. Πάντως, πρέπει ν' αναφερθεί ότι η επιλογή 1 είναι επικίνδυνη: σκεφτείτε τι θα γίνει αν πολλές διεργασίες στέλνουν µηνύµατα συνέχεια και πριν σταλούν τα προηγούµενά τους. Πολλές φορές προκύπτουν αδιέξοδα που είναι πολύ δύσκολο να λυθούν. E-03: Λειτουργικά Συστήµατα ΙΙ 27 E-03: Λειτουργικά Συστήµατα ΙΙ 28 civ() Blocking: η διεργασία που καλεί civ() αναστέλλεται µέχρι να φθάσει ένα µήνυµα (δηλ. να τοποθετηθεί στο buff που όρισε) Non-blocking: Αν δεν υπάρχει κάποιο µήνυµα για τη διεργασία που καλεί civ(), τότε η διεργασία δεν αναστέλλεται, αλλά συνεχίζει την εκτέλεση του προγράµµατός της και ειδοποιείται ασύγχρονα (π.χ. µε σήµα) όταν ένα µήνυµα καταφθάσει. Tad-offs: Παραλληλισµός: µπορώ να στέλνω / λαµβάνω µηνύµατα και παράλληλα να κάνω άλλα πράγµατα. Ευκολία προγραµµατισµού: ασύγχρονη συµπεριφορά είναι δύσκολο να προγραµµατιστεί σωστά. Απαιτήσεις για ενδιάµεσους αποθηκευτικούς χώρους Non-blocking: δύσκολα προγράµµατα, αλλά µε παραλληλισµό. Blocking: ευκολότερος προγραµµατισµός. Non-blocking µε knl buff: αρκετός παραλληλισµός αλλά προβλήµατα µε χώρους (dadlock & κόστος αντιγραφής). Συνήθως προτιµούνται blocking systm calls E-03: Λειτουργικά Συστήµατα ΙΙ 29 E-03: Λειτουργικά Συστήµατα ΙΙ 30 5
Αποθηκευόµενη και µη Επικοινωνία Θεωρείστε την κλήση συστήµατος: civ(add, &msg). ίνει την εντολή στον πυρήνα να τοποθετήσει ένα (επόµενο) µήνυµα, που απευθύνεται στο add, στο buff που ορίζει η δεύτερη παράµετρος. Μη αποθηκευόµενη επικοινωνία: ο παραλήπτης πρέπει να καλέσει civ προτού ένας αποστολέας να µπορεί να καλέσει snd (unbuffd systm calls). Τι κάνει ο πυρήνας στο µηχάνηµα του αποδέκτη όταν λάβει ένα µήνυµα µε αποδέκτη-προορισµό add, πριν ο αποδέκτης-διεργασία έχει εκτελέσει την εντολή civ(add, &msg); Τι θα γίνει αν πολλές διεργασίες στέλνουν µηνύµατααιτήσεις που απαιτούν πολύ χρόνο για εξυπηρέτηση; Αποθηκευόµενη και µη Επικοινωνία Buffd Systm Calls χρησιµοποιούνται για να λύσουν αυτά τα προβλήµατα. Οι διεργασίες που πρόκειται να λάβουν µηνύµατα ζητούν από τον πυρήνα να δηµιουργήσει ένα mailbox το οποίο σχετίζουν µε µια διεύθυνση. Όλα τα µηνύµατα που λαµβάνονται από τον πυρήνα µε αυτή τη διεύθυνση τοποθετούνται στο κατάλληλο mailbox. Κάθε civ(add, &msg) αφαιρεί ένα µήνυµα από το mailbox και το βάζει στο &msg. (Αν το mailbox είναι άδειο, τότε µπορεί να µπλοκάρει). Πρόβληµα: Τι γίνεται αν γεµίσουν τα mailboxs; Έτσι στην ουσία τα προβλήµατα µε τα unbuffd systm calls παραµένουν και στα buffd systm calls. Μία λύση: Αν το mailbox είναι γεµάτο, ο αποστολέας µπλοκάρει µέχρι να ληφθεί κάποιο µήνυµα από τον αποδέκτη E-03: Λειτουργικά Συστήµατα ΙΙ 31 E-03: Λειτουργικά Συστήµατα ΙΙ 32 Αποθηκευόµενη και µη Επικοινωνία Αξιόπιστη και µη Επικοινωνία Μη αποθηκευόµενη επικοινωνία Ο παραλήπτης πρέπει να καλέσει civ προτού ένας πελάτης να µπορεί να καλέσει snd Αποθηκευόµενη επικοινωνία Ο αποστολέας στέλνει σε ένα mailbox Ο παραλήπτης λαµβάνει από ένα mailbox us us sv sv Πως µπορεί ο αποστολέας να είναι σίγουρος ότι το µήνυµα του έχει ληφθεί; Σε µερικές εφαρµογές αναξιόπιστες κλήσεις συστήµατος είναι αποδεκτές. ιαφορετικά οι λύσεις χρησιµοποιούν επιβεβαιώσεις (ACKs) που είναι ειδικά µηνύµατα που ειδοποιούν ότι µια αίτηση ή µια απόκριση έχει ληφθεί. Οι επιβεβαιώσεις στέλνονται από τους πυρήνες και όχι από τις διεργασίες των χρηστών E-03: Λειτουργικά Συστήµατα ΙΙ 33 E-03: Λειτουργικά Συστήµατα ΙΙ 34 Αξιόπιστη και µη Επικοινωνία Αρχιτεκτονική Εξυπηρετητή Αναξιόπιστο κανάλι Απαίτηση επιβεβαιώσεων (ACKs) Οι εφαρµογές χειρίζονται τις επιβεβαιώσεις ACKs Επιβεβαιώσεις για αίτηση και απόκριση Αξιόπιστο κανάλι Η απόκριση λειτουργεί ως ACK για την αίτηση Αξιόπιστη επικοινωνία σε αναξιόπιστα κανάλια Το πρωτόκολλο µεταφοράς χειρίζεται τα χαµένα µηνύµατα s U s U qust ACK ply ACK qust ply v S v S Ακολουθιακή Εξυπηρέτησε µία αίτηση κάθε φορά Μπορεί να εξυπηρετήσει πολλαπλές αιτήσεις χρησιµοποιώντας γεγονότα ή ασύγχρονη επικοινωνία Παράλληλη Ο εξυπηρετητής δηµιουργεί µια διεργασία / νήµα για να χειριστεί κάθε αίτηση Μπορεί να έχει δηµιουργήσει εξαρχής µια οµάδα νηµάτων / διεργασιών (apach) Εποµένως οι εξυπηρετητές µπορεί να είναι Καθαρά ακολουθιακοί, βασισµένοι σε γεγονότα, πολυνηµατικοί, πολυδιεργασιακοί Ποια αρχιτεκτονική είναι πιο αποδοτική; E-03: Λειτουργικά Συστήµατα ΙΙ 35 E-03: Λειτουργικά Συστήµατα ΙΙ 36 6
Κλιµακωσιµότητα Πως µπορεί να κλιµακωθεί η χωρητικότητα ενός εξυπηρετητή; Χρήση ισχυρότερου υπολογιστικού συστήµατος ηµιουργία αντιγράφων Κατανοµή δεδοµένων και / ή αλγορίθµων Μεταφορά κώδικα αντί δεδοµένων Κρυφή µνήµη E-03: Λειτουργικά Συστήµατα ΙΙ 37 7