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

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

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

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

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

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

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

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

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