Next              Up                Back                 Contents  

Επόμενο:5.1 Ατομικές Λειτουργίες Πάνω: Περιεχόμενα Πίσω: Ασκήσεις


 

Κεφάλαιο 5ο : Μοίρασμα Δεδομένων

 

 

Όταν οι παράλληλες διεργασίες έχουν πρόσβαση σε διαμοιραζόμενα δεδομένα, τότε είναι ιδιαίτερα σημαντικό οι λειτουργίες που πραγματοποιούνται πάνω σε αυτά τα δεδομένα να μην συγκρούονται μεταξύ τους, ως αποτέλεσμα του παραλληλισμού - κάθε λειτουργία που πραγματοποιείται από μια διεργασία πρέπει να διατηρεί την ακεραιότητά της άσχετα από τις λειτουργίες που πραγματοποιούνται από άλλες διεργασίες. Αυτό το κεφάλαιο περιγράφει ένα σημαντικό χαρακτηριστικό της Multi-Pascal που ονομάζεται κλείδωμα και βοηθάει στον συντονισμό του μοιράσματος τιμών δεδομένων και δομών δεδομένων από τις παράλληλες διεργασίες. Το κλείδωμα μπορεί να χρησιμοποιηθεί ως εγγύηση αποκλειστικής πρόσβασης σε διαμοιραζόμενα δεδομένα και της ακεραιότητας των παράλληλων λειτουργιών. Το κεφάλαιο αυτό περιγράφει τεχνικές που μπορούν να χρησιμοποιηθούν, έτσι ώστε το κλείδωμα να επιλύσει το κλασσικό πρόβλημα του αμοιβαίου αποκλεισμού όσον αφορά την παράλληλη πρόσβαση σε διαμοιραζόμενα δεδομένα.

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

Για τη δημιουργία μιας ατομικής λειτουργίας η βασική “απαίτηση” από τη γλώσσα προγραμματισμού είναι η ύπαρξη κάποιου μηχανισμού που θα έχει ως αποτέλεσμα την καθυστέρηση των υπολοίπων διεργασιών. Στην Multi-Pascal αυτή η καθυστέρηση μπορεί να επιτευχθεί με ένα κλείδωμα, που δημιουργεί μια ελεγχόμενη δίοδο από την οποία μπορεί να περάσει μόνο μια διεργασία κάθε χρονική στιγμή. Όταν μια διεργασία περάσει τη δίοδο, αυτή αυτόματα κλειδώνεται απαγορεύοντας έτσι την είσοδο άλλων διεργασιών. Όταν η διεργασία ολοκληρώσει την ατομική της λειτουργία αποχωρεί και η δίοδος ξεκλειδώνεται, επιτρέποντας έτσι ξανά την είσοδο στις υπόλοιπες διεργασίες. Το κλείδωμα αποτελεί συνηθισμένο χαρακτηριστικό και άλλων παράλληλων γλωσσών προγραμματισμού.

Ένα θέμα που προκύπτει από τις ατομικές λειτουργίες είναι ο ανταγωνισμός. Από τη φύση τους οι ατομικές λειτουργίες απαιτούν κάποιον βαθμό αποκλειστικής πρόσβασης στα στοιχεία των διαμοιραζόμενων δεδομένων. Με αυτόν τον τρόπο μια διεργασία που διενεργεί μια ατομική λειτουργία μπορεί να προκαλέσει την αναμονή πολλών άλλων διεργασιών. Έτσι, υπάρχει η πιθανότητα η αποκλειστική χρήση των διαμοιραζόμενων δεδομένων να προκαλέσει συμφόρηση. Το θέμα αυτό αναπτύσσεται εκτενώς στο κεφάλαιο και επίσης παρουσιάζεται μια γενική τεχνική για την ελαχιστοποίηση της συμφόρησης που είναι αποτέλεσμα των ατομικών λειτουργιών - πρόκειται για την αποκέντρωση του μηχανισμού πρόσβασης στα διαμοιραζόμενα δεδομένα. Με τον τρόπο αυτό μπορούν πολλές παράλληλες διεργασίες να έχουν πρόσβαση σε διαφορετικά τμήματα των διαμοιραζομένων δεδομένων και έτσι να μειωθεί ο χρόνος καθυστέρησης των διεργασιών.


 


     Next              Up                Back                 Contents  

Επόμενο:5.1 Ατομικές Λειτουργίες Πάνω: Περιεχόμενα Πίσω: Ασκήσεις