Nucleu

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Notă despre dezambiguizare.svg Dezambiguizare - Dacă sunteți în căutarea altor semnificații, consultați Kernel (dezambiguizare) .
Abstracție de la software la hardware prin kernel

Un kernel (pronunția engleză în IPA : [ˈkəːnəl] ), în informatică, constituie nucleul sau nucleul unui sistem de operare , adică software - ul care asigură accesul securizat și controlat al hardware - ului la procesele care rulează pe computer [1] . Deoarece mai mult de unul poate rula simultan, nucleul poate fi, de asemenea, responsabil pentru atribuirea unei părți din timpul mașinii ( programare ) și acces hardware la fiecare program ( multitasking ) [2] .

Descriere

Un nucleu nu este strict necesar pentru a rula un computer. De fapt, programele pot fi încărcate direct și executate pe mașină, atâta timp cât dezvoltatorii lor consideră necesar să se descurce fără sprijinul sistemului de operare.

Acesta a fost modul tipic de funcționare al primelor computere, care au fost resetate înainte de a rula un nou program. Mai târziu, unele programe accesorii, cum ar fi încărcătoare de programe și depanatoare, au fost lansate dintr -o memorie numai în citire sau făcute să rămână în memorie în timpul tranzițiilor computerului de la o aplicație la alta: au constituit baza de facto pentru crearea primelor sisteme de operare. .

O altă situație în care absența unui sistem de operare este de dorit este exemplul microcontrolerelor minimaliste. Accesul direct la nucleu de către un utilizator / administrator poate avea loc în modul utilizator sau în modul nucleu .

Clasificare

Comparație între diferitele miezuri

Accesul direct la hardware poate fi, de asemenea, foarte complex, astfel încât nucleul implementează de obicei unul sau mai multe tipuri de abstractizare hardware, așa-numitul nivel de strat de abstractizare hardware ( strat de abstractizare hardware sau HAL). Aceste abstracții servesc pentru a „ascunde” complexitatea și pentru a oferi o interfață curată și uniformă hardware-ului subiacent pentru a facilita lucrul dezvoltatorilor.

Nucleele pot fi clasificate în patru categorii, pe baza gradului de abstractizare a hardware-ului:

  • Nucleele monolitice , care implementează direct o abstractizare completă a hardware-ului de bază.
  • Microkernelurile , care oferă un set îngust și simplu de abstractizare hardware și utilizează software (numite drivere de dispozitiv sau servere ) pentru a oferi mai multe funcționalități.
  • Kernelurile hibride (sau microcernelurile modificate ), care diferă de microcernelurile pure pentru implementarea unor funcții suplimentare pentru a crește performanța.
  • Esokernel , care elimină toate limitările legate de abstractizarea hardware și se limitează la garantarea accesului simultan la acesta, permițând aplicațiilor individuale să implementeze în mod independent abstracțiile tradiționale ale sistemului de operare prin intermediul unor biblioteci speciale.

Miezul monolitic de primul tip

Reprezentarea grafică a unui nucleu monolitic

Abordarea monolitică definește o interfață virtuală la nivel înalt pe hardware și software, cu un set de primitive sau apeluri de sistem pentru a implementa servicii de sistem de operare, cum ar fi gestionarea proceselor , multitasking și gestionarea memoriei , în diferite module care rulează în modul supervizor .

Chiar dacă fiecare modul care servește aceste operațiuni este separat de restul, integrarea codului este foarte strânsă și dificil de realizat în mod corespunzător și, deoarece toate modulele funcționează în același spațiu, o eroare într-unul dintre ele poate bloca întregul sistem. Cu toate acestea, când implementarea este completă și sigură, integrarea internă strânsă a componentelor face ca un bun nucleu monolitic să fie extrem de eficient.

Cu toate acestea, cel mai notabil dezavantaj al nucleelor ​​monolitice este că nu este posibil să adăugați un nou dispozitiv hardware fără a adăuga modulul său la nucleu, ceea ce necesită recompilarea nucleului . Alternativ, puteți compila un kernel cu toate modulele de suport hardware, cu prețul creșterii mari a dimensiunii acestora. Cu toate acestea, nucleele monolitice mai moderne, cum ar fi nucleul Linux și FreeBSD, pot încărca module în timpul rulării, dacă acestea sunt prevăzute în faza de configurare (faza de configurare este faza care precede faza de compilare, în timpul căreia puteți alege ce caracteristici sau drivere trebuie face parte din noul nucleu), permițând astfel extinderea nucleului atunci când este necesar, menținând în același timp dimensiunea codului în spațiul nucleului.

Exemple de miezuri monolitice:

Microkernel

Arrows-folder-categorize.svg Intrările individuale sunt listate la Categorie: Microkernel
Reprezentarea grafică a unui microkernel

Abordarea microkernel este de a defini un nucleu de bază care furnizează exclusiv un set de primitive sau apeluri de sistem pentru a implementa servicii minime ale sistemului de operare, cum ar fi gestionarea firelor , spațiile de adresă sau comunicarea inter-proces . În plus față de acest nucleu minim (de unde și prefixul „micro”) sunt inserate câteva servere, adică programe separate de nucleu care comunică cu acesta prin apelurile de sistem menționate mai sus pentru a implementa diferitele funcții ale sistemului.

Obiectivul principal este separarea implementărilor serviciului de bază de structurile operaționale ale sistemului. De exemplu, procesul de blocare a intrării / ieșirii poate fi implementat ca un modul server la nivel de utilizator. Aceste module la nivel de utilizator, utilizate pentru a furniza servicii la nivel înalt sistemului, sunt modulare și simplifică structura și designul nucleului. Un serviciu server care nu mai funcționează nu provoacă blocarea întregului sistem și poate fi repornit independent de restul.

Există unele tipuri de microkerneluri care nu pot fi definite exact ca atare, deoarece nu implementează unele funcții sub formă de servere, deși au alte caracteristici care definesc microcernelurile. Cea mai cunoscută dintre ele este Exec , prescurtarea pentru Executive Multitasking (și succesorul său direct ExecSG ), care este nucleul AmigaOS .

Exemple de sisteme de operare bazate pe microkernel și microkernel:

Sigla AIX (sistem de operare) , sistem de operare, bazat pe microkernel
BeOS , un alt sistem de operare bazat pe microkernel

Miezul și microcernele monolitice: comparație

Kernelurile monolitice sunt adesea preferate față de microkerneluri datorită nivelului mai mic de complexitate în verificarea codurilor de control într-un spațiu de adrese. De exemplu, XNU , nucleul macOS , se bazează pe un nucleu Mach 3.0 și componente BSD în același spațiu de adrese, pentru a reduce timpul de latență tipic pentru microcerneluri. XNU este, așadar, un kernel de înaltă performanță, deoarece se bazează parțial pe o soluție hibridă și nu poate fi în niciun caz considerat un microkernel. În documentația oficială Apple, XNU este denumit în mod clar nucleul monolitic modular.

Miezul monolitic este considerat învechit de la începutul anilor 1990 . Nucleul Linux ca nucleu monolitic în loc de microkernel a fost unul dintre subiectele faimosului război religios dintre Linus Torvalds (creatorul Linux ) și Andrew Tanenbaum (renumit profesor de sisteme de operare, autor al Minix ) - mai multe detalii sunt disponibile online .

De fapt, există motive de ambele părți.

Nucleele monolitice tind să fie mai ușor de proiectat corect și, prin urmare, pot evolua mai repede decât un sistem bazat pe microkernel. Există povești de succes de ambele părți. Microkernelurile sunt adesea utilizate în sistemele încorporate în aplicații medicale robotizate pentru misiuni critice sau în aplicații medicale, datorită faptului că componentele sistemului se află în zone de memorie separate, private și protejate. Acest lucru nu este posibil cu kernelurile monolitice, nici măcar cu modulele moderne care pot fi încărcate.

În afară de nucleul Mach , care este cel mai cunoscut microcernel de uz general, multe alte microcerneluri au fost dezvoltate în scopuri specifice. Kernel L3 în special a fost creat pentru a demonstra că microcernelurile nu sunt neapărat lente. Familia de microkerneluri L4 , succesorii L3, au o implementare numită Fiasco care poate rula nucleul Linux alături de alte procese L4 în spații de adrese separate.

QNX este un sistem de operare care a fost pe scena de la începutul anilor '80 și are o implementare cu adevărat minimalistă a microkernelului. Acest sistem a avut mult mai mult succes decât Mach în realizarea obiectivelor paradigmei microcernelului. Este utilizat în situații în care software-ul nu are voie să facă greșeli, de exemplu în brațele robotice ale navetei spațiale sau în mașinile de prelucrare a sticlei, unde chiar și o mică greșeală poate costa sute de mii de euro.

Miezul hibrid

Reprezentarea grafică a unui nucleu hibrid

Nucleele hibride sunt în esență microcerneluri care au cod "neesențial" la nivelul spațiului kernelului, astfel încât acest cod să poată rula mai repede decât dacă ar fi implementat la un nivel ridicat. Acesta a fost un compromis adoptat de mulți dezvoltatori de sisteme de operare înainte de a se dovedi că microcernelurile pure ar putea avea în schimb performanțe ridicate. Multe sisteme de operare moderne se încadrează în această categorie - Microsoft Windows fiind cel mai cunoscut exemplu. XNU , kernel-ul Mac OS X, este, de asemenea, un microkernel modificat, datorită includerii codului BSD într-un kernel bazat pe Mach. DragonFly BSD a fost primul sistem BSD non-Mach care a adoptat arhitectura kernelului hibrid.

Nu confundați termenul „nucleu hibrid” cu nuclee monolitice care pot încărca module după boot, deoarece „hibrid” implică faptul că nucleul în cauză împărtășește concepte arhitecturale și mecanisme tipice atât monolitice, cât și microcernelurilor, în special transmiterea mesajelor. a codului „neesențial” la un nivel superior, păstrând doar codul cerut la nivelul nucleului din motive de performanță.

Exemple de miezuri hibride:

Esokernel

Reprezentarea grafică a unui Exokernel

Exokernels sau Exokernels, cunoscute și sub numele de „sisteme de operare verticale”, sunt o abordare radical diferită a proiectării sistemului de operare. Ideea de bază este „separarea securității de management”.

Nimeni nu știe mai bine decât un dezvoltator cum să utilizeze eficient hardware-ul disponibil, așa că scopul este de a le oferi puterea de a lua decizii. Esokernels sunt extrem de mici și compacte, deoarece funcționalitatea lor este limitată în mod intenționat la protecția resurselor și multiplexare.

Nucleele „clasice” (atât monolitice, cât și microkernel) abstractizează hardware-ul, ascunzând resursele în spatele unui strat de abstractizare a hardware-ului ) sau în spatele serverelor „sigure”. În aceste sisteme „clasice”, dacă de exemplu este alocată memoria, programul nu poate ști în ce pagină fizică aceasta va fi rezervată de sistemul de operare și dacă un fișier este scris nu există nicio modalitate de a ști direct în ce sector al discului a fost alocat. Acesta este nivelul de abstractizare pe care un exokernel încearcă să îl evite. Permite unei aplicații să solicite zone specifice de memorie, sectoare specifice de pe disc și așa mai departe și asigură doar că resursele necesare sunt disponibile și că aplicațiile le pot accesa.

Deoarece un esokernel oferă o interfață de nivel foarte scăzut la hardware, lipsită de orice funcționalitate la nivel înalt tipică altor sisteme de operare, este însoțită de o bibliotecă de sistem de operare (libOS în jargon) care se interfață cu exokernel. dezvoltatorii cu funcționalitatea unui sistem de operare complet.

Toate acestea au o implicație importantă: este posibil să aveți mai multe libOS pe sistem. De exemplu, dacă instalați un libOS care exportă un API Unix și unul care exportă un API Windows, puteți rula simultan aplicații compilate pentru UNIX și Windows. Dezvoltarea libOS are loc la nivel de utilizator, fără repornire, depanare pe consolă și protecție completă a memoriei.

În prezent, esokernelurile sunt în mare parte proiecte de cercetare și nu sunt utilizate în sistemele de operare comerciale. Un exemplu de sistem bazat pe esokernel este Nemesis , dezvoltat de Universitatea din Cambridge , Universitatea din Glasgow , Citrix Systems și Institutul suedez de informatică . MIT a dezvoltat, de asemenea, mai multe sisteme bazate pe esokernel.

Fără nucleu

Așa-numitul software „fără kernel” nu trebuie să fie limitat la un singur punct de intrare care este, de asemenea, centralizat. Un exemplu este dat de proiecte precum TUNES și UnununiumOS, care intenționau să creeze un sistem de operare fără un nucleu (ambele proiecte au fost întrerupte).

Notă

  1. ^ (EN) Brian Bagnall, On the Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, p. 202, ISBN 978-0-97-386490-8 .
    ( EN )

    "Nucleul este cea mai fundamentală parte a unui program, de obicei un sistem de operare, care se află în memorie în orice moment și oferă serviciile de bază. Este partea sistemului de operare cea mai apropiată de aparat și care poate activa hardware-ul direct sau interfața cu un alt strat software care conduce hardware-ul. "

    ( IT )

    „Nucleul este cea mai fundamentală parte a unui program, de obicei un sistem de operare, care se află în memorie tot timpul și care oferă servicii de bază: este partea sistemului de operare cea mai apropiată de mașină și care poate activa„ hardware direct sau interfața cu un alt strat software care gestionează hardware-ul. "

  2. ^ (EN) LifeV, Multitasking Management în sistemul de operare Kernel , pe kukuruku.co. Adus la 1 noiembrie 2016 .
    ( EN )

    "Deoarece o singură instrucțiune poate fi executată la un nucleu de procesor la un moment dat, poate fi activ un singur fir. Procesul de alegere a firului de calcul activ se numește planificare. La rândul său, modulul care se ocupă de alegere se numește programator. "

    ( IT )

    „Deoarece fiecare procesor gestionat de kernel poate executa o singură instrucțiune la un moment dat, poate exista un singur fir activ. Procesul prin care se alege firul de calcul activ se numește planificare. La rândul său, modulul însărcinat cu această alegere se numește programator. "

  3. ^ Este utilizat inițial în GNU Hurd și nu în MacOS , care folosește XNU , care este un nucleu hibrid modular născut din uniunea lui Mach și a nucleului FreeBSD .

Bibliografie

Elemente conexe

Alte proiecte

Controlul autorității GND ( DE ) 4338679-9
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT