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

Anonim

Διακοπή ενόψει εξαίρεσης

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

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

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

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

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

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

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