Κατανεμημένες εφαρμογές και ηλεκτρονικό εμπόριο -> Συγχρονικότητα

ΚΕΦΑΛΑΙΟ 12

Συχρονικότητα

1 Εισαγωγή
2 Συγχρονικότητα στην Java
   2.1 Υλοποίηση νημάτων στην Java
3 Νήματα και διαμοιραζόμενα αντικείμενα
   3.1 Κλείδωμα
   3.2 Χρήση wait και notify
   3.3 Ένας διακομιστής με νήματα
4 Κλειδώματα πελάτη καιδιακομιστή
   4.1 Κλείδωμα
   4.2 Αδιέξοδο
5 Κλείδωμα και διακομιστές βάσεων δεδομένων
6 Περαιτέρω διάβασμα
Αναφορές

Περιεχόμενα Κεφαλαίου

Η συγχρονικότητα αναφέρεται στην ταυτόχρονη εκτέλεση τμημάτων κώδικα. Χρησιμοποιείται για τη βελτίωση της απόδοσης ενός συστήματος. Στο κεφάλαιο αυτό αρχικά θα δούμε πως υλοποιείται η συγρονικότητα στην Java χρησιμοποιώντας ένα αντικείμενο που ονομάζεται νήμα. Περιγράφεται ο τρόπος δημιουργίας νημάτων και αναπτύσσονται και αρκετές από τις μεθόδους χειρισμού των νημάτων. Στη συνέχεια εξετάζεται το πρόβλημα του διαμοιρασμού δεδομένων και η χρήση των κλειδωμάτων. Το δεύτερο μισό του κεφαλαίου εξετάζει την συγχρονικότητα στα συστήματα πελάτη -διακομιστή και παρέχει μια εισαγωγή στη διαχείριση  κλειδωμάτων. Το κεφάλαιο κλείνει με μια περιγραφή των πιο σημαντικών χαρακτηριστικών συχρονικότητας στα μοντέρνα συστήματα διαχείρισης βάσεων δεδομένων. Το θέμα της συγχρονικότητας εισάγεται εδώ ώστε να παράσχει το απαραίτητο υπόβαθρο για το κεφάλαιο 14 όπου αναπτύσσεται ο σχεδιασμός κατανεμημένων συστημάτων.

Στόχοι κεφαλαίου

  1. Να περιγράψει πώς τα νήματα μπορούν να βελτιώσουν την απόδοση ενός κατανεμημένου συστήματος.
  2. Να δείξει πως υλοποιούνται τα νήματα στην Java.
  3. Να περιγράψει τις βασικές μεθόδους της κλάσης για δημιουργία νημάτων  της Java.
  4. Να δείξει πώς μπορούν να αντιμετωπιστούν προβλήματα που σχετίζονται με τη προσπέλαση δεδομένων από πολλά νήματα.
  5. Να αναλύσει τη διαχείριση του συγχρονικότητας σε ένα σύστημα πελάτη-διακομιστή.
  6. Να περιγράψει το ρόλο ενός διαχειριστή κλειδωμάτων.
  7. Να περιγράψει τις πιο σημαντικές λειτουργίες κλειδώματος που εμφανίζονται στα σύγχρονα συστήματα διαχείρισης βάσεων δεδομένων.

Έννοιες

Κυκλικός απομονωτής (Circular buffer), Αδιέξοδο (Deadlock), Αδιέξοδη εμπλοκή (Deadly embrace), Κλείδωμα (Locking), Διαχειριστής κλειδωμάτων (Lock manager), Προαγωγή κλειδωμάτων (Lock promotion), Σχήμα πολλαπλών αναγώσεων - απλής εγγραφής (Many-reader single-writer scheme), Προ-εκχωρητική  χρονοδρομολόγηση (Pre-emptive scheduling), Κλείδωμα διαβάσματος (Read lock), Χρονοδρομολογητής (Scheduler), Νήμα (Thread), Γράφημα αναμονής (Wait-for graph), Κλέιδωμα εγγραφής (Write lock).