În informatică, Kernel este un program de calculator care este nucleul sau inima unui sistem de operare. Înainte de a discuta nucleul în detaliu, să înțelegem mai întâi sistemul de bază al acestuia, adică sistemul de operare într-un computer.
Sistem de operare
Un sistem de operare sau OS este un software de sistem care funcționează ca o interfață între componentele hardware și utilizatorul final. Permite rularea altor programe. Fiecare sistem de computer, fie că este desktop, laptop, tabletă sau smartphone, toate trebuie să aibă un sistem de operare care să ofere funcționalități de bază pentru dispozitiv. Unele sisteme de operare utilizate pe scară largă sunt Windows , Linux , MacOS, Android , iOS etc.
Ce este Kernel-ul în sistemul de operare?
- După cum sa discutat mai sus, Kernel-ul este partea centrală a unui OS (sistem de operare); prin urmare, are control deplin asupra tuturor lucrurilor din sistem. Fiecare operațiune de hardware și software este gestionată și administrată de kernel.
- Acționează ca o punte între aplicații și procesarea datelor efectuate la nivel hardware. Este componenta centrală a unui sistem de operare.
- Este partea sistemului de operare care se află întotdeauna în memoria computerului și permite comunicarea între componentele software și hardware.
- Este programul de calculator care a încărcat prima dată la pornire sistemul (După bootloader). Odată ce este încărcat, gestionează start-up-urile rămase. De asemenea, gestionează memorie, periferice și solicitările I/O din software. Mai mult, traduce toate cererile I/O în instrucțiuni de procesare a datelor pentru CPU. Gestionează și alte sarcini de acest fel precum managementul memoriei, managementul sarcinilor și managementul discurilor .
- Un nucleu este păstrat și de obicei încărcat într-un spațiu de memorie separat, cunoscut ca spațiu Kernel protejat. Este protejat împotriva accesării de către programe de aplicație sau părți mai puțin importante ale sistemului de operare.
- Alte programe de aplicație, cum ar fi browser, procesor de text, player audio și video utilizează spațiu de memorie separat cunoscut sub numele de spatiul utilizatorului.
- Datorită acestor două spații separate, datele utilizatorului și datele kernelului nu interferează între ele și nu provoacă instabilitate și încetinire.
Funcțiile unui kernel
Un nucleu al unui sistem de operare este responsabil pentru îndeplinirea diferitelor funcții și are controlul asupra sistemului. Unele responsabilități principale ale Kernel sunt prezentate mai jos:
Pentru a efectua diverse acțiuni, procesele necesită acces la dispozitive periferice precum mouse, tastatură etc., care sunt conectate la computer. Un nucleu este responsabil pentru controlul acestor dispozitive folosind drivere de dispozitiv. Aici, a driver de dispozitiv este un program de calculator care ajută sau permite sistemului de operare să comunice cu orice dispozitiv hardware.
Un nucleu menține o listă cu toate dispozitivele disponibile, iar această listă poate fi deja cunoscută, configurată de utilizator sau detectată de sistemul de operare în timpul execuției.
Nucleul are control total pentru accesarea memoriei computerului. Fiecare proces necesită o anumită memorie pentru a funcționa, iar nucleul permite proceselor să acceseze memoria în siguranță. Pentru a aloca memorie, primul pas este cunoscut ca adresare virtuală, care se face prin paginare sau segmentare. Adresare virtuală este un proces de furnizare a spațiilor de adrese virtuale pentru procese. Acest lucru împiedică aplicația să se blocheze una în cealaltă.
Una dintre funcționalitățile importante ale Kernel este împărțirea resurselor între diferite procese. Trebuie să partajeze resursele astfel încât fiecare proces să acceseze uniform resursa.
Nucleul oferă, de asemenea, o modalitate de sincronizare și comunicare între procese (IPC). Este responsabil pentru schimbarea contextului între procese.
Un nucleu este responsabil pentru accesarea resurselor computerului, cum ar fi RAM și dispozitivele I/O. RAM sau memorie cu acces aleatoriu este folosit pentru a conține atât date, cât și instrucțiuni. Fiecare program trebuie să acceseze memoria pentru a se executa și, în general, dorește mai multă memorie decât cea disponibilă. Într-un astfel de caz, Kernel-ul își joacă rolul și decide ce memorie va folosi fiecare proces și ce să facă dacă memoria necesară nu este disponibilă.
Nucleul alocă, de asemenea, cererea de la aplicații pentru a utiliza dispozitive I/O, cum ar fi tastaturi, microfoane, imprimante etc.
Tipuri de Kernel
Există în principal cinci tipuri de kernel, care sunt prezentate mai jos:
1. Miezuri monolitice
Într-un nucleu monolitic, același spațiu de memorie este folosit pentru a implementa serviciile utilizatorului și serviciile kernelului.
cum să ștergeți coloana în postgresql
Înseamnă că, în acest tip de nucleu, nu există memorie diferită utilizată pentru serviciile utilizatorului și serviciile kernelului.
Pe măsură ce utilizează același spațiu de memorie, dimensiunea nucleului crește, mărind dimensiunea totală a sistemului de operare.
Execuția proceselor este, de asemenea, mai rapidă decât alte tipuri de nucleu, deoarece nu utilizează spațiu separat pentru utilizator și kernel.
Exemple de sâmburi monolitici sunt Unix, Linux, Open VMS, XTS-400 etc.
Avantaje:
- Execuția proceselor este, de asemenea, mai rapidă, deoarece nu există spațiu separat pentru utilizator și spațiu kernel și mai puțin software implicat.
- Deoarece este o singură bucată de software, atât sursele, cât și formele compilate sunt mai mici.
Dezavantaje:
- Dacă orice serviciu generează vreo eroare, se poate prăbuși întregul sistem.
- Aceste nuclee nu sunt portabile, ceea ce înseamnă că pentru fiecare nouă arhitectură, ele trebuie rescrise.
- Mari ca dimensiuni și, prin urmare, devin dificil de gestionat.
- Pentru a adăuga un nou serviciu, sistemul de operare complet trebuie modificat.
2. Microkernel
Un microkernel este, de asemenea, denumit MK și este diferit de un nucleu tradițional sau nucleu monolitic. In acest, serviciile utilizatorului și serviciile nucleului sunt implementate în două spații de adrese diferite: spațiu utilizator și spațiu kernel . Deoarece folosește spații diferite pentru ambele servicii, deci, dimensiunea microkernel-ului este redusă, ceea ce reduce și dimensiunea sistemului de operare.
Microkernel-urile sunt mai ușor de gestionat și întreținut în comparație cu nucleele monolitice. Totuși, dacă va exista un număr mai mare de apeluri de sistem și schimbarea contextului, atunci s-ar putea reduce performanța sistemului făcându-l lent.
Aceste nuclee folosesc un sistem de transmitere a mesajelor pentru a gestiona cererea de la un server la altul.
Doar unele servicii esențiale sunt furnizate de microkernel-uri, cum ar fi definirea spațiilor de adresă de memorie, IPC (Interprocess Communication) și managementul proceselor. Alte servicii, cum ar fi rețelele, nu sunt furnizate de Kernel și gestionate de un program de spațiu utilizator cunoscut sub numele servere .
Unul dintre principalele dezavantaje ale nucleelor monolitice este că o eroare în nucleu poate prăbuși întregul sistem, poate fi eliminat în microkernel. Ca și într-un microkernel, dacă un proces de nucleu se blochează, blocarea întregului sistem poate fi prevenită prin repornirea serviciilor cauzate de erori.
Exemple de Microkernel sunt L4, AmigaOS, Minix, K42 , etc.
Avantaje
- Microkernel-urile pot fi gestionate cu ușurință.
- Un nou serviciu poate fi adăugat cu ușurință fără a modifica întregul sistem de operare.
- Într-un microkernel, dacă un proces de kernel se prăbușește, este totuși posibil să previi prăbușirea întregului sistem.
Dezavantaje
miez microlitic
- Există mai multe cerințe de software pentru interfațare, ceea ce reduce performanța sistemului.
- Managementul proceselor este foarte complicat.
- Erorile de mesagerie sunt greu de remediat.
3. Kernel hibrid
Miezurile hibride sunt cunoscute și ca nuclee modulare și este combinația atât a monoliticului, cât și a microkernelurilor. Profită de viteza nucleelor monolitice și de modularitatea micro-nucleelor.
Un nucleu hibrid poate fi înțeles ca versiunea extinsă a unui microkernel cu proprietăți suplimentare ale unui nucleu monolitic. Aceste nuclee sunt utilizate pe scară largă în sistemul de operare comercial, cum ar fi diferite versiuni de MS Windows.
Este mult similar cu un microkernel, dar include și un cod suplimentar în spațiul kernelului pentru a îmbunătăți performanța sistemului.
Nucleele hibride permit rularea unor servicii precum stiva de rețea în spațiul kernel pentru a reduce performanța în comparație cu un microkernel tradițional, dar încă permite rularea codului kernel-ului (cum ar fi driverele de dispozitiv) ca servere în spațiul utilizatorului.
Exemple de kernel hibrid sunt Windows NT, Netware, BeOS etc.
Avantaje:
- Nu există nicio cerință pentru o repornire pentru testare.
- Tehnologia terță parte poate fi integrată rapid.
Dezavantaje:
- Există posibilitatea apariției mai multor erori cu mai multe interfețe de trecut.
- Menținerea modulelor poate fi o sarcină confuză pentru unii administratori, mai ales atunci când se confruntă cu probleme precum diferențele de simboluri.
4. Nanokernel
Așa cum sugerează și numele, în Nanokernel, codul complet al nucleului este foarte mic, ceea ce înseamnă că codul care se execută în modul privilegiat al hardware-ului este foarte mic . Aici termenul nano definește un nucleu care acceptă o rezoluție de ceas în nanosecunde.
Exemple de Nanokernel sunt EROS etc.
Avantaje
este egal cu java
- Oferă abstracții hardware chiar și cu o dimensiune foarte mică.
Dezavantaje
- Nanokernel-ul nu are servicii de sistem.
5. Exokernel
Exokernel este încă în curs de dezvoltare și este abordarea experimentală pentru proiectarea sistemului de operare.
Acest tip de nuclee este diferit de alte nuclee ca în aceasta; protecția resurselor este ținută separată de management, ceea ce ne permite să realizăm personalizarea specifică aplicației.
Avantaje:
- Sistemul bazat pe exokernel poate încorpora mai multe sisteme de operare de biblioteci. Fiecare bibliotecă exportă un API diferit, cum ar fi unul poate fi utilizat pentru dezvoltarea interfeței de utilizare la nivel înalt, iar celălalt poate fi utilizat pentru control în timp real .
Dezavantaje:
- Designul exokernel-ului este foarte complex.
Ce este Kernel Panics?
După cum am discutat deja, acel nucleu controlează întregul sistem computerizat; prin urmare, dacă se blochează, poate distruge întregul sistem. În MacOS și Linux, un astfel de eveniment nedorit este cunoscut sub numele de „ Kernel Panic.' Pentru a recupera din kernel Panic, trebuie să repornim sistemul.
De obicei, aceste panică ale nucleului sunt cauzate de probleme de comunicare hardware. Prin urmare, dacă apar panici repetate ale nucleului, atunci încercați să deconectați dispozitivele mai puțin necesare sau inutile și verificați dacă problema este rezolvată sau nu.