/ / Ce este nucleul Linux și ce face?

Ce este nucleul Linux și ce face?

imagine

Cu peste 13 milioane de linii de cod, kernel-ul Linux este unul dintre cele mai mari proiecte open source din lume, dar pentru ce este un kernel și la ce se folosește?

Deci, ce este sâmburele?

Un nucleu este cel mai scăzut nivel de ușorsoftware înlocuitor care interfață cu hardware-ul din computer. Este responsabil pentru interfațarea tuturor aplicațiilor dvs. care rulează în „modul utilizator” până la hardware-ul fizic și permite proceselor, cunoscute sub numele de servere, să obțină informații unele de la altele folosind comunicarea inter-proces (IPC).

Diferite tipuri de sâmbure

Există, desigur, diferite moduri de a construi onucleu și considerente arhitecturale atunci când construiți unul de la zero. În general, majoritatea sâmburelor se încadrează într-unul dintre cele trei tipuri: monolitic, microkernel și hibrid. Linux este un nucleu monolit, în timp ce OS X (XNU) și Windows 7 folosesc nuclee hibride. Haideți să facem un tur rapid pentru cele trei categorii, pentru a putea intra mai detaliat mai târziu.


Imagine după floricele în sus

microkernel
Un microkernel abordează doar gestionareace are de făcut: procesor, memorie și IPC. Aproape orice altceva dintr-un computer poate fi văzut ca accesoriu și poate fi gestionat în modul utilizator. Microcernelurile au un avantaj de portabilitate, deoarece nu trebuie să vă faceți griji dacă vă schimbați placa video sau chiar sistemul de operare, atât timp cât sistemul de operare încă încearcă să acceseze hardware-ul în același mod. Microcernelurile au, de asemenea, o amprentă foarte mică, atât pentru memorie, cât și pentru spațiu de instalare și tind să fie mai sigure, deoarece numai procesele specifice rulează în modul utilizator, care nu au permisiunile ridicate ca mod de supraveghere.

Pro-uri

  • portabilitate
  • Amprentă de instalare mică
  • Amprentă de memorie mică
  • Securitate

Contra

  • Hardware-ul este mai abstractizat prin drivere
  • Hardware-ul poate reacționa mai lent deoarece driverele sunt în modul utilizator
  • Procesele trebuie să aștepte într-o coadă pentru a obține informații
  • Procesele nu pot avea acces la alte procese fără a aștepta

Nucleu monolitic
S-au opus sâmburii monoliticimicrokernele, deoarece includ nu numai procesorul, memoria și IPC-ul, dar includ, de asemenea, driverele de dispozitiv, gestionarea sistemului de fișiere și apelurile la serverul de sistem. Nucleele monolitice tind să fie mai bune la accesarea hardware-ului și a multitasking-ului, deoarece dacă un program trebuie să obțină informații din memorie sau un alt proces care îl rulează, are o linie mai directă pentru a o accesa și nu trebuie să aștepte într-o coadă pentru a duce la bun sfârșit lucrurile. Cu toate acestea, acest lucru poate provoca probleme, cu cât mai multe lucruri care rulează în modul de supraveghere, cu atât mai multe lucruri care pot reduce sistemul dvs. dacă nu se comportă corect.

Pro-uri

  • Acces mai direct la hardware pentru programe
  • Mai ușor pentru procesele de comunicare între ele
  • Dacă dispozitivul dvs. este acceptat, acesta ar trebui să funcționeze fără instalări suplimentare
  • Procesele reacționează mai repede, deoarece nu există o coadă pentru timpul procesorului

Contra

  • Amprenta mare de instalare
  • Amprentă mare de memorie
  • Mai puțin sigur, deoarece totul rulează în modul de supraveghere


Imagine prin schoschie pe Flickr

Nucleu hibrid
Sâmburii hibrizi au capacitatea de a alege șialege ce vor să ruleze în modul utilizator și ce doresc să ruleze în modul supervizor. De multe ori lucrurile precum driverele de dispozitiv și I / O de sistem de fișiere vor fi rulate în modul utilizator, în timp ce apelurile IPC și server vor fi păstrate în modul de supraveghere. Acest lucru oferă cele mai bune din ambele lumi, dar deseori va necesita mai multă muncă a producătorului de hardware, deoarece toată responsabilitatea șoferului le revine. De asemenea, poate avea unele dintre problemele de latență care este inerentă cu microkernelurile.

Pro-uri

  • Dezvoltatorul poate alege și alege ce rulează în modul utilizator și ce rulează în modul supervizor
  • Mai mică amprentă de instalare decât nucleul monolitic
  • Mai flexibil decât alte modele

Contra

  • Poate suferi de aceeași întârziere a procesului ca și microkernelul
  • Driverele de dispozitiv trebuie gestionate de utilizator (de obicei)

Unde sunt fișierele Kernel Linux?

imagine

Fișierul kernel, în Ubuntu, este stocat în folderul / boot și se numește vmlinuz-versiune. Numele vmlinuz provine din lumea unix unde obișnuiau să-și numească nucleele pur și simplu „unix” din anii 60, astfel încât Linux a început să-și numească kernel-ul „linux” când a fost dezvoltat pentru prima dată în anii 90.

Când memoria virtuală a fost dezvoltată pentru mai ușorabilități multitasking, „vm” a fost pus în partea din față a fișierului pentru a arăta că nucleul acceptă memoria virtuală. Un timp Linux kernel-ul a fost numit vmlinux, dar nucleul a crescut prea mult pentru a se încadra în memoria de pornire disponibilă, astfel încât imaginea nucleului a fost comprimată și finalul x a fost schimbat în z pentru a arăta că a fost comprimat cu comprimare zlib. Aceeași compresie nu este întotdeauna folosită, adesea înlocuită cu LZMA sau BZIP2, iar unele nuclee sunt numite pur și simplu zImage.

Numerotarea versiunii va fi în format A.B.C.D, unde A.B va fi probabil 2.6, C va fi versiunea dvs., iar D indică corecțiile sau corecțiile dvs.

În folderul / boot vor fi și altelefișiere importante numite initrd.img-version, system.map-version și config-version. Fișierul initrd este utilizat ca un disc RAM mic care extrage și execută fișierul de nucleu real. Fișierul system.map este utilizat pentru gestionarea memoriei înainte ca nucleul să se încarce complet, iar fișierul de configurare spune kernelului ce opțiuni și module de încărcat în imaginea kernelului atunci când este compilat.

Linux Kernel Architecture

Deoarece nucleul Linux este monolitic, arecea mai mare amprentă și cea mai complexă față de celelalte tipuri de sâmburi. Aceasta a fost o caracteristică de proiectare, care a fost destul de dezbătută în primele zile ale Linux și care poartă în continuare unele din aceleași defecte de proiectare pe care nucleele monolitice sunt inerente.

Un lucru pe care l-au făcut dezvoltatorii de kernel Linuxocolirea acestor defecte a fost realizarea modulelor de kernel care ar putea fi încărcate și descărcate la timpul de execuție, ceea ce înseamnă că puteți adăuga sau elimina funcții ale kernel-ului dvs. pe mers. Aceasta poate depăși doar adăugarea funcționalității hardware pe kernel, incluzând module care rulează procesele serverului, cum ar fi virtualizarea la nivel scăzut, dar poate permite înlocuirea întregului kernel fără a fi nevoie să reporniți computerul în anumite cazuri.

Imaginați-vă dacă ați putea face upgrade la un pachet de servicii Windows fără a mai fi nevoie să reporniți ...

Module de nucleu

imagine

Ce se întâmplă dacă Windows avea fiecare driver disponibildeja instalat și a trebuit doar să porniți driverele de care aveți nevoie? Acesta este în esență ceea ce fac modulele de kernel pentru Linux. Modulele de kernel, cunoscute și sub numele de modul de kernel încărcabil (LKM), sunt esențiale pentru menținerea funcționării kernel-ului cu tot hardware-ul dvs. fără să vă consumați toată memoria disponibilă.

De obicei, un modul adaugă funcționalitate la bazăkernel pentru lucruri precum dispozitive, sisteme de fișiere și apeluri de sistem. LKM-urile au extensia de fișier .ko și sunt de obicei stocate în directorul / lib / modules. Datorită naturii lor modulare, puteți personaliza cu ușurință kernelul dvs. setând module pentru a încărca sau nu încărcați, în timpul pornirii cu comanda menuconfig sau prin editarea fișierului / boot / config, sau puteți încărca și descărca module din zbor cu modprobe comanda.

Sunt module terțe și surse închisedisponibil în unele distribuții, cum ar fi Ubuntu, și este posibil să nu fie instalat implicit, deoarece codul sursă pentru module nu este disponibil. Dezvoltatorul software-ului (adică nVidia, ATI, printre altele) nu furnizează codul sursă, ci mai degrabă își construiesc propriile module și compun fișierele .ko necesare pentru distribuire. Deși aceste module sunt gratuite ca în bere, nu sunt gratuite ca în vorbire și, prin urmare, nu sunt incluse de unele distribuții, deoarece cei de la mentenanță simt că „tachizează” nucleul, oferind software non-gratuit.

Un nucleu nu este magic, dar este completesențială pentru orice computer care rulează corect. Nucleul Linux este diferit de OS X și Windows, deoarece include drivere la nivel de kernel și face ca multe lucruri să fie acceptate „din cutie”. Sperăm că veți ști puțin mai multe despre modul în care software-ul și hardware-ul dvs. funcționează împreună și despre ce fișiere aveți nevoie pentru a porni computerul.

Kernel.org
Imagine după ingridtaylar