Υπάρχουν τρεις παραλλαγές επικοινωνίας διεργασιών.
Ένα παράδειγμα στην επικοινωνία διεργασιών μέσω μεταβίβασης πληροφοριών είναι η δέσμευση θέσεων σε σύστημα κρατήσεων.
Ένα παράδειγμα στην επικοινωνία διεργασιών μέσω εξαρτήσεων ανάμεσά τους είναι η παραγωγή και κατανάλωση δεδομένων.
Συνθήκες ανταγωνισμού μεταξύ διεργασιών προκύπτουν όταν προσπαθούν να προσπελάσουν τυχαίες δομές δεδομένων σειριακά.
Ο αμοιβαίος αποκλεισμός είναι μια βασική τεχνική αποφυγής συνθηκών ανταγωνισμού.
Στη γενική μορφή του αμοιβαίου αποκλεισμού, κάθε διεργασία αποτελεί ολόκληρη μια κρίσιμη περιοχή.
Ποιες από τις παρακάτω αποτελούν τις 4 συνθήκες για αποδοτική εφαρμογή του αμοιβαίου αποκλεισμού?
Μόνο μία διεργασία μπορεί να είναι στην κρίσιμη περιοχή.
Η ταχύτητα εκτέλεσης αποτελεί βασικό παράγοντα για την επιλογή του αποκλεισμού.
Πολλές διεργασίες μπορούν να εισέρχονται σε κρίσιμες περιοχές παράλληλα.
Το πλήθος των ΚΜΕ και η ταχύτητα εκτέλεσης δεν αποτελούν βάση για την υλοποίηση του αποκλεισμού.
Διεργασίες εκτός κρίσιμης περιοχής δεν εμποδίζουν τις υπόλοιπες να εκτελεστούν.
Κάποια διεργασία εντός κρίσιμης περιοχής, υπάρχει περίπτωση να μπλοκαριστεί από κάποια άλλη.
Δεν επιτρέπεται οι διεργασίες να εκτελούνται επ' αόριστον.
Στην αναμονή με απασχόληση, γίνεται απενεργοποίηση των διακοπών κατά την είσοδο στην κρίσιμη περιοχή.
Στην αναμονή με απασχόληση, η απενεργοποίηση των διακοπών είναι απολύτως ασφαλής.
Στην αναμονή με απασχόληση, στην παραλλαγή με αυστηρή εναλλαγή, γίνεται χρήση μεταβλητής που δείχνει ποιος έχει σειρά.
Στην αναμονή με απασχόληση, στην παραλλαγή με αυστηρή εναλλαγή, δεν παραβιάζονται συνθήκες του αμοιβαίου αποκλεισμού.
Ποια από τα παρακάτω ισχύουν για την εντολή TSL?
Απαιτεί μια νέα εντολή υλικού (TSL register, lock).
Αντιγράφει τη θέση μνήμης lock στη κύρια μνήμη.
Αποθηκεύει την τιμή 1 στη θέση μνήμης lock.
Οι δύο λειτουργίες (lock, write) γίνονται ξεχωριστά.
Ο δίαυλος κλειδώνεται όσο διαρκεί η εντολή.
Το κλείδωμα επηρεάζει μόνο έναν επεξεργαστή.
Με τη χρήση της εντολής TSL αντιστοιχούμε σε κάθε κρίσιμη περιοχή μία θέση μνήμης lock.
Με τη χρήση της εντολής XCHG η οποία είναι παραλλαγή της TSL γίνονται δύο πράξεις σε δύο φάσεις.
Η αναμονή με απασχόληση έχει το μειονέκτημα ότι σπαταλά πόρους της ΚΜΕ κατά την αναμονή κι ότι υπάρχει κίνδυνος αντιστροφής προτεραιοτήτων.
Η λύση με χρήση κλήσεων sleep/wakeup, λειτουργεί στην πράξη αφού τα σήματα είναι εγγυημένο ότι θα παραδοθούν εγκαίρως.
Ο σηματοφόρος είναι ειδική μορφή ακέραιας μεταβλητής.
Στους σηματοφόρους ορίζονται πολλές πράξεις.
Οι πράξεις up και down του σηματοφόρου, εκτελούνται αδιαίρετα.
Η υλοποίηση σηματοφόρων μπορεί να γίνει με κλήσεις συστήματος που εκτελούνται ατομικά.
Οι σηματοφόροι δεν αποτελούν λύση στο πρόβλημα παραγωγού-καταναλωτή.
Με τη χρήση σηματοφόρων γίνεται απόκρυψη των διακοπών.
Τα mutex αποτελούν μια απλή μορφή δυαδικού σηματοφόρου.
Με την κλήση mutex_lock το mutex κλειδώνεται και η διεργασία πάντα συνεχίζει να εκτελείται κανονικά.
Το mutex υλοποιείται στο χώρο του λειτουργικού.
Στους σηματοφόρους έχουμε ουρά διεργασιών. Στο mutex οι διεργασίες μπλοκάρονται προσωρινά.
Στην αναμονή με απασχόληση έχουμε αναμονή των διεργασιών. Στο mutex επίσης δεν παραχωρείται ο επεξεργαστής όταν μπλοκάρει μια διεργασία.
Στα mutex, όταν χρησιμοποιούμε νήματα, όλα βλέπουν την ίδια μνήμη.
Στα mutex όταν χρησιμοποιούμε διεργασίες, όλες έχουν κοινή μνήμη.
Ποιες από τις παρακάτω κλήσεις του πακέτου Pthread έχουν σωστή περιγραφή?
Pthread_mutex_init - Δημιουργία ενός mutex.
Pthread_mutex_destroy - Κλείδωμα ενός υπάρχοντος mutex.
Pthread_mutex_lock - Απόκτηση κλειδώματος ή μπλοκάρισμα.
Pthread_mutex_trylock - Απόκτηση κλειδώματος ή τερματισμός προγράμματος.
Τα mutex επαρκούν και για πιο σύνθετες συνθήκες, όπως στο πρόβλημα παραγωγού-καταναλωτή.
Με τις μεταβλητές συνθήκης, γίνεται μπλοκάρισμα σε μια συνθήκη του προγράμματος μέχρι να εμφανιστεί ένα σήμα (για ένα ή όλα τα νήματα).
Οι μεταβλητές συνθήκης κλειδώνονται πριν το mutex.
Οι ελεγκτές (Monitors) είναι δομή του λειτουργικού.
Οι ελεγκτές αποτελούνται από δεδομένα και διαδικασίες και υλοποιούνται ανάλογα με το μεταγλωττιστή.
Οι σηματοφόροι είναι αποκλειστικά τεχνική υψηλού επιπέδου, ενώ οι ελεγκτές χαμηλού επιπέδου.
Η μεταβίβαση μηνυμάτων είναι μια γενική τεχνική αμοιβαίου αποκλεισμού και η πλέον κατάλληλη για κατανεμημένα συστήματα.