Dar ce face nucleul Linux? Cum funcționează? Care sunt principalele sale sarcini? Acesta este un subiect foarte extins și vom încerca să îl dezasamblat în acest articol.
Ce face kernelul Linux?
Dar, înainte de a analiza modul în care funcționează această funcție sau funcția nucleului sistemului de operare, să analizăm ce răspunde în general. Kernel-ul oferă o abstractizare pentru programatorii care dezvoltă programe pentru platforma Linux. Această abstracție vă permite să simplificați sarcini complexe. Termenul de abstractizare în informatică înseamnă a ascunde mecanisme complexe și algoritmi pentru o funcție mai simplă și mai standard.
Firește, nucleul nu este singurul software care oferă o abstractizare, cu atât mai important este nivelul de abstractizare oferit de șoferi. Nucleul nu trebuie să știe cum să lucreze cu un anumit dispozitiv, deoarece conducătorii auto sunt responsabili pentru acest lucru. Prin urmare, kernelul poate lucra pe diferite echipamente.
Luați, de exemplu, citirea și scrierea datelor în memorie. Fiecare placa de baza pot avea diferite controlere de memorie, iar computerul poate rula pe un procesor ARM, Intel, AMD, SPARC, PowerPC sau MIPS. Dar nu va conta pentru programul Hello World, precum și de bază oferă o interfață unificată pentru toate aceste platforme.
Acum, să ne uităm exact la funcțiile pe care le oferă nucleul sau, cu alte cuvinte, ce abstracțiuni obținem:
- RAM - citirea și scrierea datelor în RAM;
- Permanent storage - Citirea și scrierea datelor pe dispozitive de stocare permanente;
- Sistem de fișiere virtuale;
- Lucrul cu rețelele fizice (Ethernet, Wireless, LTE, switch-uri, Bluetooth);
- Rețele virtuale;
- Partajarea timpului CPU cu programe;
- CPU balancing load and priorities;
Suport pentru dispozitive externe:
- Medii de stocare USB detașabile;
- Camere web;
- Șoareci și tastaturi;
- Permisiuni de fișiere pentru utilizatori și grupuri;
- Permiteți accesul la resursele de sistem;
Datorită funcțiilor de mai sus ale kernel-ului Linux, dezvoltarea programului devine mai ușoară. Kernel-ul implementează toate acestea cu apeluri de sistem. În continuare vom examina în detaliu mai multe funcții.
Stocarea datelor
În plus, nucleul izolează fiecare proces într-un spațiu de memorie separat, ceea ce înseamnă că procesul nu are nevoie să știe dacă acesta aparține memoria lui, pentru că toată memoria disponibilă îi aparține. Această separare mărește securitatea sistemului.
Se pare că lucrurile sunt în depozit constant. Kernelul se ascunde din programele de diferență dintre interfețele SATA, PATA, SCSI, USB, M2 și alte protocoale de stocare. Un program poate funcționa cu orice suport media și orice sistem de fișiere acceptat fără modificări ale programului. Acest lucru crește reutilizarea codului și productivitatea dezvoltatorului.
Accesul la rețea
Din fericire, în acest moment cele mai populare protocoale este atât IPv4 și IPv6. În ceea ce privește alte protocoale de rețea, cum ar fi DECnet, IPX, AppleTalk, acestea sunt susținute de kernel, dar face cu greu sens să le folosească în programele actuale.
Programarea sarcinilor
Programarea timpului CPU este un subiect foarte mare și complex. Nu ne vom atinge de algoritmii de programare, suntem interesați doar de sarcinile kernelului Linux în gestionarea fiecărui proces.
Înainte de apariția proceselor multi-core, computerele ar putea efectua o singură sarcină la un moment dat. Fiecare proces a primit o parte echilibrată a timpului și după ce a fost dat un alt proces. A fost implementat atât de repede încât sa creat iluzia proceselor care rulează simultan. Acum, odată cu apariția procesoarelor cu mai multe nuclee, performanța a crescut foarte mult, dar planificarea timpului CPU nu a trecut nicăieri.
Fiecare proces are nevoie de timp CPU, iar nucleul garantează că fiecare proces va primi în ordinea coadajului. În plus, unele procese trebuie să întârzie sau să aștepte intrarea / ieșirea, iar acesta este și nucleul. În timp ce procesul este în așteptare, un alt proces va fi executat pe procesor, iar apoi procesul inițial va primi timpul său. Planificarea permite programatorului să nu aibă grijă de numărul de procese în execuție.
Kernel-ul Linux conține un număr mare de abstracții și este prea mare ca o persoană obișnuită să înțeleagă totul. Dar, cu toate acestea, dacă nu, fiecare dezvoltator ar trebui să implementeze totul manual, iar acest lucru va dura de mai multe ori mai mult timp. Sper că informațiile despre funcțiile kernelului Linux ți-au fost utile.