Αρχική σελίδα » πως να » Τι είναι ο πυρήνας του Linux και τι κάνει;

    Τι είναι ο πυρήνας του Linux και τι κάνει;


    Με πάνω από 13 εκατομμύρια γραμμές κώδικα, ο πυρήνας του Linux είναι ένα από τα μεγαλύτερα έργα ανοιχτού κώδικα στον κόσμο, αλλά τι είναι ο πυρήνας και τι χρησιμοποιείται για?

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

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

    Διαφορετικοί τύποι πυρήνων

    Υπάρχουν, βεβαίως, διαφορετικοί τρόποι να δημιουργηθεί ένας πυρήνας και αρχιτεκτονικές εκτιμήσεις κατά την κατασκευή ενός από το μηδέν. Γενικά, οι περισσότεροι πυρήνες εμπίπτουν σε έναν από τους τρεις τύπους: μονολιθικό, μικροκαρύδιο και υβρίδιο. Το Linux είναι ένας μονολιθικός πυρήνας ενώ το OS X (XNU) και το Windows 7 χρησιμοποιούν υβριδικούς πυρήνες. Ας κάνουμε μια γρήγορη περιήγηση στις τρεις κατηγορίες για να μπορέσουμε να βρούμε περισσότερες λεπτομέρειες αργότερα.


    Εικόνα από upcorn popcorn

    Microkernel
    Ένα microkernel λαμβάνει την προσέγγιση της διαχείρισης μόνο του τι πρέπει να: CPU, μνήμη και IPC. Σχεδόν όλα τα υπόλοιπα σε έναν υπολογιστή μπορούν να θεωρηθούν ως αξεσουάρ και μπορούν να χρησιμοποιηθούν σε κατάσταση λειτουργίας χρήστη. Τα microkernels έχουν το πλεονέκτημα της φορητότητας επειδή δεν χρειάζεται να ανησυχούν εάν αλλάξετε την κάρτα γραφικών σας ή ακόμα και το λειτουργικό σας σύστημα, εφόσον το λειτουργικό σύστημα εξακολουθεί να προσπαθεί να αποκτήσει πρόσβαση στο υλικό με τον ίδιο τρόπο. Οι μικροπυρήνες έχουν επίσης ένα πολύ μικρό αποτύπωμα τόσο για τη μνήμη όσο και για το χώρο εγκατάστασης και τείνουν να είναι πιο ασφαλείς επειδή μόνο συγκεκριμένες διεργασίες εκτελούνται σε κατάσταση χρήστη που δεν έχει τα υψηλά δικαιώματα ως τρόπος εποπτείας.

    Πλεονεκτήματα

    • Φορητότητα
    • Μικρό αποτύπωμα εγκατάστασης
    • Μικρό αποτύπωμα μνήμης
    • Ασφάλεια

    Μειονεκτήματα

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

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

    Πλεονεκτήματα

    • Απευθείας πρόσβαση στο υλικό για προγράμματα
    • Ευκολότερη για να επικοινωνούν οι διαδικασίες μεταξύ τους
    • Εάν υποστηρίζεται η συσκευή σας, θα πρέπει να λειτουργεί χωρίς πρόσθετες εγκαταστάσεις
    • Οι διαδικασίες αντιδρούν ταχύτερα επειδή δεν υπάρχει ουρά για τον χρόνο επεξεργαστή

    Μειονεκτήματα

    • Μεγάλο αποτύπωμα εγκατάστασης
    • Μεγάλο αποτύπωμα μνήμης
    • Λιγότερο ασφαλής γιατί όλα τρέχουν σε λειτουργία εποπτών


    Εικόνα μέσω σχολείου στο Flickr

    Υβριδικό πυρήνα
    Οι υβριδικοί πυρήνες έχουν τη δυνατότητα να επιλέγουν και να επιλέγουν αυτό που θέλουν να τρέξουν σε λειτουργία χρήστη και τι θέλουν να τρέξουν σε κατάσταση εποπτείας. Συχνά, τα στοιχεία όπως τα προγράμματα οδήγησης συσκευών και το σύστημα αρχείων I / O θα εκτελούνται σε κατάσταση χρήστη ενώ οι κλήσεις IPC και διακομιστή θα διατηρούνται στη λειτουργία εποπτών. Αυτό δίνει το καλύτερο και των δύο κόσμων, αλλά συχνά θα απαιτήσει περισσότερη δουλειά του κατασκευαστή του υλικού επειδή όλη η ευθύνη του οδηγού εξαρτάται από αυτά. Μπορεί επίσης να έχει μερικά από τα προβλήματα λανθάνοντος χρόνου που είναι εγγενή με τους μικροκρυστάλλους.

    Πλεονεκτήματα

    • Ο προγραμματιστής μπορεί να διαλέξει και να επιλέξει τι τρέχει στη λειτουργία χρήστη και τι τρέχει σε κατάσταση εποπτών
    • Μικρότερο αποτύπωμα εγκατάστασης από τον μονολιθικό πυρήνα
    • Πιο ευέλικτο από άλλα μοντέλα

    Μειονεκτήματα

    • Μπορεί να υποφέρει από την ίδια καθυστέρηση της διαδικασίας όπως και ο μικροκέρδος
    • Τα προγράμματα οδήγησης συσκευών πρέπει να διαχειρίζονται από τον χρήστη (συνήθως)

    Πού είναι τα αρχεία πυρήνα του Linux?

    Το αρχείο του πυρήνα, στο Ubuntu, αποθηκεύεται στο φάκελο / boot και ονομάζεται vmlinuz-εκδοχή. Το όνομα vmlinuz προέρχεται από τον unix κόσμο όπου κάποτε ονόμαζαν τους πυρήνες τους "unix" πίσω στη δεκαετία του '60 έτσι ώστε το Linux άρχισε να καλεί τον πυρήνα τους "linux" όταν αναπτύχθηκε αρχικά στη δεκαετία του '90.

    Όταν αναπτύχθηκε εικονική μνήμη για ευκολίες πολλαπλών διευθύνσεων, το "vm" τέθηκε στο μπροστινό μέρος του αρχείου για να δείξει ότι ο πυρήνας υποστηρίζει εικονική μνήμη. Για κάποιο διάστημα ο πυρήνας του Linux ονομάστηκε vmlinux, αλλά ο πυρήνας αυξήθηκε πολύ για να χωρέσει στη διαθέσιμη μνήμη εκκίνησης έτσι ώστε η εικόνα του πυρήνα να συμπιεστεί και το τέλος x να αλλάξει σε z για να δείξει ότι ήταν συμπιεσμένο με συμπίεση zlib. Αυτή η ίδια συμπίεση δεν χρησιμοποιείται πάντα, συχνά αντικαθίσταται με LZMA ή BZIP2, και ορισμένοι πυρήνες ονομάζονται απλά zImage.

    Η αρίθμηση των εκδόσεων θα είναι στη μορφή A.B.C.D όπου το A.B πιθανότατα θα είναι 2.6, το C θα είναι η έκδοση σας και το D θα δείχνει τις ενημερώσεις ή τις διορθώσεις σας.

    Στο φάκελο / boot θα υπάρχουν και άλλα πολύ σημαντικά αρχεία που ονομάζονται initrd.img-version, system.map-version και config-version. Το αρχείο initrd χρησιμοποιείται ως μικρός δίσκος RAM που εξάγει και εκτελεί το πραγματικό αρχείο του πυρήνα. Το αρχείο system.map χρησιμοποιείται για τη διαχείριση μνήμης πριν γεμίσει πλήρως ο πυρήνας και το αρχείο ρυθμίσεων λέει στον πυρήνα ποιες επιλογές και ενότητες θα φορτωθούν στην εικόνα του πυρήνα κατά τη σύνταξή του.

    Αρχιτεκτονική πυρήνα του Linux

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

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

    Φανταστείτε εάν θα μπορούσατε να κάνετε αναβάθμιση σε ένα service pack των Windows χωρίς ποτέ να χρειαστεί επανεκκίνηση ...

    Μονάδες πυρήνα

    Τι θα συμβεί αν τα Windows είχαν ήδη εγκαταστήσει όλα τα προγράμματα οδήγησης και απλά έπρεπε να ενεργοποιήσετε τα προγράμματα οδήγησης που χρειάζεστε; Αυτό είναι ουσιαστικά αυτό που κάνουν οι ενότητες του πυρήνα για το Linux. Οι μονάδες πυρήνα, γνωστές και ως λειτουργικές μονάδες πυρήνα (LKM), είναι απαραίτητες για να διατηρηθεί η λειτουργία του πυρήνα με όλο το υλικό σας χωρίς να καταναλώνεται όλη η διαθέσιμη μνήμη.

    Μια ενότητα συνήθως προσθέτει λειτουργικότητα στον πυρήνα βάσης για πράγματα όπως συσκευές, συστήματα αρχείων και κλήσεις συστήματος. Τα LKMs έχουν την επέκταση αρχείου .ko και συνήθως αποθηκεύονται στον κατάλογο / lib / modules. Λόγω της δομοστοιχειωτής φύσης τους, μπορείτε να προσαρμόσετε εύκολα τον πυρήνα σας, ρυθμίζοντας τις λειτουργικές μονάδες για φόρτωση ή μη φόρτωση κατά την εκκίνηση με την εντολή menuconfig ή επεξεργάζοντας το αρχείο / boot / config ή μπορείτε να φορτώσετε και να ξεφορτώσετε μονάδες εν κινήσει με το modprobe εντολή.

    Μονάδες τρίτου μέρους και κλειστού κώδικα είναι διαθέσιμα σε ορισμένες διανομές, όπως το Ubuntu, και ενδέχεται να μην έχουν εγκατασταθεί από προεπιλογή, επειδή ο πηγαίος κώδικας για τις ενότητες δεν είναι διαθέσιμος. Ο προγραμματιστής του λογισμικού (δηλ. NVidia, ATI, μεταξύ άλλων) δεν παρέχει τον πηγαίο κώδικα, αλλά δημιουργεί τις δικές του ενότητες και συγκεντρώνει τα απαραίτητα αρχεία .ko για διανομή. Παρόλο που αυτά τα στοιχεία είναι ελεύθερα όπως στη μπύρα, δεν είναι ελεύθερα όπως στην ομιλία και έτσι δεν συμπεριλαμβάνονται σε ορισμένες διανομές, επειδή οι διαχειριστές αισθάνονται ότι «κατακερτίζουν» τον πυρήνα παρέχοντας μη-ελεύθερο λογισμικό.

    Ένας πυρήνας δεν είναι μαγικός, αλλά είναι απολύτως απαραίτητος για κάθε υπολογιστή που λειτουργεί σωστά. Ο πυρήνας του Linux είναι διαφορετικός από το OS X και τα Windows, επειδή περιλαμβάνει προγράμματα οδήγησης σε επίπεδο πυρήνα και κάνει πολλά πράγματα να υποστηρίζονται "έξω από το κουτί". Ας ελπίσουμε ότι θα ξέρετε λίγο περισσότερο σχετικά με το πώς το λογισμικό και το υλικό σας συνεργάζεται και ποια αρχεία χρειάζεστε για την εκκίνηση του υπολογιστή σας.

    Kernel.org
    Εικόνα από ingridtaylar