Τι είναι η λειτουργία χρήστη έναντι της λειτουργίας πυρήνα στα Windows

Μπορεί να έχετε ακούσει για εφαρμογές που εκτελούνται σε λειτουργία "πυρήνα" ή "χρήστης". Όλα εξαρτώνται από το πώς λειτουργούν τα λειτουργικά συστήματα όταν κάνουν τη δουλειά τους. Μόλις το καταλάβετε, είναι εύκολο να κατανοήσετε τη διαφορά μεταξύ της λειτουργίας χρήστη και της λειτουργίας πυρήνα.

Κατανόηση του τι κάνει ένα λειτουργικό σύστημα(Does)

Ένας υπολογιστής αποτελείται από υλικό, ηλεκτρονικά εξαρτήματα και λογισμικό, τον κώδικα υπολογιστή που εκτελείται από αυτό το υλικό. Αλλά αυτό που μπορεί να είναι λιγότερο σαφές είναι πώς συνεργάζονται.

Το πιο ουσιαστικό στοιχείο ενός υπολογιστή είναι το bit ή "δυαδικό ψηφίο". Όλα όσα(” Everything) κάνει ένας υπολογιστής αντιπροσωπεύονται ως μονάδες και μηδενικά. Διαφορετικά(Different) στοιχεία υπολογιστή αντιπροσωπεύουν τα bit με διαφορετικούς τρόπους. Σε μια CPU , τα μικροσκοπικά τρανζίστορ αντιπροσωπεύουν το ένα και το μηδέν είτε είναι ενεργοποιημένα είτε απενεργοποιημένα. Αυτά τα τρανζίστορ είναι διατεταγμένα σε λογικές δομές, που ονομάζονται λογικές πύλες.

Στη μνήμη του ηλεκτρονικού υπολογιστή, τα bit αντιπροσωπεύονται από κυψέλες μνήμης είτε με φορτίο πάνω είτε κάτω από ένα συγκεκριμένο όριο. Σε έναν μηχανικό σκληρό δίσκο, τα bits αντιπροσωπεύονται ως μαγνητικές διακυμάνσεις που μετρώνται σε μια περιστρεφόμενη πιατέλα. Σε οπτικούς δίσκους, κοιλώματα και εδάφη που αντανακλούν ή δεν αντανακλούν το φως λέιζερ κάνουν την ίδια δουλειά. 

Ανεξάρτητα από το πώς επιτυγχάνεται η φυσική αναπαράσταση του δυαδικού κώδικα, μπορείτε τελικά να μειώσετε όλα τα εξαρτήματα του υπολογιστή καταναλωτών σε αυτόν τον πρωτογενή κώδικα μηχανής.

Πώς λοιπόν μπορείτε να πάτε από τη φιλική προς τον άνθρωπο διεπαφή ενός υπολογιστή στις ακατέργαστες, χαμηλού επιπέδου διαδικασίες στον ίδιο τον υπολογιστή; Εκεί μπαίνει το λειτουργικό σύστημα. Ελέγχει άμεσα το υλικό του υπολογιστή. 

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

Τι είναι ο πυρήνας;

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

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

Τα προγράμματα οδήγησης υλικού παίζουν εδώ. Τα προγράμματα οδήγησης λένε στο λειτουργικό σας σύστημα πώς να λειτουργεί με συγκεκριμένα στοιχεία, γι' αυτό χρειάζεστε διαφορετικά προγράμματα οδήγησης για τις GPU της Nvidia και της AMD(AMD GPUs) , για παράδειγμα.

Εξοπλισμένος με τα σωστά προγράμματα οδήγησης, ο πυρήνας είναι η απόλυτη αρχή στον υπολογιστή, συμπεριλαμβανομένης της εκτέλεσης πράξεων που μπορούν να καταστρέψουν καταστροφικά δεδομένα.

Ο ρόλος(Role) των διεπαφών προγραμματισμού εφαρμογών(Application Programming Interfaces) ( APIs )

Την εποχή του MS-DOS , οι προγραμματιστές λογισμικού έπρεπε να γράψουν το λογισμικό τους ειδικά για το υλικό του χρήστη. Το πιο διαβόητο παράδειγμα αυτού στα συστήματα MS-DOS ήταν τα προγράμματα οδήγησης κάρτας ήχου.

Ένα δεδομένο βιντεοπαιχνίδι θα έπρεπε να υποστηρίζει τις πιο δημοφιλείς κάρτες ( Sound Blaster , Ad-lib , Gravis Ultrasound , κ.λπ.) και ελπίζουμε ότι οι περισσότεροι παίκτες ήταν καλυμμένοι. Σήμερα, τα πράγματα λειτουργούν πολύ διαφορετικά, χάρη στα API(APIs) .

Το Microsoft DirectX(Microsoft DirectX) είναι ένα εξαιρετικό παράδειγμα. Εάν θέλετε μια εις βάθος εξήγηση, ρίξτε μια ματιά στο Τι είναι το DirectX και γιατί είναι σημαντικό; (What Is DirectX and Why Is It Important?)Ωστόσο, το πιο σημαντικό πράγμα που πρέπει να γνωρίζετε είναι ότι το API προσφέρει έναν τυπικό τρόπο για τους προγραμματιστές λογισμικού να ζητούν πόρους υλικού από στοιχεία όπως η GPU . Επιπλέον, οι κατασκευαστές υλικού πρέπει μόνο να διασφαλίζουν ότι τα προϊόντα τους συμμορφώνονται με το DirectX για να διασφαλίσουν την πλήρη συμβατότητα με οποιοδήποτε παρόμοια συμβατό λογισμικό.

Τα API(APIs) προσφέρουν ένα επίπεδο μετάφρασης μεταξύ των εφαρμογών λογισμικού και του πυρήνα χαμηλού επιπέδου με τα προγράμματα οδήγησης υλικού. Ναι, αυτό συνοδεύεται από μια μικρή ποινή απόδοσης. Ωστόσο, στους σύγχρονους υπολογιστές, αυτό είναι αμελητέο και συνοδεύεται από διάφορα πλεονεκτήματα, όπου τελικά φτάνουμε στη λειτουργία χρήστη και στη λειτουργία πυρήνα.

Λειτουργία χρήστη έναντι λειτουργίας πυρήνα

Τα σύγχρονα λειτουργικά συστήματα εκτελούν εκατοντάδες ή χιλιάδες «διαδικασίες» ταυτόχρονα, δίνοντάς τους δυναμικά χρόνο CPU όπως απαιτείται με βάση τις προτεραιότητές τους και τις απαιτήσεις υπολογιστικής ισχύος.

Όταν εκκινείτε μια εφαρμογή, αυτή δημιουργεί διεργασίες και η CPU μπορεί να τις εκτελέσει είτε σε λειτουργία χρήστη είτε σε λειτουργία πυρήνα.

Μια διαδικασία των Windows(Windows) που εκτελείται σε λειτουργία χρήστη έχει πρόσβαση μόνο στον δικό της χώρο διευθύνσεων εικονικής μνήμης και πίνακα χειρισμού. Το λογισμικό χρησιμοποιεί αυτούς τους πίνακες για να αποθηκεύσει δεδομένα στη μνήμη RAM(RAM) και να ζητήσει πόρους. Δεν υπάρχει άμεση πρόσβαση στη μνήμη ή σε άλλο υλικό και εναπόκειται στο λειτουργικό σύστημα να αντιστοιχίσει αυτούς τους εικονικούς χώρους στο πραγματικό υλικό του υπολογιστή.

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

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

Παγίδες και Εξαιρέσεις

Είναι σημαντικό να κατανοήσουμε ότι αυτές οι δύο λειτουργίες επιβάλλονται σε επίπεδο υλικού από την ίδια την CPU . Εάν μια εφαρμογή που εκτελείται σε λειτουργία χρήστη προσπαθήσει να κάνει κάτι που απαιτεί πρόσβαση σε λειτουργία πυρήνα, δημιουργεί μια «παγίδα» ή «εξαίρεση». Στη συνέχεια, το λειτουργικό σύστημα θα ασχοληθεί με την εφαρμογή, συνήθως κλείνοντάς την και δημιουργώντας ένα αρχείο καταγραφής σφαλμάτων, έτσι ώστε οι προγραμματιστές να μπορούν να δουν τι συνέβη στη μνήμη όταν τα πράγματα ξέφυγαν.

The Dangers of Kernel Mode : The Blue Screen of Death

Εάν έχετε αντιμετωπίσει ποτέ μια μπλε οθόνη(Blue Screen) θανάτου ( ποιος(Death) όχι;) που ανάγκασε τον υπολογιστή σας να απενεργοποιηθεί ή να επανεκκινηθεί, υπάρχει μεγάλη πιθανότητα να φταίει μια διαδικασία λειτουργίας πυρήνα.

Όταν μια διεργασία σε λειτουργία πυρήνα κάνει κάτι που δεν πρέπει, το λειτουργικό σύστημα δεν μπορεί να ανακτήσει από αυτήν και ολόκληρος ο υπολογιστής σταματά. Όταν μια διαδικασία λειτουργίας χρήστη πάει χαμένη, μόνο η εφαρμογή διακόπτεται και το υπόλοιπο λογισμικό και το λειτουργικό σύστημα μπορούν να συνεχιστούν χωρίς προβλήματα.

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

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

Εάν αντιμετωπίζετε προβλήματα με την Blue Screen of Death , φροντίστε να διαβάσετε τον Οδηγό αντιμετώπισης προβλημάτων Blue Screen of Death για Windows 10(Blue Screen of Death Troubleshooting Guide for Windows 10) !



About the author

Είμαι ειδικός των Windows και εργάζομαι στη βιομηχανία λογισμικού για πάνω από 10 χρόνια. Έχω εμπειρία με συστήματα Microsoft Windows και Apple Macintosh. Οι δεξιότητές μου περιλαμβάνουν: διαχείριση παραθύρων, υλικό και ήχο υπολογιστή, ανάπτυξη εφαρμογών και πολλά άλλα. Είμαι έμπειρος σύμβουλος που μπορεί να σας βοηθήσει να αξιοποιήσετε στο έπακρο το σύστημά σας Windows.



Related posts