Διαφορά μεταξύ διακοπής και εξαίρεσης

Διαφορά μεταξύ διακοπής και εξαίρεσης
Διαφορά μεταξύ διακοπής και εξαίρεσης

Βίντεο: Διαφορά μεταξύ διακοπής και εξαίρεσης

Βίντεο: Διαφορά μεταξύ διακοπής και εξαίρεσης
Βίντεο: Public vs Private IP Address 2024, Ιούλιος
Anonim

Interrupt vs Exception

Σε οποιονδήποτε υπολογιστή, κατά την κανονική εκτέλεση ενός προγράμματος, ενδέχεται να υπάρξουν συμβάντα που μπορεί να προκαλέσουν προσωρινή διακοπή της CPU. Συμβάντα όπως αυτό ονομάζονται διακοπές. Οι διακοπές μπορεί να προκληθούν είτε από σφάλματα λογισμικού είτε από σφάλματα υλικού. Οι διακοπές υλικού ονομάζονται (απλά) Διακοπές, ενώ οι διακοπές λογισμικού ονομάζονται Εξαιρέσεις. Μόλις εγείρεται μια διακοπή (λογισμικό ή υλικό), ο έλεγχος μεταφέρεται σε μια ειδική υπορουτίνα που ονομάζεται ISR (Interrupt Service Routine) που μπορεί να χειριστεί τις συνθήκες που δημιουργούνται από τη διακοπή.

Τι είναι η Διακοπή;

Ο όρος Διακοπή συνήθως προορίζεται για διακοπές υλικού. Είναι διακοπές ελέγχου προγράμματος που προκαλούνται από εξωτερικά συμβάντα υλικού. Εδώ, εξωτερικό σημαίνει εξωτερικό της CPU. Οι διακοπές υλικού συνήθως προέρχονται από πολλές διαφορετικές πηγές, όπως τσιπ χρονομέτρου, περιφερειακές συσκευές (πληκτρολόγια, ποντίκι, κ.λπ.), θύρες εισόδου/εξόδου (σειριακές, παράλληλες κ.λπ.), μονάδες δίσκου, ρολόι CMOS, κάρτες επέκτασης (κάρτα ήχου, βίντεο κάρτα, κλπ). Αυτό σημαίνει ότι σχεδόν ποτέ δεν συμβαίνουν διακοπές υλικού λόγω κάποιου συμβάντος που σχετίζεται με το πρόγραμμα εκτέλεσης. Για παράδειγμα, ένα συμβάν όπως ένα πάτημα πλήκτρων στο πληκτρολόγιο από τον χρήστη ή ένα εσωτερικό χρονόμετρο υλικού μπορεί να προκαλέσει αυτό το είδος διακοπής και μπορεί να ενημερώσει την CPU ότι μια συγκεκριμένη συσκευή χρειάζεται κάποια προσοχή. Σε μια τέτοια κατάσταση, η CPU θα σταματήσει ό,τι είχε κάνει (δηλαδή θα σταματήσει το τρέχον πρόγραμμα), θα παρέχει την υπηρεσία που απαιτείται από τη συσκευή και θα επιστρέψει στο κανονικό πρόγραμμα. Όταν συμβαίνουν διακοπές υλικού και η CPU ξεκινά το ISR, άλλες διακοπές υλικού απενεργοποιούνται (π.χ. σε μηχανήματα 80×86). Εάν χρειάζεστε άλλες διακοπές υλικού να συμβαίνουν ενώ εκτελείται το ISR, πρέπει να το κάνετε ρητά καθαρίζοντας τη σημαία διακοπής (με οδηγίες sti). Σε μηχανήματα 80×86, η εκκαθάριση της σημαίας διακοπής θα επηρεάσει μόνο τις διακοπές υλικού.

Τι είναι οι Εξαιρέσεις;

Η εξαίρεση είναι μια διακοπή λογισμικού, η οποία μπορεί να αναγνωριστεί ως ειδική ρουτίνα χειριστή. Η εξαίρεση μπορεί να αναγνωριστεί ως παγίδα που εμφανίζεται αυτόματα (μια παγίδα μπορεί να αναγνωριστεί ως μεταφορά ελέγχου, η οποία ξεκινά από τον προγραμματιστή). Γενικά, δεν υπάρχουν συγκεκριμένες οδηγίες που να σχετίζονται με εξαιρέσεις (οι παγίδες δημιουργούνται χρησιμοποιώντας μια συγκεκριμένη εντολή). Έτσι, προκύπτει μια εξαίρεση λόγω μιας «εξαιρετικής» συνθήκης που εμφανίζεται κατά την εκτέλεση του προγράμματος. Για παράδειγμα, η διαίρεση με το μηδέν, η εκτέλεση ενός παράνομου κωδικού ή σφάλματος που σχετίζεται με τη μνήμη θα μπορούσε να προκαλέσει εξαιρέσεις. Κάθε φορά που τίθεται μια εξαίρεση, η CPU αναστέλλει προσωρινά το πρόγραμμα που εκτελούσε και ξεκινά το ISR. Το ISR θα περιέχει τι πρέπει να κάνετε με την εξαίρεση. Μπορεί να διορθώσει το πρόβλημα ή αν δεν είναι δυνατό, μπορεί να ματαιώσει το πρόγραμμα με χάρη εκτυπώνοντας ένα κατάλληλο μήνυμα σφάλματος. Αν και μια συγκεκριμένη εντολή δεν προκαλεί εξαίρεση, μια εξαίρεση θα προκαλείται πάντα από μια εντολή. Για παράδειγμα, το σφάλμα διαίρεσης με μηδέν μπορεί να συμβεί μόνο κατά την εκτέλεση της εντολής διαίρεσης.

Ποια είναι η διαφορά μεταξύ Διακοπής και Εξαίρεσης;

Οι διακοπές είναι διακοπές υλικού, ενώ οι εξαιρέσεις είναι διακοπές λογισμικού. Οι εμφανίσεις διακοπών υλικού συνήθως απενεργοποιούν άλλες διακοπές υλικού, αλλά αυτό δεν ισχύει για εξαιρέσεις. Εάν πρέπει να απαγορεύσετε τις διακοπές υλικού μέχρι να εμφανιστεί μια εξαίρεση, πρέπει να διαγράψετε ρητά τη σημαία διακοπής. Και συνήθως η σημαία διακοπής στον υπολογιστή επηρεάζει τις διακοπές (υλικό) σε αντίθεση με τις εξαιρέσεις. Αυτό σημαίνει ότι η εκκαθάριση αυτής της σημαίας δεν θα αποτρέψει εξαιρέσεις.

Συνιστάται: