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

Anonim

Διακοπή vs Trap

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

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

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

Τι είναι μια παγίδα;

Μια παγίδα μπορεί να αναγνωριστεί ως μεταφορά ελέγχου, η οποία ξεκινάει από τον προγραμματιστή. Ο όρος Trap χρησιμοποιείται εναλλακτικά με τον όρο Εξαίρεση (η οποία είναι μια αυτόματη διακοπή λογισμικού). Αλλά κάποιοι μπορεί να υποστηρίζουν ότι μια παγίδα είναι απλά μια ειδική κλήση υπορουτίνας. Συνεπώς, εμπίπτουν στην κατηγορία των διακοπών που χρησιμοποιούνται από το λογισμικό. Για παράδειγμα, σε συσκευές 80 × 86, ένας προγραμματιστής μπορεί να χρησιμοποιήσει την εντολή int για να ξεκινήσει μια παγίδα. Επειδή μια παγίδα είναι πάντα άνευ όρων, ο έλεγχος θα μεταφέρεται πάντα στη υπορουτίνα που σχετίζεται με την παγίδα. Η ακριβής εντολή, η οποία επικαλείται τη ρουτίνα για το χειρισμό της παγίδας, αναγνωρίζεται εύκολα, επειδή χρησιμοποιείται ρητή οδηγία για τον καθορισμό μιας παγίδας.

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

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