Κλήση συστήματος έναντι κλήσης λειτουργίας
Ένας τυπικός επεξεργαστής εκτελεί οδηγίες μία προς μία. Αλλά μπορεί να υπάρχουν περιπτώσεις όπου ο επεξεργαστής πρέπει να σταματήσει την τρέχουσα εντολή και να εκτελέσει κάποιο άλλο πρόγραμμα ή τμήμα κώδικα (που βρίσκεται σε κάποιο άλλο μέρος). Αφού γίνει αυτό, ο επεξεργαστής επιστρέφει στην κανονική εκτέλεση και συνεχίζει από εκεί που σταμάτησε. Μια κλήση συστήματος και μια κλήση λειτουργίας είναι τέτοιες περιπτώσεις. Μια κλήση συστήματος είναι μια κλήση σε μια υπορουτίνα ενσωματωμένη στο σύστημα. Μια κλήση συνάρτησης είναι μια κλήση σε μια υπορουτίνα μέσα στο ίδιο το πρόγραμμα.
Τι είναι μια κλήση συστήματος;
Οι κλήσεις συστήματος παρέχουν στα προγράμματα που εκτελούνται στον υπολογιστή μια διεπαφή για συνομιλία με το λειτουργικό σύστημα. Όταν ένα πρόγραμμα χρειάζεται να ζητήσει μια υπηρεσία (για την οποία δεν έχει άδεια να το κάνει από μόνο του) από τον πυρήνα του λειτουργικού συστήματος, χρησιμοποιεί μια κλήση συστήματος. Οι διεργασίες σε επίπεδο χρήστη δεν έχουν τα ίδια δικαιώματα με τις διεργασίες που αλληλεπιδρούν άμεσα με το λειτουργικό σύστημα. Για παράδειγμα, για επικοινωνία με και εξωτερική συσκευή I/O ή για αλληλεπίδραση με άλλες διεργασίες, ένα πρόγραμμα χρησιμοποιεί κλήσεις συστήματος.
Τι είναι μια κλήση συνάρτησης;
Μια κλήση συνάρτησης ονομάζεται επίσης κλήση υπορουτίνας. Μια υπορουτίνα (γνωστή και ως διαδικασία, συνάρτηση, μέθοδος ή ρουτίνα) είναι μέρος ενός ευρύτερου προγράμματος που είναι υπεύθυνο για την εκτέλεση μιας συγκεκριμένης εργασίας. Το μεγαλύτερο πρόγραμμα μπορεί να εκτελεί μεγάλο φόρτο εργασίας και η υπορουτίνα μπορεί να εκτελεί απλώς μια απλή εργασία, η οποία είναι επίσης ανεξάρτητη από την υπόλοιπη κωδικοποίηση του προγράμματος. Μια συνάρτηση είναι κωδικοποιημένη με τέτοιο τρόπο ώστε να μπορεί να κληθεί πολλές φορές και από διαφορετικά μέρη (ακόμη και μέσα από άλλες συναρτήσεις). Όταν καλείται μια συνάρτηση, ο επεξεργαστής μπορεί να μεταβεί στο σημείο όπου βρίσκεται ο κώδικας για τη συνάρτηση και να εκτελέσει τις οδηγίες της συνάρτησης μία προς μία. Μετά την ολοκλήρωση των λειτουργιών, ο επεξεργαστής θα επιστρέψει ακριβώς στο σημείο που σταμάτησε και θα συνεχίσει την εκτέλεση ξεκινώντας από την επόμενη εντολή. Οι συναρτήσεις είναι ένα εξαιρετικό εργαλείο για επαναχρησιμοποίηση κώδικα. Πολλές σύγχρονες γλώσσες προγραμματισμού υποστηρίζουν λειτουργίες. Μια συλλογή συναρτήσεων ονομάζεται βιβλιοθήκη. Οι βιβλιοθήκες χρησιμοποιούνται συχνά ως μέσα κοινής χρήσης και εμπορίας λογισμικού. Σε ορισμένες περιπτώσεις, ολόκληρο το πρόγραμμα θα μπορούσε να είναι μια ακολουθία υπορουτίνων (π.χ. σύνταξη κώδικα με νήματα).
Ποια είναι η διαφορά μεταξύ Κλήσης Συστήματος και Κλήσης Λειτουργίας;
Η κλήση συστήματος είναι μια κλήση σε μια υπορουτίνα ενσωματωμένη στο σύστημα, ενώ μια κλήση συνάρτησης είναι μια κλήση σε μια υπορουτίνα εντός του προγράμματος. Σε αντίθεση με τις κλήσεις λειτουργιών, οι κλήσεις συστήματος χρησιμοποιούνται όταν ένα πρόγραμμα χρειάζεται να εκτελέσει κάποια εργασία, για την οποία δεν έχει το δικαίωμα. Οι κλήσεις συστήματος είναι σημεία εισόδου στον πυρήνα του λειτουργικού συστήματος και δεν συνδέονται με το πρόγραμμα (όπως οι κλήσεις λειτουργιών). Σε αντίθεση με τις κλήσεις συστήματος, οι κλήσεις λειτουργιών είναι φορητές. Η χρονική επιβάρυνση μιας κλήσης συστήματος είναι μεγαλύτερη από την επιβάρυνση για μια κλήση συνάρτησης επειδή πρέπει να πραγματοποιηθεί μια μετάβαση μεταξύ της λειτουργίας χρήστη και της λειτουργίας πυρήνα. Οι κλήσεις συστήματος εκτελούνται στο χώρο διευθύνσεων του πυρήνα, ενώ οι κλήσεις συναρτήσεων εκτελούνται στο χώρο διευθύνσεων χρήστη.