5Aug

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


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

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

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

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

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


Εικόνα από popcorn uptown

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

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

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

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

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

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

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

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

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

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


Εικόνα μέσω schoschie στο Flickr

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

Προσαρμογείς

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

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

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

Πού είναι τα αρχεία πυρήνα του 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 χωρίς ποτέ να χρειαστεί επανεκκίνηση. ..

Modules Kernel

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

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

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

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

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