Μάριος Χατζημάρκος. Θωμάς Ματελόπουλος ΦΕΒΡΟΥΑΡΙΟΣ 2010. ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Δρ. Γκούμας Στέφανος, Επίκουρος Καθηγητής.



Σχετικά έγγραφα
Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

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

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

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

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Προγραμματισμός ΙI (Θ)

Κεφάλαιο 3. Διδακτικοί Στόχοι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου.

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

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

Λιβανός Γιώργος Εξάμηνο 2017Β

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

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

Διαφάνεια 3.1. Κεφάλαιο 3. Διαχείριση υποδομής ψηφιακού επιχειρείν

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

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

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

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

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

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

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

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

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

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

Περιεχόμενα. Visio / White paper 1

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

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΠΕΡΙΛΗΨΗ Τα Προσωπικά Δεδομένα συλλέγονται χρησιμοποιώντας τις ακόλουθες μεθόδους

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

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

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Λογισμικού

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

Γραμμή βοηθείας Ενημέρωση-Επαγρύπνηση Γραμμή παράνομου περιεχομένου

Ασφάλεια Στο Ηλεκτρονικό Εμπόριο. Λάζος Αλέξανδρος Α.Μ. 3530

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου

F-Secure Anti-Virus for Mac 2015

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

Εισαγωγή στη Σχεδίαση Λογισμικού

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

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

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

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

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

Διοίκηση Παραγωγής και Υπηρεσιών

Σχεδιαστικά Προγράμματα Επίπλου

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Λειτουργικά συστήματα πραγματικού χρόνου

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

Προγραμματισμός ΙI (Θ)

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αμοιβαίος αποκλεισμός

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

6.2 Υπηρεσίες Διαδικτύου

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

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

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

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

Σχεδίαση και Ανάπτυξη Ιστότοπων

Προγραμματισμός Ι (HY120)

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

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Κεφάλαιο 8 Η τεχνολογία των διαδικασιών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Σκοπιµότητα των firewalls

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Εφαρμογές Σειριακής Επικοινωνίας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

Σχεδιασμός Οικολογικού Διαμεσολαβητή για την εποπτεία και διαχείριση δικτύου διανομής ηλεκτρικής ενέργειας

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ενότητα 1: Εισαγωγή στις Βάσεις Δεδομένων. Αθανάσιος Σπυριδάκος Διοίκηση Επιχειρήσεων

Οδηγός γρήγορης εκκίνησης

Ενημέρωση σε Windows 8.1 από τα Windows 8

Transcript:

Τ.Ε.Ι ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ, ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΕΠΙΣΚΟΠΗΣΗ ΚΑΙ ΣΥΓΚΡΙΣΗ ΑΛΓΟΡΙΘΜΩΝ ΚΑΤΑΝΕΜΗΜΕΝΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΓΙΑ ΕΦΑΡΜΟΓΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΣΕ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ, ΕΠΙΧΕΙΡΗΣΕΙΣ ΚΑΙ ΟΡΓΑΝΙΣΜΟΥΣ Μάριος Χατζημάρκος Θωμάς Ματελόπουλος ΦΕΒΡΟΥΑΡΙΟΣ 2010 ΕΠΟΠΤΗΣ ΚΑΘΗΓΗΤΗΣ Δρ. Γκούμας Στέφανος, Επίκουρος Καθηγητής. Εκπονηθείσα πτυχιακή εργασία απαραίτητη για την κτήση του βασικού πτυχίου

ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΟΛΟΓΟΣ...5 ΚΕΦΑΛΑΙΟ 1: ΟΡΙΣΜΟΣ ΤΟΥ ΚΑΤΑΝΕΜΗΜΕΝΟΥ ΣΥΣΤΗΜΑΤΟΣ...6 1.1 Σύνδεση χρηστών και πόρων...8 1.2 Διαφάνεια...10 1.2.1 Διαφάνεια σε ένα κατανεμημένο σύστημα... 10 1.2.2 Βαθμός διαφάνειας... 14 1.3 Ανοιχτή λειτουργία... 16 1.4 Διαχωρισμός πολιτικής και μηχανισμού... 17 1.5 Έννοιες σχετικές με το λογισμικό... 19 1.6 Κατανεμημένα λειτουργικά συστήματα... 20 1.6.1 Μονοεπεξεργαστικά λειτουργικά συστήματα... 21 1.6.2 Πολυεπεξεργαστικά λειτουργικά συστήματα...24 1.6.3 Πολύ-υπολογιστικά λειτουργικά συστήματα...28 1.7 Συστήματα κατανεμημένης κοινόχρηστης μνήμης... 29 1.8 Δικτυακά λειτουργικά συστήματα...31 1.9 Σύγκριση μεταξύ συστημάτων... 34 1.10 Μοντέλο πελάτη - διακομιστή... 36 1.10.1 Πελάτες και διακομιστές... 36 1.11 Πρωτόκολλα σε διάφορα επίπεδα... 38 1.11.1 Πρωτόκολλα κατωτέρου επιπέδου... 41 1.11.2 Πρωτόκολλα μεταφοράς... 42 1.11.2.1 Λειτουργία του επιπέδου μεταφοράς...42 1.11.2.2 ΤΟΡ πελάτη - διακομιστή... 44 1.11.3 Πρωτόκολλα ανωτέρου επιπέδου... 44 1.11.4 Πρωτόκολλα συνόδου και παρουσίασης... 45 1.11.5 Πρωτόκολλα εφαρμογής... 45 1.11.6 Πρωτόκολλα ενδιάμεσου λογισμικού...46 ΚΕΦΑΛΑΙΟ 2: ΚΛΗΣΗ ΑΠΟΜΑΚΡΥΣΜΕΝΩΝ ΔΙΑΔΙΚΑΣΙΩΝ...49 2.1 Έλεγχος πρόσβασης...51 2.1.2 Γενικά ζητήματα ελέγχου πρόσβασης... 51 2.2.2 Πίνακας ελέγχου πρόσβασης...53 2.3 Περιοχές προστασίας... 54 2.4 Τείχη προστασίας...58 Σελίδα 2 από 181

2.5 Ασφαλής μετακινούμενος κώδικας...61 2.6 Προστασία ενός πράκτορα... 62 2.7 Προστασία του στόχου...64 2.8 Εικονική μηχανή java... 65 ΚΕΦΑΛΑΙΟ 3: ΔΙΑΧΕΙΡΙΣΗ ΑΣΦΑΛΕΙΑΣ...74 3.1 Διαχείριση κλειδιών...74 3.1.1 Εγκαθίδρυση κλειδιών...75 3.1.2 Διανομή κλειδιών...76 3.2 Διάρκεια ζωής πιστοποιητικών...77 3.3 Διαχείριση ασφαλών ομάδων... 79 3.4 Διαχείριση εξουσιοδότησης...80 3.5 Πιστοπιητικά ικανοτήτων και γνωρισμάτων... 81 3.6 Μεταβίβαση δικαιωμάτων... 83 3.7 Παράδειγμα KERBEROS... 85 3.8 Παράδειγμα SESAME... 87 3.8.1 Συστατικά στοιχεία του SESAME...87 3.9 Γενικά στοιχεία ασφάλειας... 88 3.9.1 Στοιχεία στον πελάτη...90 3.9.2 Στοιχεία στο διακομιστή... 92 3.10 Πιστοποιητικά γνωρισμάτων προνομίων^ρ...92 3.11 Ονομασία οντοτήτων... 94 3.11.1 Ονόματα αναγνωριστικά και διευθύνσεις... 94 3.11.2 Χώροι ονομάτων... 98 3.12 Καθολική κατάσταση...100 3.13 Κατανεμημένες συναλλαγές... 102 3.13.1 Το μοντέλο της συναλλαγής...103 ΚΕΦΑΛΑΙΟ 4: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΟΧΗ ΣΕ ΒΛΑΒΕΣ... 107 4.1 Βασικές έννοιες... 107 4.2 Μοντέλα αστοχιών...110 4.2.1 Συγκάλυψη αστοχιών μέσω υπερεπάρκειας...115 4.2.2 Ελαστικότητα διεργασιών...116 4.2.3 Ζητήματα σχεδιασμού... 116 4.2.4 Επίπεδες και ιεραρχικές ομάδες... 117 4.2.5 Συμμετοχή σε ομάδες...119 4.2.6 Συγκάλυψη αστοχιών και αναπαραγωγή...120 4.3 Αξιόπιστη επικοινωνία πελάτη διακομιστή... 122 Σελίδα 3 από 181

4.3.1 Επικοινωνία από σημείο σε σημείο...123 4.4 Χρήση RPC υπό την παρουσία αστοχιών...123 4.5 Αξιόπιστη επικοινωνία σε ομάδες...125 4.5.1 Βασικές μέθοδοι αξιόπιστης πολυεκπομπής...126 4.5.2 Επεκτασιμότητα αξιόπιστης πολυεκπομπής...129 4.5.3 Μη ιεραρχικός έλεγχος ανάδρασης... 130 4.5.4 Ιεραρχικός έλεγχος ανάδρασης...133 4.6 Εισαγωγή στα σφάλματα... 134 4.7 Σταθερά μέσα αποθήκευσης... 138 4.8 Χρήση σημείων ελέγχου...140 ΚΕΦΑΛΑΙΟ 5: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΣΦΑΛΕΙΑ... 142 5.1 Απειλές για την ασφάλεια πολιτικές και μηχανισμοί...142 5.1.2 Αρχιτεκτονική ασφαλείας Globus... 146 5.2 Ζητήματα σχεδιασμού...151 5.2.1 Εστίαση ελέγχου...151 5.2.2 Διαστρωμάτωση των μηχανισμών ασφαλείας... 153 5.2.2.1 Κατανομή μηχανισμών ασφαλείας...156 5.2.3 Απλότητα... 158 5.3 Κρυπτογραφία... 159 5.3.1 Κρυπτογράφημα δημοσίου κλειδιού RSA... 164 5.4 Ασφαλή κανάλια...166 5.5 Πιστοποίηση ταυτότητας... 168 5.5.1 Πιστοποίηση ταυτότητας με βάση κοινόχρηστο μυστικό κλειδί... 169 5.5.2 Πιστοποίηση ταυτότητας με χρήση κέντρου διανομής κλειδιών... 170 5.5.3 Πιστοποίηση ταυτότητας μέσω κρυπτογραφίας δημοσίου κλειδιού... 172 5.6 Ακεραιότητα μηνυμάτων και εμπιστευτικότητα...173 5.7 Ψηφιακές υπογραφές...174 5.8 Κλειδιά συνόδου...177 5.9 Ασφαλής ομαδική επικοινωνία... 179 5.10 Εμπιστευτική ομαδική επικοινωνία...179 5.11 Ασφαλείς αναπαρηγμένοι διακομιστές... 180 ΒΙΒΛΙΟΓΡΑΦΙΑ... 181 Σελίδα 4 από 181

ΠΡΟΛΟΓΟΣ Λόγω της ραγδαίας εξάπλωσης των δικτύων τα τελευταία χρόνια, τα κατανεμημένα συστήματα δεν είναι πια μία ακαδημαϊκή ενασχόληση, αλλά καθημερινή πραγματικότητα για εκατομμύρια χρήστες. Όλα τα σύγχρονα λειτουργικά συστήματα έχουν κάποιες, βασικές τουλάχιστον, δυνατότητες κατανεμημένης λειτουργίας. Η εργασία αυτή δημιουργήθηκε για να μας κάνει να κατανοήσουμε εμείς όλοι καλύτερα τι σημαίνει, και τι είναι ένα κατανεμημένο σύστημα και πως αυτό μπορεί να βοηθήσει τους ανθρώπους στην καθημερινότητα τους. Ένα κατανεμημένο σύστημα μπορεί να είναι χρήσιμο από πολλές απόψεις και πλευρές. Στη συνέχεια θα δούμε ποιες είναι αυτές, θα αναλύσουμε τα πλεονεκτήματα και τα μειονεκτήματα τους και θα καταλάβουμε καλύτερα τους λόγους για τους οποίους δημιουργήθηκαν. Θα αναλύσουμε επίσης τη χρήση των κατανεμημένων συστημάτων στον παγκόσμιο ιστό (World Wide Web) ο οποίος μπορεί να θεωρηθεί το μεγαλύτερο κατανεμημένο σύστημα που έχει δημιουργηθεί ποτέ. Θα αναφερθούμε ακόμα στην ασφάλεια που μας παρέχουν όπως επίσης θα αναλύσουμε και κάποιους σημαντικούς αλγόριθμους προκειμένου να κατανοήσουμε καλύτερα τον τρόπο λειτουργίας και την αποδοτικότητα τους. Στην παρούσα εργασία προσπαθήσαμε να αναφερθούμε πραγματικά παραδείγματα συστημάτων τα οποία να υλοποιούν τις θεωρητικές ιδέες που παρουσιάζονται στην ύλη. Σελίδα 5 από 181

ΚΕΦΑΛΑΙΟ 1: ΟΡΙΣΜΟΣ ΤΟΥ ΚΑΤΑΝΕΜΗΜΕΝΟΥ ΣΥΣΤΗΜΑΤΟΣ (Α1) Κατανεμημένο σύστημα είναι μια συλλογή από ανεξάρτητους υπολογιστές, οι οποίοι εμφανίζονται στους χρήστες τους ως ένα ενιαίο συνεκτικό σύστημα. Ο ορισμός αυτός έχει δύο πλευρές. Η πρώτη αφορά το υλικό: τα μηχανήματα είναι αυτόνομα. Η δεύτερη αφορά το λογισμικό: οι χρήστες θεωρούν ότι έχουν να κάνουν με ένα ενιαίο σύστημα. Και οι δύο πλευρές είναι ουσιώδεις. Θα επανέλθουμε σε αυτά τα δύο σημεία αργότερα σε αυτό το κεφάλαιο, αφού πρώτα καλύψουμε κάποια απαραίτητη ύλη που αφορά τόσο το υλικό όσο και το λογισμικό. Αντί να συνεχίσουμε με ορισμούς, είναι ίσως πιο χρήσιμο να εστιάσουμε την προσοχή μας στα σημαντικά χαρακτηριστικά των κατανεμημένων συστημάτων. Ένα σημαντικό χαρακτηριστικό είναι ότι οι διαφορές μεταξύ των διαφόρων υπολογιστών και οι τρόποι με τους οποίους αυτοί επικοινωνούν παραμένουν κρυφοί για τους χρήστες. Το ίδιο ισχύει και για την εσωτερική οργάνωση των κατανεμημένων συστημάτων. Ένα άλλο σημαντικό χαρακτηριστικό είναι ότι χρήστες και εφαρμογές μπορούν να αλληλεπιδρούν με ένα κατανεμημένο σύστημα με συνεπή και ομοιόμορφο τρόπο, ανεξάρτητα από το πού και πότε πραγματοποιείται η αλληλεπίδραση. Τα κατανεμημένα συστήματα θα πρέπει επίσης να επιτρέπουν με σχετική ευκολία την επέκταση τους ή την προσαρμογή της κλίμακας του μεγέθους τους. Αυτό το χαρακτηριστικό είναι άμεση συνέπεια της απαίτησης να έχουμε ανεξάρτητους υπολογιστές και ταυτόχρονα να παραμένει κρυφό το πώς ακριβώς αυτοί οι υπολογιστές συμμετέχουν στο σύστημα ως σύνολο. Υπό κανονικές συνθήκες, ένα κατανεμημένο σύστημα είναι συνεχώς διαθέσιμο, αν και ορισμένα μέρη του μπορεί να είναι προσωρινά εκτός λειτουργίας. Οι χρήστες και οι εφαρμογές δε θα πρέπει να είναι σε θέση να δουν ότι κάποια μέρη αντικαθίστανται ή επιδιορθώνονται, ή ότι προστίθενται νέα μέρη για την εξυπηρέτηση περισσότερων χρηστών ή εφαρμογών. Τα κατανεμημένα συστήματα, προκειμένου να υποστηρίζουν ετερογενείς υπολογιστές και δίκτυα παρέχοντας παράλληλα την άποψη ενός ενιαίου συστήματος, οργανώνονται συχνά με τη χρήση ενός επιπέδου λογισμικού το οποίο Σελίδα 6 από 181

από λογική άποψη τοποθετείται ανάμεσα σε ένα ανώτερο επίπεδο που αποτελείται από χρήστες και εφαρμογές και ένα κατώτερο επίπεδο που αποτελείται από λειτουργικά συστήματα. Με τη λογική αυτή, ένα τέτοιο κατανεμημένο σύστημα ονομάζεται μερικές φορές ενδιάμεσο λογισμικό. Ας ρίξουμε τώρα μια ματιά σε μερικά παραδείγματα κατανεμημένων συστημάτων. Ως πρώτο παράδειγμα, θα πάρουμε ένα δίκτυο σταθμών εργασίας σε ένα τμήμα πανεπιστημίου ή επιχείρησης. Εκτός από τον προσωπικό σταθμό εργασίας του κάθε χρήστη, θα μπορούσε να υπάρχει μια "δεξαμενή" επεξεργαστών στην αίθουσα υπολογιστών, οι οποίοι δεν αποδίδονται σε συγκεκριμένους χρήστες αλλά εκχωρούνται δυναμικά όπου χρειάζονται. Ένα τέτοιο σύστημα θα μπορούσε να διαθέτει ένα ενιαίο σύστημα αρχείων, με όλα τα αρχεία προσπελάσιμα από όλα τα μηχανήματα με τον ίδιο τρόπο και με τη χρήση του ίδιου ονόματος διαδρομής. Επιπλέον, όταν ένας χρήστης πληκτρολογεί μια διαταγή, το σύστημα θα μπορούσε να ψάχνει για το καλύτερο σημείο όπου θα μπορούσε να εκτελέσει τη διαταγή αυτή, πιθανώς στον ίδιο το σταθμό εργασίας του χρήστη, ίσως σε έναν αδρανή σταθμό εργασίας που ανήκει σε κάποιον άλλο χρήστη, ή ενδεχομένως σε κάποιον από τους επεξεργαστές στην αίθουσα υπολογιστών που δεν έχουν εκχωρηθεί πουθενά. Αν το σύστημα ως σύνολο μοιάζει και συμπεριφέρεται σαν ένα κλασικό χρονομεριζόμενο (δηλαδή πολυχρηστικό) σύστημα ενός επεξεργαστή, τότε ικανοποιεί τα κριτήρια για να θεωρηθεί κατανεμημένο σύστημα. Ως δεύτερο παράδειγμα, θα χρησιμοποιήσουμε ένα σύστημα πληροφοριών ροής εργασιών, το οποίο υποστηρίζει αυτόματη διεκπεραίωση παραγγελιών. Συνήθως, ένα τέτοιο σύστημα χρησιμοποιείται από άτομα διαφορετικών τμημάτων, τα οποία μπορεί να βρίσκονται και σε διαφορετικές θέσεις. Για παράδειγμα, άτομα από το τμήμα πωλήσεων μπορεί να είναι διασκορπισμένα σε μια μεγάλη περιοχή ή σε μια ολόκληρη χώρα. Οι παραγγελίες υποβάλλονται με χρήση φορητών υπολογιστών, οι οποίοι συνδέονται με το σύστημα μέσω του τηλεφωνικού δικτύου, ίσως και με κινητά τηλέφωνα. Οι εισερχόμενες εντολές προωθούνται αυτόματα στο τμήμα σχεδιασμού, με αποτέλεσμα Σελίδα 7 από 181

την υποβολή νέων εσωτερικών εντολών αποστολής εμπορευμάτων προς το τμήμα αποθήκης, καθώς και εντολών έκδοσης τιμολογίων τις οποίες πρέπει να διεκπεραιώσει το λογιστήριο. Το σύστημα προωθεί αυτόματα τις παραγγελίες σε ένα κατάλληλο και διαθέσιμο άτομο. Οι χρήστες δεν έχουν την παραμικρή ιδέα για το πώς πραγματοποιείται η φυσική ροή των εντολών στο εσωτερικό του συστήματος- γι' αυτούς, φαίνεται σαν να γίνονται όλα σε μια κεντρική βάση δεδομένων. Ως ένα τελευταίο παράδειγμα, θα εξετάσουμε τον Παγκόσμιο Ιστό. Ο Ιστός παρέχει ένα απλό, συνεπές, και ομοιόμορφο μοντέλο κατανεμημένων εγγράφων. Για να δει ο χρήστης ένα έγγραφο χρειάζεται μόνο να ενεργοποιήσει μια αναφορά, και το έγγραφο εμφανίζεται στην οθόνη. Στη θεωρία (αλλά σίγουρα όχι στην πράξη σήμερα) δεν είναι ανάγκη να γνωρίζουμε από ποιο διακομιστή προσκομίστηκε το έγγραφο, και πολύ περισσότερο πού βρίσκεται ο διακομιστής αυτός. Η δημοσίευση ενός εγγράφου είναι απλή: το μόνο που έχουμε να κάνουμε είναι να του δώσουμε ένα μοναδικό όνομα με τη μορφή μιας διεύθυνσης (Ενιαίος Εντοπιστής Πόρων), η οποία παραπέμπει σε ένα τοπικό αρχείο που περιέχει το περιεχόμενο του εγγράφου. Αν ο Παγκόσμιος Ιστός εμφανιζόταν στους χρήστες του ως ένα γιγαντιαίο κεντρικό σύστημα εγγράφων, θα ικανοποιούσε και αυτός τα κριτήρια για να χαρακτηριστεί κατανεμημένο σύστημα. Δυστυχώς, δεν έχουμε φτάσει ακόμα σε αυτό το σημείο. Για παράδειγμα, οι χρήστες είναι ενήμεροι για το γεγονός ότι τα έγγραφα βρίσκονται σε διαφορετικές θέσεις και ο χειρισμός τους γίνεται από διαφορετικούς διακομιστές. 1.1 Σύνδεση χρηστών και πόρων Α(1,2) Ο κύριος σκοπός ενός κατανεμημένου συστήματος είναι να κάνει εύκολη για τους χρήστες την προσπέλαση απομακρυσμένων πόρων, καθώς και να επιτρέπει το μερισμό αυτών των πόρο)ν με άλλους χρήστες με έναν ελεγχόμενο τρόπο. Οι πόροι μπορεί να είναι σχεδόν οτιδήποτετυπικά παραδείγματα αποτελούν, μεταξύ άλλων, οι εκτυπωτές, οι υπολογιστές, τα μέσα αποθήκευσης, τα δεδομένα, τα αρχεία, οι ιστοσελίδες, και τα δίκτυα. Υπάρχουν πολλοί λόγοι για τους οποίους μπορεί Σελίδα 8 από 181

να είναι επιθυμητός ο μερισμός πόρων. Ένας προφανής λόγος είναι η οικονομία. Για παράδειγμα, το να μοιράζονται έναν εκτυπωτή πολλοί χρήστες είναι φθηνότερο από την αγορά και τη συντήρηση ενός ξεχωριστού εκτυπωτή για τον κάθε χρήστη. Παρόμοια, είναι λογικό να γίνεται κοινή χρήση των πολύ ακριβών πόρων, όπως οι υπέρ-υπολογιστές και τα συστήματα αποθήκευσης υψηλής απόδοσης. Η σύνδεση χρηστών και πόρων διευκολύνει επίσης τη συνεργασία και την ανταλλαγή πληροφοριών, όπως έδειξε σαφώς η επιτυχία του ίπίθγπθί με τα απλά του πρωτόκολλα για ανταλλαγή αρχείων, αλληλογραφίας, εγγράφων, ήχου, και βίντεο. Η συνδεσιμότητα του ίπίθγπθί έχει οδηγήσει σήμερα σε πολυάριθμους "εικονικούς" οργανισμούς, στους οποίους ομάδες ή άτομα με ευρεία γεωγραφική διασπορά συνεργάζονται με τη χρήση λογισμικού ομάδας, δηλαδή λογισμικού για συνεργατική σύνταξη κειμένων, τηλεδιασκέψεις κ.λπ. Παρομοίως, η συνδεσιμότητα του έχει κάνει εφικτό το ηλεκτρονικό εμπόριο, το οποίο μας επιτρέπει να αγοράζουμε και να πουλάμε κάθε είδους προϊόντα, χωρίς να χρειάζεται να πάμε σε κατάστημα. Καθώς όμως η συνδεσιμότητα και ο μερισμός πόρων αυξάνονται, η ασφάλεια αποκτά όλο και μεγαλύτερη σημασία. Με την τρέχουσα πρακτική, τα συστήματα παρέχουν ελάχιστη προστασία από υποκλοπές ή εισβολές στην επικοινωνία. Οι κωδικοί πρόσβασης και άλλες απόρρητες πληροφορίες στέλνονται συχνά ως απλό κείμενο (χωρίς κρυπτογράφηση) μέσω του δικτύου ή αποθηκεύονται σε διακομιστές, για τους οποίους απλώς ελπίζουμε ότι είναι άξιοι εμπιστοσύνης. Από την άποψη αυτή, υπάρχουν μεγάλα περιθώρια για βελτίωση. Για παράδειγμα, σήμερα έχουμε τη δυνατότητα να παραγγείλουμε προϊόντα δίνοντας απλώς έναν αριθμό πιστωτικής κάρτας. Σπανίως απαιτούνται αποδείξεις ότι ο πελάτης είναι ο ιδιοκτήτης της κάρτας. Στο μέλλον, η υποβολή παραγγελιών με αυτόν τον τρόπο θα μπορούσε να είναι δυνατή μόνο αν κάποιος είναι σε θέση να αποδείξει ότι έχει την κάρτα στην κατοχή του, με τη χρήση μιας συσκευής ανάγνωσης καρτών. Άλλα πρόβλημα ασφάλειας είναι η παρακολούθηση της επικοινωνίας με σκοπό τη δημιουργία ενός προφίλ προτιμήσεων για ένα Σελίδα 9 από 181

συγκεκριμένο χρήστη. Η παρακολούθηση αυτή παραβιάζει ρητά το προσωπικό απόρρητο, ιδιαίτερα αν γίνεται χωρίς να το γνωρίζει ο χρήστης. Ένα άλλο σχετικό πρόβλημα είναι ότι η αυξημένη συνδεσιμότητα μπορεί να οδηγήσει και σε ανεπιθύμητη επικοινωνία, όπως συμβαίνει με τα ανεπιθύμητα μαζικά μηνύματα ηλεκτρονικού ταχυδρομείου. Σε τέτοιες περιπτώσεις, εκείνο που ίσως χρειαζόμαστε είναι να προστατεύουμε τον εαυτό μας χρησιμοποιώντας ειδικά φίλτρα πληροφοριών, τα οποία ξεδιαλέγουν τα εισερχόμενα μηνύματα με βάση το περιεχόμενο τους. 1.2 Διαφάνεια (A1) Ένας σημαντικός στόχος ενός κατανεμημένου συστήματος είναι να κρύβει το γεγονός ότι οι διεργασίες και οι πόροι του είναι από φυσική άποψη κατανεμημένοι σε πολλούς υπολογιστές. Ένα κατανεμημένο σύστημα που μπορεί να εμφανίζεται στους χρήστες και τις εφαρμογές σαν να ήταν απλώς ένα ενιαίο υπολογιστικό σύστημα χαρακτηρίζεται ως διαφανές (transparent). Θα ρίξουμε πρώτα μια ματιά στα είδη διαφάνειας που υπάρχουν στα κατανεμημένα συστήματα, και έπειτα θα ασχοληθούμε με το ερώτημα αν η διαφάνεια είναι πάντα απαραίτητη. 1.2.1 Διαφάνεια σε ένα κατανεμημένο σύστημα Α(1,2) Η έννοια της διαφάνειας μπορεί να εφαρμοστεί σε πολλές πλευρές ενός κατανεμημένου συστήματος, όπως φαίνεται στον Πίνακα 1. Σελίδα 10 από 181

Διαφάνεια Προσπέλασης Θέσης Μετανάστευσης Μετακόμισης Αναπαραγωγής Ταυτοχρονισμού Αστοχιών Διατήρησης Περιγραφή Απόκρυψη διαφορών στην αναπαράσταση δεδομένων και τον τρόπο προσπέλασης ενός πόρου Απόκρυψη της θέσης που βρίσκεται ένας πόρος Απόκρυψη του ότι ένας πόρος μπορεί να μετακινηθεί σε Απόκρυψη του ότι ένας πόρος μπορεί να μετακινηθεί σε άλλη θέση, ενώ χρησιμοποιείται Απόκρυψη του ότι ένας πόρος έχει αναπαραχθεί Απόκρυψη του ότι ένας πόρος μπορεί να είναι κοινόχρηστος μεταξύ ανταγωνιζόμενων χρηστών Απόκρυψη της αστοχίας και της ανάκαμψης ενός πόρου Απόκρυψη του αν ένας πόρος (λογισμικού) βρίσκεται στη μνήμη ή στο δίσκο Πίνακας 1. Διάφορες μορφές διαφάνειας σε ένα κατανεμημένο σύστημα Η διαφάνεια προσπέλασης αφορά την απόκρυψη των διαφορών στην αναπαράσταση των δεδομένων και στον τρόπο με τον οποίο οι πόροι μπορούν να προσπελάζονται από τους χρήστες. Για παράδειγμα, για να στείλουμε έναν ακέραιο αριθμό από ένα σταθμό εργασίας με επεξεργαστή της intel σε ένα σταθμό εργασίας sun spare, χρειάζεται να λάβουμε υπόψη ότι η intel διατάσσει τα byte σε μορφή μικρού άκρου, ενώ ο επεξεργαστής spare χρησιμοποιεί τη μορφή μεγάλου άκρου. Μπορεί να υπάρχουν και άλλες διαφορές στην αναπαράσταση των δεδομένων. Για παράδειγμα, ένα κατανεμημένο σύστημα μπορεί να διαθέτει υπολογιστικά συστήματα που χρησιμοποιούν διαφορετικά λειτουργικά συστήματα, κάθε ένα από τα οποία έχει τις δικές του συμβάσεις ονομασίας αρχείων. Οι διαφορές στην ονομασία των αρχείων, καθώς και στο πώς γίνεται ο χειρισμός των αρχείων, θα πρέπει να παραμένουν κρυφές από τους χρήστες και τις εφαρμογές. Σελίδα 11 από 181

Μια σημαντική ομάδα τύπων διαφάνειας αφορά τη θέση που βρίσκεται ένας πόρος. Η διαφάνεια θέσης αναφέρεται στο γεγονός ότι οι χρήστες δεν μπορούν να προσδιορίσουν το πού βρίσκεται από φυσική άποψη ένας πόρος μέσα στο σύστημα. Σημαντικό ρόλο στην επίτευξη της διαφάνειας θέσης παίζει η ονομασία. Συγκεκριμένα, η διαφάνεια θέσης μπορεί να επιτευχθεί με την απόδοση μόνο λογικών ονομάτων στους πόρους, δηλαδή ονομάτων στα οποία η θέση του πόρου δεν είναι μυστικά κωδικοποιημένη. Ένα παράδειγμα τέτοιου ονόματος είναι η διεύθυνση URL http://www.pcone.com/index.html, η οποία δε δίνει καμία ένδειξη για τη θέση του κύριου διακομιστή Ιστού της PCONE. Επίσης, η διεύθυνση URL δε δίνει καμία ένδειξη για το αν το αρχείο index.html ήταν πάντα στην παρούσα θέση ή αν μετακινήθηκε εκεί πρόσφατα. Τα κατανεμημένα συστήματα στα οποία μπορούν να μετακινούνται πόροι, χωρίς να επηρεάζεται το πώς προσπελάζονται, λέγεται ότι διαθέτουν διαφάνεια μετανάστευσης. Ακόμα ισχυρότερη είναι η διαφάνεια στις περιπτώσεις όπου μπορούν να μετακινούνται πόροι ενώ προσπελάζονται, χωρίς ο χρήστης ή η εφαρμογή να παρατηρούν τίποτα. Σε τέτοιες περιπτώσεις, λέγεται ότι το σύστημα διαθέτει διαφάνεια μετακόμισης. Ένα παράδειγμα διαφάνειας μετακόμισης έχουμε όταν μετακινούμενοι χρήστες είναι σε θέση να συνεχίζουν να χρησιμοποιούν τον ασύρματο φορητό τους υπολογιστή ενώ μετακινούνται από τον έναν τόπο στον άλλο, χωρίς να αποσυνδέονται (ούτε καν προσωρινά). Όπως θα δούμε, η αναπαραγωγή παίζει σημαντικό ρόλο στα κατανεμημένα συστήματα. Για παράδειγμα, πόροι μπορούν να αναπαράγονται ώστε να αυξάνεται η διαθεσιμότητα τους ή να βελτιώνεται η αποδοτικότητα με την τοποθέτηση ενός αντίγραφου του πόρου κοντά στη θέση πρόσβασης. Η διαφάνεια αναπαραγωγής σχετίζεται με την απόκρυψη του γεγονότος ότι υπάρχουν πολλά αντίγραφα ενός πόρου. Για την απόκρυψη της αναπαραγωγής από τους χρήστες, είναι απαραίτητο όλα τα αντίγραφα να έχουν το ίδιο όνομα. Συνεπώς, ένα σύστημα που διαθέτει διαφάνεια αναπαραγωγής θα πρέπει γενικά να διαθέτει και διαφάνεια θέσης, Σελίδα 12 από 181

γιατί αλλιώς θα ήταν αδύνατον να γίνεται αναφορά σε αντίγραφα που βρίσκονται σε διαφορετικές θέσεις. Επισημάναμε ήδη ότι ένας σημαντικός στόχος των κατανεμημένων συστημάτων είναι να επιτρέπουν το μερισμό πόρων. Σε πολλές περιπτώσεις, ο μερισμός πόρων γίνεται με συνεργατικό τρόπο, όπως στην περίπτωση της επικοινωνίας. Υπάρχουν όμως και πολλά παραδείγματα ανταγωνιστικού μερισμού πόρων. Για παράδειγμα, μπορεί δύο ανεξάρτητοι χρήστες να έχουν αποθηκευμένα τα αρχεία τους στον ίδιο διακομιστή αρχείων, ή να προσπελάζουν τους ίδιους πίνακες σε μια κοινόχρηστη βάση δεδομένων. Σε τέτοιες περιπτώσεις, είναι σημαντικό να μη γίνεται αντιληπτό από τον κάθε χρήστη ότι ο άλλος κάνει χρήση του ίδιου πόρου. Το φαινόμενο αυτό ονομάζεται διαφάνεια ταυτοχρονισμού. Ένα σημαντικό ζήτημα είναι ότι η ταυτόχρονη προσπέλαση ενός μεριζόμενου πόρου πρέπει να αφήνει αυτόν τον πόρο σε μια συνεπή κατάσταση. Η συνέπεια μπορεί να επιτευχθεί με μηχανισμούς κλειδωμάτων, με τους οποίους παρέχεται στον κάθε χρήστη με τη σειρά αποκλειστική πρόσβαση στο συγκεκριμένο πόρο. Ένας καλύτερος μηχανισμός είναι να χρησιμοποιούνται συναλλαγές, οι οποίες όμως, όπως θα δούμε παρακάτω, είναι δύσκολο να υλοποιηθούν στα κατανεμημένα συστήματα. Ένας δημοφιλής εναλλακτικός ορισμός του κατανεμημένου συστήματος, ο οποίος οφείλεται στον Ιθβίίθ ΐ8ηροΓί, είναι ο εξής: "Ξέρεις ότι έχεις ένα τέτοιο σύστημα, όταν η κατάρρευση ενός υπολογιστή για τον οποίο δεν έχεις ακούσει ποτέ σε εμποδίζει να κάνεις οποιαδήποτε δουλειά". Η άποψη αυτή μας φέρνει σε ένα άλλο σημαντικό ζήτημα της σχεδίασης κατανεμημένων συστημάτων: την αντιμετώπιση των αστοχιών. Το να είναι ένα κατανεμημένο σύστημα διαφανές σε αστοχίες σημαίνει ότι δε γίνεται αντιληπτό από το χρήστη ότι ένας πόρος (για τον οποίο ίσως δεν έχει ακούσει ποτέ) δε λειτουργεί σωστά, και ότι στη συνέχεια το σύστημα ανακάμπτει από αυτή την αστοχία. Η κάλυψη των αστοχιών αποτελεί ένα από τα δυσκολότερα θέματα στα κατανεμημένα συστήματα, και μπορεί να Σελίδα 13 από 181

είναι και αδύνατη αν γίνουν ορισμένες προφανείς ρεαλιστικές παραδοχές, όπως θα δούμε παρακάτω. Η σημαντικότερη δυσκολία στην κάλυψη των αστοχιών έγκειται στην αδυναμία να γίνει διάκριση μεταξύ ενός (νεκρού) πόρου και ενός απελπιστικά αργού πόρου. Για παράδειγμα όταν ένα πρόγραμμα φυλλομέτρησης έρθει σε επαφή με έναν απασχολημένο διακομιστή του Ιστού, τελικά θα εξαντλήσει το χρόνο αναμονής και θα αναφέρει ότι η ιστοσελίδα δεν είναι διαθέσιμη. Στο σημείο αυτό, ο χρήστης δεν μπορεί να συμπεράνει αν ο διακομιστής είναι πραγματικά εκτός λειτουργίας. Ο τελευταίος τύπος διαφάνειας που συνδέεται συχνά με τα κατανεμημένα συστήματα είναι η διαφάνεια διατήρησης, η οποία αφορά την απόκρυψη του αν ένας πόρος βρίσκεται σε πτητική μνήμη ή είναι αποθηκευμένος σε κάποιο δίσκο. Για παράδειγμα, πολλές αντικειμενοστρεφείς βάσεις δεδομένων διαθέτουν μηχανισμούς για την άμεση κλήση μεθόδων που σχετίζονται με αποθηκευμένα αντικείμενα. Εκείνο που συμβαίνει στο παρασκήνιο είναι ότι ο διακομιστής βάσεων δεδομένων αντιγράφει πρώτα την κατάσταση του αντικειμένου από το δίσκο στην κύρια μνήμη, εκτελεί τη λειτουργία, και ενδεχομένως ξαναγράφει την κατάσταση πίσω στο δευτερεύοντα αποθηκευτικό χώρο. Ο χρήστης, όμως, δεν αντιλαμβάνεται ότι ο διακομιστής μεταφέρει την κατάσταση μεταξύ πρωτεύουσας και δευτερεύουσας μνήμης. Η διατήρηση παίζει σημαντικό ρόλο στα κατανεμημένα συστήματα, αλλά είναι εξίσου σημαντική και στα μη κατανεμημένα συστήματα. 1.2.2 Βαθμός διαφάνειας Α(1) Αν και η διαφάνεια της κατανεμημένης λειτουργίας είναι γενικά επιθυμητή για οποιοδήποτε κατανεμημένο σύστημα, υπάρχουν περιπτώσεις όπου η εμμονή στην απόκρυψη όλων των πλευρών της κατανεμημένης λειτουργίας από τους χρήστες δεν είναι πάντα καλή ιδέα. Ένα παράδειγμα είναι να ζητήσετε την παράδοση της ηλεκτρονικής σας εφημερίδας στο γραμματοκιβώτιο σας, όπως συνήθως πριν τις 7 το πρωί, τοπική ώρα, ενώ βρίσκεστε στην άλλη άκρη του κόσμου, σε διαφορετική ζώνη ώρας. Στην περίπτωση αυτή η πρωινή σας εφημερίδα δε θα είναι εκείνη που έχετε συνηθίσει. Σελίδα 14 από 181

Παρομοίως, δεν μπορείτε να περιμένετε ότι ένα κατανεμημένο σύστημα ευρείας περιοχές που συνδέει μια διεργασία στο Σαν Φραντσίσκο με μια διεργασία στο Άμστερνταμ θα κρύψει το γεγονός ότι η Μητέρα Φύση δεν επιτρέπει να σταλεί ένα μήνυμα από τη μία διεργασία στην άλλη σε λιγότερο από 35 χιλιοστά του δευτερολέπτου. Η πράξη δείχνει ότι στην πραγματικότητα χρειάζονται εκατοντάδες χιλιοστά του δευτερολέπτου για να μεταβιβαστεί το μήνυμα μέσω ενός δικτύου υπολογιστών. Η μετάδοση σημάτων δεν περιορίζεται μόνο από την ταχύτητα του φωτός, αλλά και από τις περιορισμένες δυνατότητες επεξεργασίας των ενδιάμεσων μεταγωγών. Υπάρχει επίσης μια αντιστρόφως ανάλογη σχέση μεταξύ του υψηλού βαθμού διαφάνειας και της απόδοσης του συστήματος. Για παράδειγμα, πολλές εφαρμογές του ΙπίθΓΠθί προσπαθούν επανειλημμένα να έρθουν σε επαφή με ένα διακομιστή, πριν εγκαταλείψουν τελικά την προσπάθεια. Συνεπώς, η προσπάθεια να αποκρυφθεί μια παροδική αστοχία διακομιστή, πριν γίνει άλλη απόπειρα, μπορεί να επιβραδύνει ολόκληρο το σύστημα. Σε μια τέτοια περίπτωση, ίσως να είναι καλύτερο να εγκαταλειφθεί η προσπάθεια νωρίτερα ή τουλάχιστον να δοθεί στο χρήστη η δυνατότητα να ματαιώσει τις προσπάθειες για την πραγματοποίηση επαφής. Ένα άλλο παράδειγμα έχουμε όταν χρειάζεται να εξασφαλιστεί ότι πολλά αντίγραφα, τα οποία βρίσκονται σε διαφορετικές ηπείρους, πρέπει να είναι πάντοτε συνεπή μεταξύ τους. Με άλλα λόγια, αν ένα αντίγραφο τροποποιηθεί, η αλλαγή αυτή θα πρέπει να διαδοθεί σε όλα τα αντίγραφα, πριν επιτραπεί οποιαδήποτε άλλη λειτουργία. Είναι φανερό ότι μία και μόνο λειτουργία ενημέρωσης μπορεί τώρα να χρειαστεί ολόκληρα δευτερόλεπτα για να ολοκληρωθεί, και αυτό βέβαια είναι κάτι που δεν μπορεί να κρυφθεί από τους χρήστες. Το συμπέρασμα είναι ότι η διαφάνεια της κατανεμημένης λειτουργίας είναι ένας καλός στόχος κατά τη σχεδίαση και την υλοποίηση κατανεμημένων συστημάτων, αλλά θα πρέπει να συνεκτιμάται με άλλα ζητήματα, όπως η απόδοση. Σελίδα 15 από 181

1.3 Ανοιχτή λειτουργία Α(2,6) Ένας άλλος σημαντικός στόχος των κατανεμημένων συστημάτων είναι η ανοιχτή λειτουργία. Ανοιχτό κατανεμημένο σύστημα, ονομάζεται ένα σύστημα που παρέχει υπηρεσίες σύμφωνα με κάποιους καθιερωμένους κανόνες, οι οποίοι περιγράφουν τη σύνταξη και τη σημειολογία αυτών των υπηρεσιών. Για παράδειγμα, στα δίκτυα υπολογιστών υπάρχουν καθιερωμένοι κανόνες που διέπουν τη μορφή, το περιεχόμενο, και τη σημασία των μηνυμάτων που στέλνονται και λαμβάνονται. Οι κανόνες αυτοί τυποποιούνται σε πρωτόκολλα. Στα κατανεμημένα συστήματα, οι υπηρεσίες γενικά καθορίζονται μέσω διασυνδέσεων, οι οποίες συχνά περιγράφονται σε μια Γλώσσα Ορισμού Διασυνδέσεων. Οι ορισμοί διασυνδέσεων που γράφονται σε μια γλώσσα ί ϋ ΐ σχεδόν πάντα συλλαμβάνουν μόνο τη σύνταξη των υπηρεσιών. Με άλλα λόγια, καθορίζουν ακριβώς τα ονόματα των διαθέσιμων συναρτήσεων καθώς και τους τύπους των παραμέτρων, τις επιστρεφόμενες τιμές, τις πιθανές εξαιρέσεις που μπορεί να προκύψουν κ.λπ. Το δύσκολο είναι να καθοριστεί ακριβώς το τι κάνουν αυτές οι υπηρεσίες, δηλαδή η σημειολογία των διασυνδέσεων. Στην πράξη, οι προδιαγραφές αυτές δίνονται απλώς με έναν άτυπο τρόπο, σε φυσική γλώσσα. Αν έχει γίνει σωστά, ένας ορισμός διασύνδεσης επιτρέπει σε μια οποιαδήποτε διεργασία που χρειάζεται κάποια διασύνδεση να "συνομιλήσει" με μια άλλη διεργασία η οποία παρέχει αυτή τη διασύνδεση. Ένας ορισμός διασύνδεσης επιτρέπει επίσης σε δύο ανεξάρτητους κατασκευαστές να δημιουργήσουν εντελώς διαφορετικές υλοποιήσεις αυτής της διασύνδεσης, με αποτέλεσμα να προκύψουν δύο διαφορετικά κατανεμημένα συστήματα που λειτουργούν ακριβώς με τον ίδιο τρόπο. Οι σωστές προδιαγραφές είναι πλήρεις και ουδέτερες. "Πλήρεις" σημαίνει ότι όλα όσα χρειάζονται για να δημιουργηθεί μια υλοποίηση, έχουν πραγματικά καθοριστεί. Ωστόσο, πολλοί ορισμοί διασυνδέσεων δεν είναι καθόλου πλήρεις, και έτσι ο κατασκευαστής είναι αναγκασμένος να προσθέτει λεπτομέρειες ειδικά για τη συγκεκριμένη υλοποίηση. Το ίδιο σημαντικό είναι το γεγονός ότι οι προδιαγραφές δεν υπαγορεύουν τη μορφή που θα έχει η υλοποίηση Σελίδα 16 από 181

πρέπει να είναι ουδέτερες. Η πληρότητα και η ουδετερότητα αποτελούν σημαντικούς παράγοντες για τη διαλειτουργικότητα και τη φορητότητα. Η διαλειτουργικότητα χαρακτηρίζει το κατά πόσον δύο υλοποιήσεις συστημάτων ή στοιχείων που προέρχονται από διαφορετικούς κατασκευαστές μπορούν να συνυπάρχουν και να συνεργάζονται βασιζόμενες απλώς η μία στις υπηρεσίες της άλλης, όπως αυτές καθορίζονται από ένα κοινό πρότυπο. Η φορητότητα χαρακτηρίζει το κατά πόσον μια εφαρμογή που έχει αναπτυχθεί για ένα κατανεμημένο σύστημα Α μπορεί να εκτελεστεί χωρίς τροποποιήσεις σε ένα διαφορετικό κατανεμημένο σύστημα Β, το οποίο υλοποιεί τις ίδιες διασυνδέσεις με το Α. Ένας άλλος σημαντικός στόχος για ένα ανοιχτό κατανεμημένο σύστημα είναι ότι θα πρέπει να είναι ευέλικτο, πράγμα που σημαίνει ότι θα πρέπει να είναι εύκολο να διευθετηθεί με τη χρήση διαφορετικών συστατικών στοιχείων, ενδεχομένως από διαφορετικούς κατασκευαστές. Επίσης, θα πρέπει να είναι εύκολη η προσθήκη νέων στοιχείων ή η αντικατάσταση υπαρχόντων στοιχείων, χωρίς να επηρεάζονται τα στοιχεία που παραμένουν. Με άλλα λόγια, ένα ανοιχτό κατανεμημένο σύστημα πρέπει να είναι και επεκτάσιμο. Για παράδειγμα, σε ένα ευέλικτο σύστημα πρέπει να είναι σχετικά εύκολο να προστεθούν στοιχεία που λειτουργούν σε διαφορετικά λειτουργικά συστήματα, ή ακόμα και να αντικατασταθεί ένα ολόκληρο σύστημα αρχείων. Όπως οι περισσότεροι γνωρίζουμε από την καθημερινή πρακτική, η ευελιξία επιτυγχάνεται ευκολότερα στα λόγια παρά στην πράξη. 1.4 Διαχωρισμός πολιτικής και μηχανισμού Α(6) Για να επιτευχθεί η ευελιξία στα ανοιχτά κατανεμημένα συστήματα, είναι πολύ σημαντικό το σύστημα να είναι οργανωμένο ως μια συλλογή σχετικά μικρών συστατικών στοιχείων, τα οποία μπορούν εύκολα να αντικατασταθούν ή να προσαρμοστούν. Αυτό συνεπάγεται ότι θα πρέπει να παρέχουμε ορισμούς όχι μόνο για τις διασυνδέσεις Σελίδα 17 από 181

ανώτατου επιπέδου, δηλαδή εκείνες που μπορούν να δουν οι χρήστες και οι εφαρμογές, αλλά και ορισμούς για τις διασυνδέσεις των εσωτερικών μερών του συστήματος, και να περιγράφουμε πώς αλληλεπιδρούν αυτά τα μέρη. Η προσέγγιση αυτή είναι σχετικά καινούργια. Πολλά παλαιότερα αλλά και σημερινά συστήματα είναι δομημένα με μια μονολιθική προσέγγιση, όπου τα στοιχεία διαχωρίζονται μεν από λογική άποψη αλλά υλοποιούνται ως ένα ενιαίο τεράστιο πρόγραμμα. Η προσέγγιση αυτή κάνει δύσκολη την αντικατάσταση ή την προσαρμογή ενός στοιχείου, χωρίς να επηρεαστεί ολόκληρο το σύστημα. Γι' αυτό, τα μονολιθικά συστήματα τείνουν να είναι κλειστά, και όχι ανοιχτά. Η ανάγκη για αλλαγές σε ένα κατανεμημένο σύστημα προκαλείται συχνά από ένα συστατικό στοιχείο που δεν παρέχει την καλύτερη πολιτική για ένα συγκεκριμένο χρήστη ή εφαρμογή. Ένα παράδειγμα αποτελεί η χρήση κρυφής μνήμης στον Παγκόσμιο Ιστό. Τα προγράμματα φυλλομέτρησης, γενικά, επιτρέπουν σε ένα χρήστη να προσαρμόσει την πολιτική του για τη χρήση κρυφής μνήμης, καθορίζοντας το μέγεθος της κρυφής μνήμης και το αν ένα έγγραφο που βρίσκεται εκεί θα ελέγχεται ως προς τη συνέπεια του πάντα, ή ίσως μόνο μία φορά σε κάθε περίοδο εργασίας. Ωστόσο, ο χρήστης δεν μπορεί να επηρεάσει άλλες παραμέτρους της αποθήκευσης στην κρυφή μνήμη, όπως το χρόνο που μπορεί να παραμείνει ένα έγγραφο εκεί ή ποιο έγγραφο θα διαγράφεται όταν η κρυφή μνήμη γεμίσει. Επίσης, είναι αδύνατον να λαμβάνονται αποφάσεις για τη χρήση της κρυφής μνήμης με βάση το περιεχόμενο ενός εγγράφου. Για παράδειγμα, ένας χρήστης μπορεί να θέλει να αποθηκεύονται στην κρυφή μνήμη τα δρομολόγια των τρένων, γνωρίζοντας ότι δύσκολα αλλάζουν, αλλά ποτέ οι πληροφορίες για την τρέχουσα κατάσταση της οδικής κυκλοφορίας. Εκείνο που χρειαζόμαστε είναι ένας διαχωρισμός μεταξύ πολιτικής και μηχανισμού. Στην περίπτωση της χρήσης κρυφής μνήμης στον Ιστό, για παράδειγμα, το πρόγραμμα φυλλομέτρησης θα μπορούσε, θεωρητικά, να παρέχει μηχανισμούς μόνο για την αποθήκευση εγγράφων, και ταυτόχρονα να επιτρέπει στους χρήστες να αποφασίζουν Σελίδα 18 από 181

ποια έγγραφα θα αποθηκεύονται και για πόσο χρόνο. Στην πράξη, αυτό μπορεί να υλοποιηθεί με ένα εκτεταμένο σύνολο παραμέτρων, στις οποίες ο χρήστης θα μπορεί να δίνει τιμές δυναμικά. Ακόμα καλύτερο θα ήταν ο χρήστης να είχε τη δυνατότητα να υλοποιήσει μια δική του πολιτική με τη μορφή ενός πρόσθετου στοιχείου, το οποίο να μπορεί να προσαρτηθεί στο φυλλομετρητή. Φυσικά, το στοιχείο αυτό θα πρέπει να διαθέτει μια διασύνδεση η οποία να είναι κατανοητή από το φυλλομετρητή, ώστε ο τελευταίος να καλεί διαδικασίες αυτής της διασύνδεσης. 1.5 Έννοιες σχετικές με το λογισμικό Β(2,3) Το υλικό των κατανεμημένων συστημάτων είναι σημαντικό, αλλά το λογισμικό είναι αυτό που καθορίζει σε μεγάλο βαθμό το πώς εμφανίζεται, στην πραγματικότητα, ένα κατανεμημένο σύστημα. Τα κατανεμημένα συστήματα έχουν πολλές ομοιότητες με τα παραδοσιακά λειτουργικά συστήματα. Πρώτον, ενεργούν ως διαχειριστές πόρων για το υποκείμενο υλικό, επιτρέποντας σε πολλούς χρήστες και εφαρμογές να μοιράζονται πόρους, όπως ορϋ, μνήμες, περιφερειακές συσκευές, δίκτυο, και δεδομένα όλων των ειδών. Δεύτερον, και ίσως σημαντικότερο, τα κατανεμημένα συστήματα προσπαθούν να κρύψουν τις περιπλοκές και την ετερογενή φύση του υποκείμενου υλικού, παρέχοντας μια εικονική μηχανή στην οποία μπορούν εύκολα να εκτελούνται οι εφαρμογές. Για να γίνει λοιπόν κατανοητή η φύση των κατανεμημένων συστημάτων, θα ρίξουμε πρώτα μια ματιά στα λειτουργικά συστήματα σε σχέση με τους κατανεμημένους υπολογιστές. Τα λειτουργικά συστήματα για κατανεμημένους υπολογιστές μπορούν χονδρικά να υποδιαιρεθούν σε δύο κατηγορίες: τα στενά συνδεδεμένα συστήματα και τα χαλαρά συνδεδεμένα συστήματα. Στα στενά συνδεδεμένα συστήματα, το λειτουργικό σύστημα ουσιαστικά προσπαθεί να συντηρήσει μια ενιαία, καθολική άποψη των πόρων που διαχειρίζεται. Τα χαλαρά συνδεδεμένα συστήματα μπορούν να θεωρηθούν σύνολα υπολογιστών, καθένας από τους οποίους χρησιμοποιεί το δικό του λειτουργικό σύστημα. Ωστόσο, Σελίδα 19 από 181

αυτά τα λειτουργικά συστήματα συνεργάζονται για να θέσουν τις υπηρεσίες τους και τους πόρους τους στη διάθεση των άλλων. Αυτή η διάκριση μεταξύ στενά συνδεδεμένων και χαλαρά συνδεδεμένων συστημάτων σχετίζεται με την ταξινόμηση του υλικού που κάναμε στην προηγούμενη ενότητα. Ένα λειτουργικό σύστημα στενής σύνδεσης χαρακτηρίζεται γενικά ως κατανεμημένο λειτουργικό σύστημα και χρησιμοποιείται για τη διαχείριση πολυεπεξεργαστών και ομοιογενών πολυ-υπολογιστών. Όπως και τα παραδοσιακά μονοεπεξεργαστικά λειτουργικά συστήματα, ο βασικός στόχος ενός κατανεμημένου λειτουργικού συστήματος είναι να κρύβει τις περιπλοκές της διαχείρισης του υποκείμενου υλικού, έτσι ώστε να μπορούν να το μοιράζονται πολλές διεργασίες. Το χαλαρά συνδεδεμένο δικτυακό λειτουργικό σύστημα χρησιμοποιείται στα ετερογενή πολυ υπολογιστικά συστήματα. Αν και η διαχείριση του υποκείμενου υλικού είναι σημαντικό ζήτημα, η βασική διαφορά από τα παραδοσιακά λειτουργικά συστήματα έγκειται στο γεγονός ότι τοπικές υπηρεσίες γίνονται διαθέσιμες σε απομακρυσμένους πελάτες. Στις επόμενες ενότητες, θα ρίξουμε πρώτα μια ματιά στα λειτουργικά συστήματα στενής σύνδεσης και χαλαρής σύνδεσης. Για να φτάσουμε πραγματικά σε ένα κατανεμημένο σύστημα, χρειάζεται να γίνουν βελτιώσεις στις υπηρεσίες των δικτυακών λειτουργικών συστημάτων, όπως καλύτερη υποστήριξη για τη διαφάνεια της κατανεμημένης λειτουργίας. Οι βελτιώσεις αυτές οδηγούν στο λεγόμενο ενδιάμεσο λογισμικό και βρίσκονται στην καρδιά των σημερινών κατανεμημένων συστημάτων 1.6 Κατανεμημένα λειτουργικά συστήματα Α(3) Υπάρχουν δύο τύποι κατανεμημένων λειτουργικών συστημάτων. Ένα πολύ-επεξεργαστικό λειτουργικό σύστημα διαχειρίζεται τους πόρους ενός πολυεπεξεργαστή. Ένα πολυ-υπολογιστικό λειτουργικό σύστημα είναι ένα λειτουργικό σύστημα σχεδιασμένο για ομοιογενείς πολυ-υπολογιστές. Οι λειτουργικές δυνατότητες των κατανεμημένων λειτουργικών συστημάτων είναι ουσιαστικά ίδιες με εκείνες των Σελίδα 20 από 181