Care este nucleul

# 65279; kernel, așa cum sugerează și numele, este o inimă de orice distribuție Linux (și alte sisteme de operare prea). Acesta este responsabil pentru interacțiunea aplicațiilor personalizate (în sensul cel mai larg al cuvântului) cu hardware-ul computerului.

Atribuțiile de bază ale majorității POSIX-sisteme (și Linux nu este o excepție) au inclus: distribuirea timpului procesorului între sarcini, oferind comunicare inter-proces, de management al memoriei - atât interacțiunea fizică și virtuală cu dispozitive, inclusiv set, accesul la dosar sistemele care acceptă I / O funcții ale datelor.

Cu toate acestea, din punct de vedere al kernel-ului utilizatorului - (aproape) programul normal, care este fișier binar executabil, din care funcționalitatea este definită în configurația și aducând-o în stare de lucru pentru a compila de la sursă și de legare (legarea) cu funcțiile bibliotecii C.

Din toate celelalte programe nucleu diferă în trei caracteristici importante. În primul rând, funcționează într-o zonă de memorie separată, care se numește spațiul kernel-ului. Și în care procesele de acces ale utilizatorilor nu au - se aplică, să zicem, la dispozitivele I / O care au nevoie prin intermediul sistemului de apeluri la subsistemele procedura de kernel corespunzătoare. Toate celelalte programe sunt amplasate în așa-numitul spațiu de memorie de utilizator.

A doua caracteristică a nucleului ca un program executabil - este faptul că, spre deosebire de toate celelalte programe, acesta trebuie să fie întotdeauna punct de vedere fizic în memoria RAM - adică, nu se poate svopirovatsya. Ceea ce este clar - pentru că dacă o parte a kernel-ului, managerul de memorie virtuală, vor fi schimbate în swap, sistemul ar fi fără mijloacele de a spate de extracție. Alte programe distribuite în spațiul utilizator între RAM fizic și spațiu de swap - de fapt, nu aveți nici posibilitatea, nici, cel mai probabil, nevoie pentru a determina ce părți ale unei singure memorie virtuală utilizează în acest moment.

A treia caracteristică este nucleul care este încărcat înainte de a deveni disponibile toate celelalte componente ale sistemului, în special, funcțiile bibliotecii oferind funcționalitatea acestuia. Prin urmare, este întotdeauna o legată în mod static bibliotecile corespunzătoare - în cazul kernel-ul Linux este aproape întotdeauna sistemul principal al funcțiilor bibliotecii limbajului C, glibc.

Din ceea ce a fost spus în primul paragraf implică faptul că creșterea funcționalitatea de bază a lungul timpului este inevitabilă - pentru a sprijini noi dispozitive menținând în același timp compatibilitatea cu dispozitive mai vechi, noile sisteme de fișiere, protocoale de rețea, și așa mai departe. Ceea ce este la fel ca și duce inevitabil la lărgirea nucleului, consumul de memorie și viteza de cădere.

O parte din problema poate fi rezolvată în mod individual configurarea kernel-ului. Acesta vă permite să fie incluse în funcția esențială a nucleului și, pe de altă parte, opriți cei care în acest sistem nu este utilizat. Dar ce putem spune despre caracteristicile care sunt necesare din când în când? Și apoi, în general, este necesară numai?

Soluția generală a acestei probleme a fost găsită sub formă de module încărcabile. Acesta - fragmente de cod, oferind anumite caracteristici de bază și funcții în spațiul său de memorie. Dar nu permanent, și logare după cum este necesar - fie manual, comenzi corespunzătoare, sau în mod automat. Și care poate fi scos din memorie atunci când trec o nevoie, fără repornirea sistemului - până la data viitoare când vor fi necesare din nou

Prin urmare, miezul poate fi divizat în monolitică (cu încorporat tot ceea ce este necesar) și modulare. Cu toate acestea, diviziunea este - pur teoretică: în toate nucleele, în principiu, modulele de sprijin (printre ei, și Linux), ele sunt într-o anumită cantitate de utilizare. Purely nucleele monolitice sunt semnificative numai pentru anumite aplicații speciale. Astfel, kernel-ul Linux este un sistem modular-monolit.

Cele mai multe funcții de kernel pot fi construite fie în ea și implementat ca plug-in-uri. Întrebarea cu privire la care este mai bine - o scufundare rigidă sau o conexiune modulară, subiectul dezbaterii, și vom atinge pe una dintre note. Cu toate că unele funcții sunt posibile doar două state - o includere rigidă în kernel-ul sau de închidere completă. Alții caracteristici sunt disponibile numai ca module - inclusiv drivere de dispozitiv de marcă în mod obișnuit de la producător.

Există o opinie că nucleul Linux - unul și numai. Acest lucru este adevărat, dar nu întregul adevăr. Într-adevăr, nucleul Linus - canonic. În practică, cu toate acestea, cu excepția celor actuale ramurile sale (în prezent - 2.6), în care noua versiune (2.6.x) la fiecare moment de timp, periodic dezvoltă și suplimente pentru cel puțin o ramură anterioară (în prezent, 2.4). Iar una dintre ramurile mai vechi (acum - 2.2) se menține la nivelul de corectare a erorilor. Erori, desigur, au un loc de a fi și în ramura curentă, în cazul în care acestea sunt identificate în mod activ și corectate, care formează o separat „corectare“ ramură (2.6.xx.y).

Există proiecte de bază completează caracteristici extrem de specializate, cum ar fi securitatea sporită, virtualizare și suport paravirtualizare, și altele. Dezvoltat în cadrul lor patch-uri nu sunt incluse de obicei în arborele principal, și ei coexistă cu ei ca ramuri separate.

Pe parcursul activității sale cu LINUX am avut de a colecta nucleul - în diferite distribuții pe hardware diferite. Ultimul exercițiu în acest domeniu a fost motivul pentru care acest ciclu au fost efectuate pe o mașină cu un procesor Intel Core 2 Duo, placa de baza pe chipset-ul G35 de la Intel grafica, de asemenea, integrate și podul de sud ICH9, RAM 6GB, două hard disk-uri și SATA CD / DVD conduce cu aceeași interfață - un singur PATA-dispozitive disponibile pe sistem. configurație parte descrisă mai devreme - aceasta poate fi considerată ca o mașină destul de tipic modern, pe platforma Intel.