Αρκετές πτυχές συμβάλλουν στον ορισμό της ορθότητας σε ένα ταυτόχρονο πρόγραμμα:
* Ασφάλεια: Το πρόγραμμα δεν εισέρχεται ποτέ σε ένα μη έγκυρο κράτος. Αυτό περιλαμβάνει την αποφυγή προβλημάτων όπως:
* αγώνες δεδομένων: Πολλαπλά νήματα που έχουν πρόσβαση και τροποποιώντας την ίδια θέση κοινής μνήμης χωρίς τον κατάλληλο συγχρονισμό, οδηγώντας σε απρόβλεπτα αποτελέσματα.
* Deadlocks: Δύο ή περισσότερα νήματα μπλοκαρίστηκαν επ 'αόριστον, περιμένοντας ο ένας τον άλλον να απελευθερώσει πόρους.
* Livelocks: Τα νήματα μεταβάλλονται συνεχώς σε απάντηση μεταξύ τους, αλλά κανένας δεν σημειώνει πρόοδο.
* πείνα: Ένα ή περισσότερα νήματα στερούνται συνεχώς πρόσβαση σε έναν κοινό πόρο.
* Συνθήκες αγώνα: Το αποτέλεσμα εξαρτάται από την απρόβλεπτη σειρά στην οποία εκτελούνται τα νήματα.
* LENEUTY: Το πρόγραμμα τελικά σημειώνει πρόοδο και τερματίζεται εάν υποτίθεται ότι. Αυτό περιλαμβάνει τη διασφάλιση ότι:
* Τα νήματα τελικά αποκτούν τους απαραίτητους πόρους.
* Το πρόγραμμα φτάνει τελικά σε μια κατάσταση τερματισμού.
* Λειτουργικότητα: Το πρόγραμμα παράγει τη σωστή έξοδο και επιτυγχάνει τον επιδιωκόμενο σκοπό του. Αυτό είναι παρόμοιο με τα διαδοχικά προγράμματα, αλλά περιπλέκεται από την ταυτόχρονη φύση της εκτέλεσης. Το τελικό αποτέλεσμα πρέπει να είναι συνεπές σε όλα τα πιθανά σενάρια εκτέλεσης.
Επομένως, η απόδειξη της ορθότητας ενός ταυτόχρονου προγράμματος περιλαμβάνει συνήθως την απόδειξη ότι:
1. Όλες οι πιθανές παρεμβολές των εκτελέσεων νήματος οδηγούν σε έγκυρη τελική κατάσταση. Αυτό είναι απίστευτα δύσκολο και συχνά ανέφικτο να κάνουμε εξαντλητικά.
2. Αυτό συχνά αντιμετωπίζεται μέσω του προσεκτικού σχεδιασμού και της χρήσης μηχανισμών συγχρονισμού (Mutexes, σηματοφόρες, οθόνες κ.λπ.).
3. Το πρόγραμμα ικανοποιεί τις ιδιότητές του για τη ζωντάνια του. Αυτό σημαίνει ότι το πρόγραμμα θα ολοκληρώσει τελικά τα καθήκοντά του και δεν θα κολλήσει σε άπειρο βρόχο ή αδιέξοδο.
Συνοπτικά, η ορθότητα στον ταυτόχρονο προγραμματισμό σημαίνει ότι εγγυάται προβλέψιμη και αξιόπιστη συμπεριφορά σε όλα τα πιθανά χρονοδιαγράμματα εκτέλεσης. Αυτό απαιτεί σχολαστική προσοχή στον συγχρονισμό, τη διαχείριση των πόρων και τις αυστηρές τεχνικές δοκιμών και επαλήθευσης. Οι επίσημες μέθοδοι μπορούν να χρησιμοποιηθούν για αυστηρή επαλήθευση, αλλά αυτές είναι συχνά υπολογιστικά δαπανηρές και ισχύουν μόνο για μικρότερα προγράμματα. Επομένως, απαιτείται συνήθως ένας συνδυασμός προσεκτικού σχεδιασμού, δοκιμών και δυνητικά επίσημης επαλήθευσης για να διασφαλιστεί η ορθότητα ενός ταυτόχρονου προγράμματος.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα