Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης."— Μεταγράφημα παρουσίασης:

1 RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης

2 POSIX THREADS (pthreads) Η πιο διαδεδομένη έκδοση νημάτων standar στα περισσότερα συστήματα UNIX Διαθέτουν συναρτήσεις για τις βασικές threads λειτουργίες καθώς και δομές για αμοιβαίο αποκλεισμό και συγχρονισμό

3 POSIX THREADS (pthreads) Βασικές thread λειτουργίες: pthread_create pthread_exit pthread_detach pthread_join pthread_self pthread_equal

4 Υλοποίηση multithreaded server με χρήση του rpcgen Το rpcgen μπορεί να παράγει κώδικα ο οποίος αναθέτει αυτόματα κάθε αίτηση σε ξεχωριστό thread, όταν εκτελεστεί με παράμετρο –A. Παράδειγμα: rpcgen –A –C –a vote.x

5 Multithreaded server Κάθε φορά που φτάνει κάποια αίτηση για κλήση κάποιας διαδικασίας δημιουργείται ένα νέο νήμα για να την εκτελέσει. Επειδή πλέον πολλά νήματα προσπελαύνουν ταυτόχρονα κοινές μεταβλητές, υπάρχουν προβλήματα ανταγωνισμού.

6 Πρόβλημα αμοιβαίου αποκλεισμού στην Vote Μπορεί κάποιος να ψηφίσει δύο φορές: Χρονική στιγμήΝήμα ΑΝήμα Β tΈλεγχος αν ψήφισε ο χρήστης t + 1Έλεγχος αν ψήφισε ο χρήστης t + 2Καταγραφή ότι ψήφισε t + 3Καταγραφή ότι ψήφισε

7 Πρόβλημα αμοιβαίου αποκλεισμού στην Vote Μπορεί κάποια ψήφος να χαθεί: Χρονική στιγμήΝήμα ΑΝήμα Β t Ανάγνωση των ψήφων που έχει ως τώρα ο ψηφοφόρος t + 1 Ανάγνωση των ψήφων που έχει ως τώρα ο ψηφοφόρος t + 2 Αύξηση κατά 1 και αποθήκευση t + 3 Αύξηση κατά 1 και αποθήκευση

8 Συναρτήσεις αμοιβαίου αποκλεισμού Παρέχονται οι εξής συναρτήσεις για διαχείριση δυαδικών σημαφόρων:  int mutex_init(mutex_t *mp, int type, void * arg);  int mutex_lock(mutex_t *mp);  int mutex_trylock(mutex_t *mp);  int mutex_unlock(mutex_t *mp);  int mutex_destroy(mutex_t *mp);

9 Υλοποίηση αμοιβαίου αποκλεισμού Για την αντιμετώπιση των προβλημάτων αμοιβαίου αποκλεισμού στη προσπέλαση των αρχείων του server χρησιμοποιήθηκαν οι συναρτήσεις mutex_init, mutex_lock mutex_unlock Κάθε φορά που κάποιο νήμα ανοίγει ένα αρχείο χρησιμοποείται η mutex_lock για το κλείδωμα του αρχείου και η mutex_unlock στο κλείσιμο του αρχείου

10 Μπορεί να ακούγεται εύκολο, αλλά… THE RPC GROUP


Κατέβασμα ppt "RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google