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

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

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

Βίντεο: Διαφορά μεταξύ διακοπής και παγίδας
Βίντεο: Webinar Προπτυχιακού Προγράμματος Σπουδές στις Φυσικές Επιστήμες 2024, Ιούλιος
Anonim

Interrupt vs Trap

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

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

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

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

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

Ποια είναι η διαφορά μεταξύ Interrupt και Trap;

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

Συνιστάται: