ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf ·...

24

Transcript of ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf ·...

Page 1: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449
Page 2: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449
Page 3: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

5

ΠΑΡΑΡΤΗΜΑ Α

Περιεχόμενα

Πρόλογος ........................................................................................ 15

ΚΕΦΑΛΑΙΟ 1

Εισαγωγή ........................................................................................ 21

1.1. Συστήματα πολλών επεξεργαστών................................................................21

1.1.1. Λειτουργικά συστήματα πολυεπεξεργαστών.................................. 24

1.1.2. Λειτουργικά συστήματα δικτύων ................................................... 26

1.1.3. Κατανεμημένα λειτουργικά συστήματα ......................................... 27

1.1.4. Ενδιάμεσο λογισμικό κατανεμημένων συστημάτων ...................... 28

1.2. Στόχοι κατανεμημένων συστημάτων ............................................................31

1.2.1. Διαφάνεια........................................................................................ 33

1.2.2. Κλιμάκωση ..................................................................................... 35

1.3. Υπηρεσίες κατανεμημένων συστημάτων......................................................37

1.3.1. Υπηρεσίες επικοινωνίας ................................................................. 37

1.3.2. Υπηρεσίες εκτέλεσης...................................................................... 38

1.3.3. Υπηρεσίες ονομασίας ..................................................................... 39

1.3.4. Υπηρεσίες αρχείων ......................................................................... 40

1.3.5. Υπηρεσίες συναλλαγών .................................................................. 40

1.3.6. Υπηρεσίες αντικειμένων................................................................. 41

1.3.7. Υπηρεσίες παραγωγής αντιγράφων ................................................ 41

1.3.8. Υπηρεσίες ασφάλειας ..................................................................... 42

1.4. Μοντέλο πελάτη-εξυπηρετητή......................................................................43

1.4.1. Μοντέλο πελάτη-εξυπηρετητή τριών επιπέδων.............................. 45

1.4.2. Υλοποίηση μοντέλου πελάτη-εξυπηρετητή.................................... 48

Page 4: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

1.5. Μοντέλο ομοτίμων........................................................................................49

1.5.1. Δομημένα συστήματα ομοτίμων..................................................... 52

1.5.2. Μη δομημένα συστήματα ομοτίμων............................................... 54

1.6. Κατανεμημένα συστήματα, υπολογισμοί και αλγόριθμοι............................56

1.6.1. Σύγχρονα και ασύγχρονα συστήματα ............................................. 56

1.6.2. Κατανεμημένοι υπολογισμοί .......................................................... 58

1.6.3. Κατανεμημένοι αλγόριθμοι ............................................................ 60

ΚΕΦΑΛΑΙΟ 2

Διάταξη συμβάντων και καθολικές καταστάσεις......................... 61

2.1. Εισαγωγή.......................................................................................................61

2.2. Συγχρονισμός φυσικών χρονιστών ...............................................................63

2.2.1. Αλγόριθμοι Cristian και Berkeley .................................................. 65

2.2.2. Πρωτόκολλο Ώρας Δικτύου............................................................ 67

2.3. Διάταξη συμβάντων ......................................................................................69

2.4. Λογικοί και διανυσματικοί χρονιστές ...........................................................70

2.5. Καθολικές καταστάσεις ................................................................................73

2.6. Παθητική στρατηγική: Παρατηρήσεις ..........................................................75

2.6.1. Παθητική στρατηγική: Παρατηρήσεις............................................ 77

2.6.2. Ενεργητική στρατηγική: Στιγμιότυπα............................................. 83

ΚΕΦΑΛΑΙΟ 3

Καθολικά κατηγορήματα ............................................................... 91

3.1. Εισαγωγή.......................................................................................................91

3.2. Ιδιότητες καθολικών κατηγορημάτων...........................................................92

3.2.1. Σταθερά κατηγορήματα .................................................................. 92

3.2.2. Ασταθή κατηγορήματα ................................................................... 92

3.2.3. Possibly(Φ) και Definitely(Φ).............................................. 95

3.2.4. Αποτίμηση Possibly(Φ).............................................................. 96

3.2.5. Αποτίμηση Definitely(Φ) ......................................................... 97

3.3. Αδιέξοδα .......................................................................................................98

3.3.1. Χειρισμός αδιεξόδων .................................................................... 100

3.3.2. Ανίχνευση αδιεξόδων ................................................................... 101

3.3.3. Συγκεντρωτική ανίχνευση αδιεξόδων........................................... 103

3.3.4. Ιεραρχική ανίχνευση αδιεξόδων ................................................... 104

Page 5: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Περιεχόμενα 7

3.3.5. Κατανεμημένη ανίχνευση αδιεξόδων ........................................... 106

3.3.6. Αποκατάσταση αδιεξόδων............................................................ 114

3.4. Κατανεμημένος τερματισμός ......................................................................116

3.4.1. Αλγόριθμος του Dijkstra............................................................... 116

3.4.2. Αλγόριθμος ανάκτησης πίστωσης ................................................ 118

3.4.3. Αλγόριθμος των Dijkstra και Scholten ......................................... 121

3.4.4. Αλγόριθμος στιγμιότυπων ............................................................ 122

ΚΕΦΑΛΑΙΟ 4

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

4.1. Εισαγωγή.....................................................................................................123

4.2. Συγκεντρωτική προσέγγιση.........................................................................125

4.3. Κατανεμημένη προσέγγιση .........................................................................128

4.3.1. Αλγόριθμος του Lamport.............................................................. 128

4.3.2. Αλγόριθμος των Ricart και Agrawala........................................... 132

4.4. Προσέγγιση με μεταβίβαση σκυτάλης ........................................................137

4.4.1. Τοπολογία δακτυλίου: Αλγόριθμος του LeLann .......................... 137

4.4.2. Γενική τοπολογία: Αλγόριθμος του Chandy................................. 139

4.4.3. Τοπολογία δένδρου: Αλγόριθμος της Raymond........................... 141

ΚΕΦΑΛΑΙΟ 5

Εκλογή αρχηγού........................................................................... 147

5.1. Εισαγωγή.....................................................................................................147

5.2. Τοπολογία δένδρου .....................................................................................149

5.3. Τοπολογία δακτυλίου..................................................................................153

5.3.1. Αλγόριθμος του LeLann ............................................................... 153

5.3.2. Αλγόριθμος των Chang και Roberts ............................................. 154

5.4. Τοπολογία ισχυρά συνδεδεμένου γράφου...................................................157

ΚΕΦΑΛΑΙΟ 6

Ανοχή βλαβών.............................................................................. 163

6.1. Εισαγωγή.....................................................................................................163

6.2. Πλεονασμός ................................................................................................164

6.3. Ενεργή παραγωγή αντιγράφων ...................................................................166

Page 6: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

6.4. Παθητική παραγωγή αντιγράφων ...............................................................169

6.4.1. Ένα σύγχρονο πρωτόκολλο .......................................................... 171

6.4.2. Ένα ασύγχρονο πρωτόκολλο ........................................................ 172

6.5. Αποκατάσταση............................................................................................175

6.5.1. Αντίστροφη αποκατάσταση.......................................................... 175

6.5.2. Ευθεία αποκατάσταση .................................................................. 176

6.6. Κατανεμημένη συμφωνία............................................................................178

6.6.1. Πρόβλημα των δύο στρατών......................................................... 180

6.6.2. Πρόβλημα των Βυζαντινών στρατηγών ....................................... 182

ΚΕΦΑΛΑΙΟ 7

Ατομικές συναλλαγές................................................................... 189

7.1. Εισαγωγή.....................................................................................................189

7.2. Κατηγορίες συναλλαγών.............................................................................192

7.3. Έλεγχος ταυτοχρονισμού ............................................................................194

7.4. Μέθοδοι ελέγχου ταυτοχρονισμού..............................................................198

7.4.1. Κλείδωμα ...................................................................................... 199

7.4.2. Αισιόδοξος έλεγχος ταυτοχρονισμού ........................................... 204

7.4.3. Διάταξη χρονοσφραγίδων............................................................. 209

7.5. Κατανεμημένες συναλλαγές .......................................................................213

ΚΕΦΑΛΑΙΟ 8

Μηχανισμοί επικοινωνίας ........................................................... 221

8.1. Πρωτόκολλα επικοινωνίας..........................................................................221

8.2. Μοντέλο αναφοράς ISO/OSI ......................................................................222

8.3. Μοντέλο αναφοράς TCP/IP ........................................................................226

8.4. Υποδοχές επικοινωνίας ...............................................................................228

8.5. Δικτύωση στην Java....................................................................................231

8.5.1. Διευθύνσεις: Τάξη InetAddress................................................ 232

8.5.2. Υποδοχές ρευμάτων δεδομένων: Τάξη ServerSocket ............. 234

8.5.3. Σειριακοποίηση αντικειμένων ...................................................... 240

8.5.4. Υποδοχές δεδομενογραμμάτων: Τάξη DatagramSocket........... 242

8.5.5. Υποδοχές πολυεκπομπής: Τάξη MulticastSocket .................. 257

8.5.6. Ομοιόμορφοι Εντοπιστές Πόρων: Τάξη URL................................ 259

Page 7: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Περιεχόμενα 9

8.6. Απομακρυσμένες κλήσεις διαδικασιών ......................................................262

8.7. Μεταβίβαση παραμέτρων ...........................................................................265

8.7.1. Αναπαράσταση παραμέτρων ........................................................ 267

8.7.2. Πρωτόκολλα απομακρυσμένων κλήσεων..................................... 269

8.7.3. Αντιγραφή μηνυμάτων.................................................................. 271

8.7.4. Προδιαγραφές διαδικασιών .......................................................... 274

8.7.5. Το σύστημα DCE.......................................................................... 274

ΚΕΦΑΛΑΙΟ 9

Ταυτοχρονισμός και νήματα ....................................................... 279

9.1. Διεργασίες και νήματα ................................................................................279

9.2. Υλοποίηση νημάτων ...................................................................................282

9.3. Αξιοποίηση των νημάτων ...........................................................................287

9.4. Νήματα στην Java .......................................................................................289

9.4.1. Νήματα εκτέλεσης: Τάξη Thread................................................ 292

9.4.2. Αντικείμενα εκτέλεσης: Διεπαφή Runnable ............................... 303

9.4.3. Νήματα δαίμονες .......................................................................... 307

9.4.4. Ομάδες νημάτων ........................................................................... 308

9.4.5. Συγχρονισμός νημάτων................................................................. 313

ΚΕΦΑΛΑΙΟ 10

Θέματα ασφάλειας........................................................................ 333

10.1. Μηχανισμοί ασφάλειας ...............................................................................333

10.2. Πάροχοι ασφάλειας .....................................................................................336

10.2.1. Αφηρημένη τάξη Provider......................................................... 337

10.3. Λίστες ελέγχου προσπέλασης .....................................................................338

10.3.1. Διεπαφή Principal .................................................................... 339

10.3.2. Διεπαφή Group............................................................................. 339

10.3.3. Διεπαφή Permission .................................................................. 340

10.3.4. Διεπαφή AclEntry ...................................................................... 340

10.3.5. Διεπαφή Owner............................................................................. 342

10.3.6. Διεπαφή Acl ................................................................................. 343

10.4. Συνόψεις μηνυμάτων...................................................................................353

10.4.1. Αφηρημένη τάξη MessageDigest.............................................. 354

Page 8: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

10.5. Κρυπτογραφία .............................................................................................360

10.5.1. Διεπαφή Key ................................................................................. 362

10.5.2. Κρυπτογραφία μυστικού κλειδιού ................................................ 363

10.5.3. Κρυπτογραφία δημόσιου κλειδιού................................................ 365

10.5.4. Τάξη Cipher ................................................................................ 369

10.6. Ψηφιακές υπογραφές...................................................................................375

10.6.1. Αφηρημένη τάξη Signature ...................................................... 377

10.7. Ψηφιακά πιστοποιητικά ..............................................................................383

10.7.1. Αφηρημένη τάξη Certificate .................................................. 386

10.7.2. Εργαλείο keytool ....................................................................... 387

10.7.3. Τάξη KeyStore............................................................................ 392

ΚΕΦΑΛΑΙΟ 11

Κατανομή φόρτου ........................................................................ 399

11.1. Οργάνωση πόρων........................................................................................399

11.1.1. Μοντέλο δεξαμενής ...................................................................... 400

11.1.2. Μοντέλο σταθμών εργασίας ......................................................... 402

11.1.3. Υβριδικό μοντέλο ......................................................................... 404

11.2. Πολιτικές καταχώρισης επεξεργαστών .......................................................405

11.2.1. Προσέγγιση εξισορρόπησης φόρτου ............................................ 409

11.2.2. Προσέγγιση καταμερισμού φόρτου .............................................. 420

11.3. Μετεγκατάσταση κώδικα............................................................................424

11.3.1. Είδη μετεγκατάστασης.................................................................. 425

11.3.2. Δέσμευση πόρων........................................................................... 427

11.3.3. Μετεγκατάσταση σε ετερογενή συστήματα ................................. 430

11.3.4. Μετεγκατάσταση σε εικονικές μηχανές ....................................... 432

11.3.5. Μετεγκατάσταση κώδικα στην Agent TCL.................................. 434

ΚΕΦΑΛΑΙΟ 12

Κατανεμημένα συστήματα ονομασίας ...................................... 439

12.1. Ονομασία οντοτήτων ..................................................................................439

12.1.1. Χώροι ονομάτων........................................................................... 442

12.1.2. Ανάλυση ονομάτων ...................................................................... 444

12.1.3. Συγχώνευση χώρων ονομάτων ..................................................... 446

Page 9: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Περιεχόμενα 11

12.2. Υπηρεσίες ονομασίας..................................................................................449

12.2.1. Σύστημα DNS ............................................................................... 453

12.3. Υπηρεσίες ευρετηρίων ................................................................................459

12.3.1. Σύστημα Active Directory ............................................................ 462

12.3.2. Σύστημα Novell Directory Service ............................................... 466

12.4. Υπηρεσίες εντοπισμού ................................................................................469

12.4.1. Ευρεία εκπομπή και πολυεκπομπή ............................................... 472

12.4.2. Δείκτες προώθησης....................................................................... 473

12.4.3. Αρχική τοποθεσία ......................................................................... 475

ΚΕΦΑΛΑΙΟ 13

Κατανεμημένοι πίνακες κατακερματισμού ................................ 479

13.1. Εισαγωγή.....................................................................................................479

13.2. Κατανεμημένος κατακερματισμός ..............................................................480

13.3. Το σύστημα Chord ......................................................................................484

13.3.1. Κόμβοι και κλειδιά ....................................................................... 485

13.3.2. Απλή αναζήτηση κλειδιών............................................................ 487

13.3.3. Σύνθετη αναζήτηση κλειδιών ....................................................... 489

13.3.4. Προσχώρηση κόμβων ................................................................... 493

13.3.5. Αποχώρηση και αποτυχία κόμβων ............................................... 499

13.4. Το σύστημα Pastry ......................................................................................502

13.4.1. Κόμβοι και κλειδιά ....................................................................... 504

13.4.2. Δρομολόγηση μηνυμάτων ............................................................ 506

13.4.3. Προσχώρηση, αποχώρηση και αποτυχία κόμβων........................ 509

13.4.4. Βελτιστοποίηση διαδρομών.......................................................... 511

13.5. Πολυεκπομπή στο σύστημα Scribe.............................................................514

13.5.1. Δημιουργία δένδρου πολυεκπομπής ............................................. 515

13.5.2. Αντιμετώπιση αποτυχιών.............................................................. 518

ΚΕΦΑΛΑΙΟ 14

Κατανεμημένα συστήματα αποθήκευσης.................................. 519

14.1. Εισαγωγή.....................................................................................................519

14.2. Διεπαφή συστήματος αρχείων.....................................................................520

14.2.1. Διεπαφή υπηρεσίας αρχείων......................................................... 522

14.2.2. Διεπαφή υπηρεσίας ευρετηρίων ................................................... 525

Page 10: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

14.3. Ονόματα και αναγνωριστικά αρχείων.........................................................528

14.4. Εξυπηρετητές αρχείων και ευρετηρίων.......................................................530

14.5. Προσωρινή αποθήκευση απομακρυσμένων αρχείων.................................534

14.6. Σημασιολογία καταμερισμού αρχείων ........................................................537

14.7. Συνέπεια συστήματος αρχείων....................................................................539

14.8. Το σύστημα NFS.........................................................................................543

14.8.1. Διεπαφή του NFS.......................................................................... 546

14.8.2. Προσωρινή αποθήκευση αρχείων στο NFS.................................. 550

14.9. Το σύστημα AFS.........................................................................................552

14.9.1. Διεπαφή του AFS.......................................................................... 553

14.9.2. Προσωρινή αποθήκευση αρχείων στο AFS.................................. 557

14.10. Το σύστημα PAST ......................................................................................559

14.10.1. Λειτουργία του PAST................................................................... 560

14.10.2. Παραγωγή αντιγράφων στο PAST ............................................... 564

14.11. Το σύστημα CFS .........................................................................................567

14.11.1. Το σύστημα αρχείων του CFS ...................................................... 568

14.11.2. Λειτουργία του CFS...................................................................... 570

ΚΕΦΑΛΑΙΟ 15

Κατανεμημένος καταμερισμός αρχείων..................................... 573

15.1. Εισαγωγή.....................................................................................................573

15.2. Αναζήτηση αρχείων σε συστήματα ομοτίμων ............................................575

15.2.1. Αναζήτηση μέσω εξυπηρετητών .................................................. 575

15.2.2. Αναζήτηση μέσω πλημμύρας ....................................................... 578

15.2.3. Αναζήτηση σε ημιδομημένα δίκτυα ............................................. 581

15.3. Ανταλλαγή αρχείων σε συστήματα ομοτίμων ............................................584

15.3.1. Το σύστημα BitTorrent ................................................................. 586

ΚΕΦΑΛΑΙΟ 16

Κατανεμημένα συστήματα αντικειμένων ................................... 599

16.1. Εισαγωγή.....................................................................................................599

16.2. Απομακρυσμένα αντικείμενα......................................................................601

16.3. Αναφορές σε αντικείμενα............................................................................604

16.4. Εξυπηρετητές αντικειμένων........................................................................606

16.4.1. Προσαρμογείς αντικειμένων......................................................... 608

16.4.2. Υποτακτικές τάξεις και εργαστηριακές μέθοδοι .......................... 609

Page 11: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Περιεχόμενα 13

16.5. Εκκαθάριση αντικειμένων...........................................................................611

16.5.1. Μετρητές και λίστες αναφορών.................................................... 613

16.6. Java RMI .....................................................................................................615

16.6.1. Επικοινωνία με αντικείμενα.......................................................... 615

16.6.2. Μεταβίβαση παραμέτρων και επιστροφή αποτελεσμάτων.......... 618

16.6.3. Εντοπισμός αντικειμένων ............................................................. 620

16.6.4. Δυναμική φόρτωση κώδικα .......................................................... 625

16.6.5. Υλοποίηση και εκτέλεση εφαρμογών........................................... 626

Παράδειγμα 16.1........................................................................... 633

16.6.6. Ενεργοποίηση αντικειμένων......................................................... 640

ΚΕΦΑΛΑΙΟ 17

Μηνυματοστρεφές ενδιάμεσο λογισμικό .................................. 645

17.1. Εισαγωγή.....................................................................................................645

17.2. Υπηρεσία Μηνυμάτων της Java..................................................................647

17.3. Προηγμένο Πρωτόκολλο Αναμονής Μηνυμάτων .....................................650

17.4. Άλλες προσεγγίσεις.....................................................................................656

ΚΕΦΑΛΑΙΟ 18

Υπηρεσίες Ιστού........................................................................... 657

18.1. Εισαγωγή.....................................................................................................657

18.2. Γλώσσα Περιγραφής Υπηρεσιών Ιστού......................................................659

18.3. Υπηρεσίες Ιστού βασισμένες στο πρωτόκολλο SOAP ..............................667

18.4. Υπηρεσίες Ιστού με στυλ REST .................................................................669

18.5. Σύγκριση μεταξύ SOAP και REST.............................................................670

18.6. Σχεδιασμός και υλοποίηση υπηρεσιών Ιστού .............................................672

ΠΑΡΑΡΤΗΜΑ Α

Επικεφαλίδες μεθόδων της Java ................................................ 675

Μέθοδοι της τάξης InetAddress ........................................................................675

Μέθοδοι της τάξης Socket...................................................................................675

Μέθοδοι της τάξης ServerSocket......................................................................676

Μέθοδοι της τάξης DatagramPacket .................................................................676

Μέθοδοι της τάξης DatagramSocket .................................................................676

Μέθοδοι της τάξης MulticastSocket ...............................................................676

Page 12: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

Μέθοδοι της τάξης URL .........................................................................................677

Μέθοδοι της αφηρημένης τάξης URLConnection...............................................677

Μέθοδοι της τάξης Thread...................................................................................677

Μέθοδοι της τάξης ThreadGroup ........................................................................678

Μέθοδοι της τάξης Object...................................................................................679

Μέθοδοι της αφηρημένης τάξης Provider .........................................................679

Μέθοδοι της διεπαφής Principal.......................................................................679

Μέθοδοι της τάξης PrincipalImpl....................................................................679

Μέθοδοι της διεπαφής Group ...............................................................................679

Μέθοδοι της τάξης GroupImpl ............................................................................680

Μέθοδοι της τάξης PermissionImpl .................................................................680

Μέθοδοι της διεπαφής AclEntry.........................................................................680

Μέθοδοι της τάξης AclEntryImpl......................................................................680

Μέθοδοι της διεπαφής Owner ...............................................................................680

Μέθοδοι της τάξης OwnerImpl ............................................................................680

Μέθοδοι της διεπαφής Acl ...................................................................................681

Μέθοδοι της τάξης AclImpl ................................................................................681

Μέθοδοι της αφηρημένης τάξης MessageDigest...............................................681

Μέθοδοι της διεπαφής Key ...................................................................................682

Μέθοδοι της τάξης KeyGenerator......................................................................682

Μέθοδοι της τάξης KeyPair ................................................................................682

Μέθοδοι της αφηρημένης τάξης KeyPairGenerator ........................................683

Μέθοδοι της τάξης Cipher...................................................................................683

Μέθοδοι της αφηρημένης τάξης Signature .......................................................684

Μέθοδοι της αφηρημένης τάξης Certificate ...................................................684

Μέθοδοι της τάξης KeyStore ..............................................................................685

Μέθοδοι της τάξης UnicastRemoteObject.......................................................686

Μέθοδοι της διεπαφής Registry.........................................................................686

Μέθοδοι της τάξης LocateRegistry .................................................................686

Μέθοδοι της τάξης Naming...................................................................................686

Βιβλιογραφία ................................................................................ 689

Ευρετήριο...................................................................................... 691

Page 13: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

21

ΚΕΦΑΛΑΙΟ 1

Εισαγωγή

1.1. Συστήματα πολλών επεξεργαστών

Ένα κατανεμημένο σύστημα είναι ένα σύνολο ετερογενών υπολογιστών οι οποίοι

συνδέονται μέσω ενός δικτύου, με στόχο την από κοινού παροχή υπηρεσιών στους

χρήστες του συστήματος. Η εξέλιξη των κατανεμημένων συστημάτων επηρεάζεται

από την εξέλιξη της τεχνολογίας των υπολογιστών και των δικτύων, αλλά και από

τις μεταβαλλόμενες ανάγκες των χρηστών τους.

Από τεχνολογικής πλευράς, οι εξελίξεις στο χώρο των υπολογιστών (βλ. και

Τόμο I, Κεφ. 0) έχουν επιτρέψει τη μαζική παραγωγή πολύ οικονομικών μικροεπε-

ξεργαστών, οι οποίοι αποτελούν τις Κεντρικές Μονάδες Επεξεργασίας, ΚΜΕ (Cen-

tral Processing Units, CPUs) των σύγχρονων μικροϋπολογιστών. Από τη δεκαετία

του 1980, οι περισσότεροι χρήστες έχουν το δικό τους προσωπικό υπολογιστή (per-

sonal computer) ή σταθμό εργασίας (workstation), χωρίς να χρειάζεται πια να μοι-

ράζονται ένα μεγάλο υπολογιστικό σύστημα με άλλους χρήστες.

Όμως, σημαντικές τεχνολογικές εξελίξεις έχουν σημειωθεί και στα δίκτυα υπο-

λογιστών, τα οποία επιτρέπουν την οικονομική σύνδεση δεκάδων, εκατοντάδων ή

και εκατομμυρίων συστημάτων με τέτοιο τρόπο, ώστε τα συνδεδεμένα συστήματα

να ανταλλάσσουν μεγάλο όγκο πληροφοριών σε μικρό χρονικό διάστημα. Έτσι,

παρότι κάθε χρήστης έχει το δικό του σταθμό εργασίας, ο σταθμός αυτός μπορεί

να επικοινωνήσει εύκολα και γρήγορα με οποιονδήποτε άλλον.

Η δυνατότητα εύκολης και οικονομικής σύνδεσης πολλών προσωπικών υπολο-

γιστών μέσω τοπικών δικτύων και δικτύων ευρείας περιοχής έχει δώσει ώθηση στη

σχεδίαση υπολογιστικών συστημάτων πολλών επεξεργαστών, τα οποία ονομάζο-

νται κατανεμημένα συστήματα (distributed systems), σε αντιδιαστολή με τα

Page 14: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

παραδοσιακά συγκεντρωτικά συστήματα (centralized systems) ενός επεξεργα-

στή. Στην πράξη, ο όρος κατανεμημένο σύστημα είναι πιο εξειδικευμένος: Κατα-

νεμημένο σύστημα ονομάζουμε κάθε υπολογιστικό σύστημα το οποίο αποτελείται

από ανεξάρτητους υπολογιστές και το οποίο παρουσιάζει στους χρήστες του την

εικόνα ενός ενιαίου συστήματος. Το ενδιαφέρον για τα συστήματα αυτά οφείλεται

στο ότι μπορούν να κατασκευαστούν με βάση απλούς (συγκεντρωτικούς ή μη) υ-

πολογιστές και στο ότι, εκτός από αυξημένη επίδοση, επιτρέπουν και τον (κα-

τα)μερισμό των πόρων των ανεξάρτητων συστημάτων από τα οποία αποτελούνται.

Αφού τα κατανεμημένα συστήματα είναι μια ειδική περίπτωση των συστημά-

των πολλών επεξεργαστών, θα εξετάσουμε αρχικά τα συστήματα πολλών επεξερ-

γαστών για να δούμε τις ομοιότητες και τις διαφορές μεταξύ τους. Η πιο προφανής

σχεδιαστική προσέγγιση για τα συστήματα πολλών επεξεργαστών είναι αυτή των

πολυεπεξεργαστών (multiprocessors). Όπως φαίνεται στο Σχήμα 1.1, στους πο-

λυεπεξεργαστές πολλοί (συνήθως πανομοιότυποι) επεξεργαστές μοιράζονται την

ίδια κύρια μνήμη, δηλαδή έχουμε κατανομή μόνο της επεξεργασίας (βλ. Τόμο I,

Κεφ. 4.11). Για να είναι αποδοτικός ο καταμερισμός της κύριας μνήμης, οι επεξερ-

γαστές και η μνήμη πρέπει να συνδέονται μέσω ενός δικτύου ή μιας λεωφόρου1

πολύ υψηλής ταχύτητας και να βρίσκονται πολύ κοντά μεταξύ τους, αν γίνεται στο

ίδιο κουτί, για ελαχιστοποίηση των καθυστερήσεων.

Αν και οι πολυεπεξεργαστές είναι πολύ χρήσιμοι για εφαρμογές οι οποίες μπο-

ρούν να διασπαστούν εύκολα σε παράλληλες διεργασίες ή για να εκτελούν χρέη

Επεξεργαστής 1 Επεξεργαστής 2 Επεξεργαστής 3

Λεωφόρος Συστήματος

Κοινή μνήμη

Σχήμα 1.1. Δομή ενός πολυεπεξεργαστή.

1

Σ.τ.Ε.: Στην ελληνική βιβλιογραφία, ο όρος bus αναφέρεται και ως δίαυλος.

Page 15: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Κεφάλαιο 1: Εισαγωγή 23

εξυπηρετητών2

, στην πράξη αποδεικνύεται ότι είναι δύσκολο να αυξήσουμε πολύ

το πλήθος των επεξεργαστών, χωρίς να αντιμετωπίσουμε προβλήματα επίδοσης τα

οποία απαιτούν εξειδικευμένο υλισμικό3

για την επίλυσή τους, πράγμα που ανεβά-

ζει το κόστος τους. Μιας και στα συστήματα πολυεπεξεργαστών οι μηχανές (ή

μάλλον οι επεξεργαστές) δεν είναι ανεξάρτητες (ανεξάρτητοι), ένας μόνο πολυεπε-

ξεργαστής δεν μπορεί να αποτελεί κατανεμημένο σύστημα, ανεξάρτητα από το

λογισμικό που χρησιμοποιεί.

Μια πιο σύνθετη προσέγγιση είναι η σύνδεση αυτόνομων υπολογιστών, δηλαδή

επεξεργαστών με ιδιωτική κύρια μνήμη, οι οποίοι μπορούν να λειτουργήσουν και

αυτόνομα, όπως φαίνεται στο Σχήμα 1.2. Τα συστήματα αυτά, γνωστά και ως πο-

λυ-υπολογιστές (multicomputers), αποτελούνται από απλούς σταθμούς εργασίας

συνδεδεμένων μέσω δικτύου, με αποτέλεσμα να έχουν χαμηλό κόστος αφού δεν

απαιτούν εξειδικευμένο υλισμικό. Στην απλούστερη περίπτωση, όλες οι μηχανές

είναι πανομοιότυπες, δηλαδή το σύστημα είναι ομοιογενές (homogeneous), ενώ

στην πιο σύνθετη περίπτωση οι μηχανές διαφέρουν, οπότε το σύστημα είναι ετε-

ρογενές (heterogeneous). Στα ομοιογενή συστήματα μπορούμε να έχουμε το ίδιο

ακριβώς λειτουργικό σύστημα σε κάθε μηχανή, ενώ στα ετερογενή συστήματα τα

λειτουργικά συστήματα μπορεί να διαφέρουν σημαντικά. Τα ετερογενή συστήματα

παρουσιάζουν μεγαλύτερο ενδιαφέρον αφού μπορούν να κατασκευαστούν χρησι-

μοποιώντας οποιονδήποτε διαθέσιμο εξοπλισμό. Και οι δύο κατηγορίες πολυ-

Επεξεργαστής 1 Επεξεργαστής 2 Επεξεργαστής 3

Δίκτυο

Μνήμη 1 Μνήμη 2 Μνήμη 3

Σχήμα 1.2. Δομή ενός πολυ-υπολογιστή.

2

Σ.τ.Ε.: Στην ελληνική βιβλιογραφία, ο όρος server αναφέρεται και ως διακομιστής. 3

Σ.τ.Ε.: Στην ελληνική βιβλιογραφία, ο όρος hardware αναφέρεται και ως υλικό.

Page 16: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

Επεξεργαστής 1Επεξεργαστής 1

Πυρήνας 1 Πυρήνας 2

Δίκτυο

Κοινή μνήμη

Λεωφόρος Συστήματος Λεωφόρος Συστήματος

Κοινή μνήμη

Πυρήνας 1 Πυρήνας 2

Σχήμα 1.3. Δομή ενός υβριδικού πολυ-υπολογιστή.

υπολογιστών μπορούν να αποτελούν κατανεμημένα συστήματα, αν χρησιμοποιούν

το κατάλληλο λογισμικό.

Από τα μέσα της δεκαετίας του 2000 κυριαρχούν οι πολυπύρηνοι επεξεργα-

στές (multicore processors), οι οποίοι συνδυάζουν πολλούς πυρήνες επεξεργασί-

ας στο ίδιο ολοκληρωμένο κύκλωμα. Μια αυτόνομη μηχανή που βασίζεται σε πο-

λυπύρηνο επεξεργαστή είναι ένας πολυεπεξεργαστής, αλλά όταν συνδέεται μέσω

δικτύου με άλλες αυτόνομες μηχανές, όπως φαίνεται στο Σχήμα 1.3, μπορεί να

αποτελεί μέρος ενός υβριδικού πολυ-υπολογιστή (hybrid multicomputer). Γενι-

κότερα, σε ένα ετερογενές κατανεμημένο σύστημα μπορούν να συνδυάζονται μη-

χανές με απλούς επεξεργαστές, πολυπύρηνους πολυεπεξεργαστές και (κλασικούς)

πολυεπεξεργαστές.

1.1.1. Λειτουργικά συστήματα πολυεπεξεργαστών

Τα Λειτουργικά Συστήματα Πολυεπεξεργαστών, ΛΣΠ (Multiprocessor Oper-

ating Systems, MOS) χρησιμοποιούνται στους πολυεπεξεργαστές με κοινή κύρια

μνήμη. Οι χρήστες των συστημάτων αυτών βλέπουν μόνο ένα λειτουργικό σύστη-

μα, το οποίο μπορεί να χρησιμοποιηθεί είτε για τη λύση ενός προβλήματος με πα-

ράλληλο τρόπο είτε για την ταυτόχρονη εκτέλεση προγραμμάτων πολλών χρη-

Page 17: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Κεφάλαιο 1: Εισαγωγή 25

στών. Σε ένα ΛΣΠ υπάρχει μόνο ένας εικονικός χώρος διευθύνσεων, ο οποίος κα-

ταμερίζεται μεταξύ των διαφόρων επεξεργαστών του συστήματος, και έναν κοινό

χρονιστή, δηλαδή όλοι οι επεξεργαστές έχουν κοινή αντίληψη του χρόνου.

Τα ΛΣΠ δεν διαφέρουν πολύ από τα κλασικά λειτουργικά συστήματα ενός επε-

ξεργαστή. Όλα τα σύγχρονα λειτουργικά συστήματα υποστηρίζουν συμμετρική

πολυεπεξεργασία (symmetric multiprocessing, SMP), προκειμένου να μπορούν

να αξιοποιούν τους πολυπύρηνους επεξεργαστές, ενώ τα περισσότερα συστήματα

υποστηρίζουν και (κλασικούς) πολυεπεξεργαστές. Ο αμοιβαίος αποκλεισμός των

κρίσιμων περιοχών των διεργασιών που εκτελούνται ταυτόχρονα σε διαφορετικούς

επεξεργαστές μπορεί να επιτευχθεί με τη χρήση ειδικών εντολών του υλισμικού

που συγχρονίζουν την πρόσβαση σε καταμεριζόμενες δομές δεδομένων στην κοινή

μνήμη (βλ. Τόμο II, Κεφ. 5.9.2).

Το βασικό χαρακτηριστικό των ΛΣΠ είναι μια κεντρική λίστα έτοιμων διεργα-

σιών (λίστα διανομέα) (βλ. Τόμο II, Κεφ. 5.13) που είναι αποθηκευμένη στην κοι-

νή μνήμη. Ο μόνος παράγοντας που μπορεί να επηρεάσει την επιλογή μιας ΚΜΕ

για την εκτέλεση μιας διεργασίας από τη λίστα αυτή είναι η μικρή ελάττωση της

καθυστέρησης, αν η συγκεκριμένη ΚΜΕ περιέχει ήδη στην κρυφή μνήμη της μέ-

ρος του χώρου διευθύνσεων της υπό διανομή διεργασίας.

Σε μερικά ΛΣΠ, μία από τις ΚΜΕ αφιερώνεται στην εκτέλεση του πυρήνα και

των διεργασιών του λειτουργικού συστήματος, ενώ οι υπόλοιπες ασχολούνται με

τις διεργασίες των χρηστών, με αποτέλεσμα η συγκεκριμένη ΚΜΕ να καταλήγει

να αποτελεί σημείο συνωστισμού ή συμφόρησης (bottleneck). Το δίκτυο σύνδεσης

των επεξεργαστών μπορεί επίσης να καταλήξει σε σημείο συνωστισμού, ειδικά

στην περίπτωση που οι επεξεργαστές συνδέονται μέσω μιας κοινής λεωφόρου. Για

το λόγο αυτόν, πολλά συστήματα πολυεπεξεργαστών χρησιμοποιούν κρυφές μνή-

μες (βλ. Τόμο I, Κεφ. 1.1.10) μεταξύ των επεξεργαστών και της κύριας μνήμης.

Όλες οι αιτήσεις για προσπέλαση λέξεων της κύριας μνήμης γίνονται μέσω των

κρυφών μνημών. Αν η απαιτούμενη από έναν επεξεργαστή λέξη βρίσκεται ήδη

στην κρυφή του μνήμη, τότε αποφεύγεται η μεταφορά της μέσω του δικτύου σύν-

δεσης.

Η προσθήκη ιδιωτικών κρυφών μνημών σε κάθε επεξεργαστή εισάγει το εξής

πρόβλημα: Αν δύο επεξεργαστές περιέχουν στις κρυφές τους μνήμες την ίδια λέξη

και ένας από αυτούς τροποποιήσει τα περιεχόμενά της, τότε, αν ο δεύτερος επιχει-

ρήσει αργότερα να την αναγνώσει, θα ανακαλέσει τα παλιά της περιεχόμενα (βλ.

Τόμο I, Κεφ. 4.11.1). Σε αυτή την περίπτωση, οι μνήμες είναι μη συνεκτικές (in-

Page 18: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

coherent) και τα προγράμματα θα δώσουν λανθασμένα αποτελέσματα. Μία λύση

στο πρόβλημα αυτό είναι οι κρυφές μνήμες να σχεδιάζονται με τέτοιο τρόπο ώστε

κάθε φορά που μια λέξη γράφεται σε αυτές, αυτή η λέξη να αποθηκεύεται και στην

κύρια μνήμη. Τέτοιες κρυφές μνήμες προξενούν κυκλοφορία δεδομένων στο δί-

κτυο όχι μόνο στις αποτυχίες ανάγνωσης λέξεων, αλλά σε όλες τις εγγραφές λέξε-

ων, ακόμα και στις επιτυχείς. Επιπλέον, οι ελεγκτές των μνημών αυτών παρακο-

λουθούν συνέχεια το δίκτυο σύνδεσης. Όταν ένας ελεγκτής διαπιστώσει ότι γίνεται

εγγραφή σε μια λέξη της κύριας μνήμης που βρίσκεται στη δική του κρυφή μνήμη,

είτε διαγράφει αυτή τη λέξη από την κρυφή μνήμη του είτε αντικαθιστά απλά τα

περιεχόμενα της λέξης στην κρυφή του μνήμη με τα νέα περιεχόμενα της λέξης

από την κύρια μνήμη. Ένα σύστημα πολυεπεξεργαστών που χρησιμοποιεί τέτοιου

είδους κρυφές μνήμες ονομάζεται συνεκτικό (coherent).

1.1.2. Λειτουργικά συστήματα δικτύων

Τα Λειτουργικά Συστήματα Δικτύων, ΛΣΔ (!etwork Operating Systems,

!OS) χρησιμοποιούνται σε ετερογενή και ομοιογενή συστήματα πολυ-

υπολογιστών και δίνουν στους χρήστες τη δυνατότητα να χρησιμοποιούν πόρους

που διατίθενται από άλλους υπολογιστές του δικτύου, χωρίς όμως να κρύβουν ότι

οι πόροι αυτοί δεν είναι τοπικοί. Για παράδειγμα, σε ένα ΛΣΔ οι χρήστες μπορούν

να αντιγράφουν αρχεία μεταξύ διαφορετικών μηχανών, να εκτελούν εντολές σε

απομακρυσμένες μηχανές ή να συνδέονται σε απομακρυσμένες μηχανές χρησιμο-

ποιώντας το τοπικό τους σύστημα σαν τερματικό.

Το λειτουργικό σύστημα κάθε μηχανής του δικτύου είναι ουσιαστικά ίδιο με

ένα λειτουργικό σύστημα ενός επεξεργαστή, με ορισμένες προσθήκες για την υλο-

ποίηση των δικτυακών υπηρεσιών. Οι μηχανές μπορεί να διαθέτουν είτε όλες το

ίδιο λειτουργικό σύστημα είτε διαφορετικά λειτουργικά συστήματα, αρκεί να συμ-

φωνούν στο μορφότυπο (format) και στη σημασία των μηνυμάτων που μπορούν να

ανταλλάξουν. Οι προσθήκες αυτές δεν αλλάζουν τη βασική δομή του λειτουργικού

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

πόρους της και τους διαθέτει μέσω δικτύου κατόπιν ρητών αιτήσεων από απομα-

κρυσμένους χρήστες.

Στην πραγματικότητα, το ΛΣΔ καθιστά ιδιαίτερα εμφανές το ότι το σύστημα

αποτελείται από ανεξάρτητους υπολογιστές. Για παράδειγμα, κάθε μηχανή έχει το

δικό της σύστημα αρχείων, οπότε οι χρήστες όχι μόνο πρέπει να ορίζουν ρητά τις

μηχανές ανάμεσα στις οποίες θέλουν να αντιγράψουν ένα αρχείο, αλλά θα πρέπει

Page 19: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Κεφάλαιο 1: Εισαγωγή 27

να γνωρίζουν και τη δομή του συστήματος αρχείων κάθε μηχανής. Αυτό σημαίνει

ότι η θέση των αρχείων δεν είναι διαφανής (transparent) στους χρήστες, με την

έννοια ότι οι χρήστες πρέπει να γνωρίζουν πού ακριβώς (μηχανή και διαδρομή)

βρίσκονται τα αρχεία που τους ενδιαφέρουν.

Για να αυξηθεί η ευελιξία των ΛΣΔ, πολλά τέτοια συστήματα παρέχουν ένα

καταμεριζόμενο καθολικό σύστημα αρχείων το οποίο υποστηρίζεται από μία ή

περισσότερες μηχανές, γνωστές ως εξυπηρετητές αρχείων (file servers). Οι υπό-

λοιπες μηχανές, γνωστές ως πελάτες (clients), μπορεί να υποστηρίζουν και τα δικά

τους τοπικά συστήματα αρχείων, αν έχουν τοπικούς δίσκους. Όλα τα αρχεία που

μπορούν να καταμεριστούν βρίσκονται αποθηκευμένα στους εξυπηρετητές, με α-

ποτέλεσμα η θέση κάθε αρχείου να είναι διαφανής στους χρήστες οι οποίοι προ-

σπελάζουν τα απομακρυσμένα αρχεία με τον ίδιο τρόπο που προσπελάζουν τα το-

πικά. Ανάλογα με το σύστημα, κάθε πελάτης μπορεί να έχει είτε την ίδια εικόνα

του συστήματος αρχείων είτε διαφορετική εικόνα. Τα κατανεμημένα συστήματα

αρχείων είναι ουσιαστικά το πρώτο βήμα των ΛΣΔ προς την κατεύθυνση της πα-

ρουσίασης της εικόνας ενός ενιαίου συστήματος.

1.1.3. Κατανεμημένα λειτουργικά συστήματα

Τα Κατανεμημένα Λειτουργικά Συστήματα, ΚΛΣ (Distributed Operating Sys-

tems, DOS) χρησιμοποιούνται σε ομοιογενή συστήματα πολυ-υπολογιστών. Αν

και ένα ΚΛΣ εκτελείται σε μηχανές χωρίς κοινή μνήμη ή κοινό χρονιστή, παρέχει

στους χρήστες την εικόνα ενός μόνο συστήματος, όπως φαίνεται στο Σχήμα 1.4. Οι

χρήστες του δεν χρειάζεται να γνωρίζουν αν υπάρχουν περισσότεροι του ενός επε-

ξεργαστές, σε ποιους επεξεργαστές εκτελούνται οι διεργασίες τους ή πού βρίσκο-

νται αποθηκευμένα τα αρχεία τους. Έτσι λοιπόν, σε αντίθεση με τα ΛΣΠ και τα

ΛΣΔ, τα ΚΛΣ είναι πραγματικά κατανεμημένα συστήματα.

Τα ΚΛΣ διαφέρουν σημαντικά από τα συστήματα ενός επεξεργαστή. Για παρά-

δειγμα, μπορούν να επιτρέπουν σε διάφορες διεργασίες να εκτελούνται σε διαφο-

ρετικούς επεξεργαστές, με αποτέλεσμα να απαιτούν σύνθετους αλγόριθμους χρο-

νοπρογραμματισμού για βελτιστοποίηση της επίδοσης. Η επικοινωνία των μηχα-

νών μέσω του δικτύου οδηγεί σε καθυστερήσεις, με αποτέλεσμα οι κατανεμημένοι

αλγόριθμοι να εκτελούνται συχνά με μη πλήρεις, απαρχαιωμένες ή ακόμα και λαν-

θασμένες πληροφορίες. Η εικόνα αυτή διαφέρει ριζικά από εκείνη του λειτουργι-

κού συστήματος ενός επεξεργαστή, το οποίο έχει στη διάθεσή του σε κάθε χρονική

στιγμή πλήρεις και ακριβείς πληροφορίες για την κατάσταση του συστήματος.

Page 20: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

Επεξεργαστής 1 Επεξεργαστής 2 Επεξεργαστής 3

Δίκτυο

Εφαρμογή Εφαρμογή Εφαρμογή

ΚΛΣ

Σχήμα 1.4. Κατανεμημένο Λειτουργικό Σύστημα.

Για να παρέχεται η εικόνα ενός ενιαίου συστήματος, το ΚΛΣ πρέπει να παρέχει

ακριβώς τις ίδιες κλήσεις του πυρήνα σε όλες τις μηχανές και να υποστηρίζει τους

ίδιους μηχανισμούς επικοινωνίας διεργασιών σε όλους τους επεξεργαστές του συ-

στήματος, ανεξάρτητα από το αν οι διεργασίες εκτελούνται στην ίδια ή σε διαφο-

ρετικές μηχανές. Επίσης, πρέπει να παρέχει μια καθολική εικόνα όλων των πόρων

του, για παράδειγμα ένα και μοναδικό καθολικό σύστημα αρχείων, καθώς και ένα

και μοναδικό καθολικό μηχανισμό προστασίας.

Για να ικανοποιούνται οι παραπάνω απαιτήσεις, οι πυρήνες που εκτελούνται σε

όλες τις μηχανές του συστήματος πρέπει να παρέχουν ακριβώς την ίδια διεπαφή

(interface) κλήσεων του συστήματος και να συντονίζονται για ορισμένες εργασίες.

Για παράδειγμα, όταν μια διεργασία χρειάζεται να αρχίσει την εκτέλεσή της, όλοι οι

πυρήνες πρέπει να συνεργαστούν προκειμένου να βρεθεί ο καταλληλότερος επε-

ξεργαστής για να την εκτελέσει. Παρόλα αυτά, κάθε πυρήνας μπορεί να ασκεί ση-

μαντικό έλεγχο στους δικούς του πόρους. Για παράδειγμα, εφόσον δεν υπάρχει κοι-

νή μνήμη, είναι λογικό κάθε πυρήνας να διαχειρίζεται τη δική του φυσική μνήμη,

δηλαδή να αποφασίζει ποια τεμάχια θα αντικαταστήσει, πότε και ποια θα προσκο-

μίσει στη μνήμη και πού ακριβώς θα τα τοποθετήσει (βλ. Τόμο II, Κεφ. 8).

1.1.4. Ενδιάμεσο λογισμικό κατανεμημένων συστημάτων

Αν και τα ΚΛΣ παρέχουν την εικόνα ενός ενιαίου συστήματος που αποτελείται

από ανεξάρτητους υπολογιστές, οι προσπάθειες ανάπτυξης ΚΛΣ κατά τη δεκαετία

του 1990 είχαν περιορισμένη επιτυχία, σε αντίθεση με την τεράστια επιτυχία των

Page 21: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Κεφάλαιο 1: Εισαγωγή 29

ΛΣΔ που ουσιαστικά αντικατέστησαν πλήρως τα απλά λειτουργικά συστήματα

ενός επεξεργαστή μέσα στην ίδια δεκαετία. Για παράδειγμα, όλα τα σύγχρονα λει-

τουργικά συστήματα έχουν δυνατότητες καταμερισμού αρχείων και εκτυπωτών,

δηλαδή καλύπτουν τη βασική λειτουργικότητα των παλιότερων ΛΣΔ.

Οι λόγοι της περιορισμένης επιτυχίας των ΚΛΣ σε σχέση με τα ΛΣΔ είναι πολ-

λοί. Αρχικά, η απαίτηση το σύστημα να είναι ομοιογενές σημαίνει ότι χρειαζόμα-

στε πολλές πανομοιότυπες μηχανές, σε αντίθεση με τα ΛΣΔ που λειτουργούν με

οποιοδήποτε διαθέσιμο υλισμικό. Ιδιαίτερα προβληματική είναι η απαίτηση όλες

οι μηχανές να εκτελούν το ίδιο λειτουργικό σύστημα, το οποίο σε πολλές περιπτώ-

σεις μπορεί να μη συμβαδίζει με τις ανάγκες ή τις προτιμήσεις των χρηστών. Αντί-

θετα, ένα ΛΣΔ απαιτεί μόνο προσθήκες σε υπάρχοντα λειτουργικά συστήματα,

κάτι που διευκολύνει την αποδοχή του.

Ένα άλλο πρόβλημα είναι ότι το ΚΛΣ απαιτεί από τους χρήστες να παραδώ-

σουν κατά ένα μέρος τον έλεγχο των μηχανών τους σε αυτό, με αποτέλεσμα να

χάνουν την αυτονομία τους και πιθανόν και την ασφάλειά τους. Σε ένα σύστημα

πολυ-υπολογιστή ειδικά κατασκευασμένο για την εκτέλεση απαιτητικών εφαρμο-

γών, η δυνατότητα να χρησιμοποιούνται όλοι οι πόροι χωρίς περιορισμούς είναι

απαραίτητη. Όμως, σε ένα τοπικό δίκτυο με σταθμούς εργασίας, οι χρήστες διστά-

ζουν να επιτρέψουν σε οποιονδήποτε χρήστη να χρησιμοποιεί τους πόρους τους σε

βάρος της επίδοσης των δικών τους εφαρμογών.

Παρότι οι περισσότεροι χρήστες μπορεί να μην ενδιαφέρονται για ένα πλήρως

κατανεμημένο σύστημα, ειδικά αν αυτό απαιτεί να θυσιάσουν την αυτονομία τους,

συχνά ενδιαφέρονται για συγκεκριμένες εφαρμογές που απαιτούν κατανεμημένη

επεξεργασία. Για παράδειγμα, τα κατανεμημένα συστήματα αρχείων, τα οποία α-

ντιπροσωπεύουν ένα πραγματικά κατανεμημένο μοντέλο εργασίας, είναι μέρος

όλων των σύγχρονων λειτουργικών συστημάτων. Ο λόγος είναι ότι καλύπτουν

πραγματικές ανάγκες: εύκολη ανταλλαγή αρχείων, προσπέλαση αρχείων από ο-

ποιονδήποτε σταθμό εργασίας και αυξημένη αξιοπιστία λόγω χρήσης ειδικού υλι-

σμικού για τους εξυπηρετητές.

Τα κατανεμημένα συστήματα αρχείων προκύπτουν από ΛΣΔ με την προσθήκη

ενός επιπέδου ενδιάμεσου λογισμικού (middleware) το οποίο αξιοποιεί τις βασι-

κές υπηρεσίες ενός ΛΣΔ για να παρέχει υποστήριξη σε κατανεμημένες εφαρμογές.

Τέτοιο ακριβώς ενδιάμεσο λογισμικό είναι η βάση των σύγχρονων κατανεμημένων

συστημάτων. Όπως φαίνεται στο Σχήμα 1.5, το ενδιάμεσο λογισμικό εκτελείται

επάνω από το ΛΣΔ κάθε μηχανής και έτσι παρέχει μια σειρά από υπηρεσίες υψη-

Page 22: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

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

λού επιπέδου στις κατανεμημένες εφαρμογές. Ο βασικός έλεγχος κάθε μηχανής

γίνεται από το τοπικό ΛΣΔ, προκειμένου κάθε μηχανή να έχει την αυτονομία της.

Οι μηχανές μπορεί να είναι ετερογενείς και από πλευράς υλισμικού και από πλευ-

ράς λογισμικού, αρκεί να υποστηρίζουν ένα βασικό σύνολο υπηρεσιών που απαι-

τούνται από το ενδιάμεσο λογισμικό.

Το ενδιάμεσο λογισμικό, αντί να παρέχει μια ολοκληρωμένη εικόνα ενός ενιαί-

ου συστήματος, παρέχει ένα περιορισμένο μοντέλο κατανεμημένης επεξεργασίας

κατάλληλο για συγκεκριμένες εφαρμογές. Για παράδειγμα, ένα απλό μοντέλο είναι

οι κλήσεις απομακρυσμένων διαδικασιών (remote procedure calls, RPC), με

τις οποίες μια διεργασία σε μία μηχανή μπορεί να καλεί μια διαδικασία σε μια α-

πομακρυσμένη μηχανή με τον ίδιο ακριβώς τρόπο που θα καλούσε μια τοπική δια-

δικασία. Στο μοντέλο αυτό, το ενδιάμεσο λογισμικό αποκρύπτει πού βρίσκεται

κάθε διαδικασία, αλλά δεν κατανέμει τις διαδικασίες στους διαθέσιμους επεξεργα-

στές. Επέκταση της προσέγγισης αυτής είναι η κλήση απομακρυσμένων μεθόδων

(remote method invocation, RMI) στην οποία η κλήση των μεθόδων ενός απο-

μακρυσμένου αντικειμένου δεν διαφέρει από την κλήση των μεθόδων ενός τοπικού

αντικειμένου. Και σε αυτή την περίπτωση η κατανομή των αντικειμένων σε μηχα-

νές δεν καθορίζεται από το ενδιάμεσο λογισμικό που υποστηρίζει τις απομακρυ-

σμένες κλήσεις.

Οι ακριβείς υπηρεσίες που παρέχονται από το ενδιάμεσο λογισμικό εξαρτώνται

από το μοντέλο κατανεμημένης επεξεργασίας που υποστηρίζει και το βαθμό στον

Επεξεργαστής 1 Επεξεργαστής 2 Επεξεργαστής 3

Δίκτυο

Εφαρμογή Εφαρμογή Εφαρμογή

Ενδιάμεσο Λογισμικό

ΛΣ 1 ΛΣ 2 ΛΣ 3

Σχήμα 1.5. Ενδιάμεσο λογισμικό κατανεμημένου συστήματος.

Page 23: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449

Κεφάλαιο 1: Εισαγωγή 31

οποίο προσπαθεί να προσεγγίσει την εικόνα ενός ενιαίου συστήματος. Σε γενικές

γραμμές, το ενδιάμεσο λογισμικό πρέπει να παρέχει υπηρεσίες επικοινωνίας υψη-

λού επιπέδου, όπως κλήση απομακρυσμένων μεθόδων, υπηρεσίες ονομασίας οι

οποίες θα υποστηρίζουν έναν κοινό χώρο ονομάτων για τους πόρους ολόκληρου

του συστήματος και υπηρεσίες ασφάλειας, προκειμένου να περιφρουρούνται οι

πόροι κάθε μηχανής. Άλλες υπηρεσίες που μπορεί να παρέχονται, αν απαιτούνται,

είναι υπηρεσίες συγχρονισμού διεργασιών, υπηρεσίες κλειδώματος πόρων και υ-

πηρεσίες κατανεμημένων συναλλαγών.

1.2. Στόχοι κατανεμημένων συστημάτων

Οι υπηρεσίες που παρέχουν τα κατανεμημένα συστήματα είναι παρόμοιες με αυτές

που παρέχονται από τα ΛΣΔ, αλλά υποστηρίζουν ένα υψηλότερο επίπεδο αφαίρε-

σης προκειμένου να διευκολύνουν τον προγραμματισμό κατανεμημένων εφαρμο-

γών. Ο βασικός στόχος των υπηρεσιών αυτών είναι η σύνδεση των χρηστών με

τους διαθέσιμους πόρους, οπουδήποτε και αν βρίσκονται αυτοί στο σύστημα. Σε

ορισμένες περιπτώσεις, η σύνδεση αυτή έχει οικονομικά οφέλη· για παράδειγμα,

όταν ένας ακριβός εκτυπωτής διατίθεται σε ένα ολόκληρο τμήμα ή ένας υπερυπο-

λογιστής διατίθεται για απομακρυσμένη εκτέλεση εφαρμογών. Σε άλλες περιπτώ-

σεις, η σύνδεση χρησιμεύει για την ανάπτυξη εφαρμογών που διευκολύνουν τη

συνεργασία των χρηστών για την επίτευξη ενός κοινού στόχου· για παράδειγμα,

για τη συγγραφή μιας έκθεσης από πολλά άτομα ή την επεξεργασία μιας παραγγε-

λίας από μια σειρά τμημάτων μιας επιχείρησης.

Για να παρέχονται οι υπηρεσίες αυτές με ομοιογενή τρόπο, το κατανεμημένο

σύστημα πρέπει να δίνει στον προγραμματιστή και το χρήστη την εικόνα ενός ε-

νιαίου συστήματος, τουλάχιστον στο βαθμό που κάτι τέτοιο απαιτείται από τις ε-

φαρμογές. Έτσι, ανεξάρτητα από το μοντέλο κατανεμημένης επεξεργασίας που

υποστηρίζει ένα κατανεμημένο σύστημα, υπάρχουν ορισμένες αρχές σχεδίασης

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

• Ευελιξία (flexibility), δηλαδή ευκολία αλλαγής ή επέκτασης του συστή-

ματος από τους σχεδιαστές ή τους προγραμματιστές του. Είναι φανερό ότι

ένα σύστημα με μονολιθικό πυρήνα είναι λιγότερο ευέλικτο από ένα

στρωματοποιημένο σύστημα που διαθέτει έναν ελάχιστο πυρήνα (βλ. Τόμο

II, Κεφ. 4.2). Η χρήση ενδιάμεσου λογισμικού για την κατασκευή κατανε-

μημένων συστημάτων είναι μία κοινή τεχνική αύξησης της ευελιξίας.

Page 24: ΠΑΡΑΡΤΗΜΑ - Publicmedia.public.gr/Books-PDF/9789604614639-0659653.pdf · Περιεχόμενα 11 12.2. Υπηρεσίες ονομασίας.....449