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

Anonim

Σύστημα κλήσης vs Διακοπή

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

Τι είναι μια κλήση συστήματος;

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

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

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

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

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

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