Dark Mode

Sari la continut

Linux (nucleul)

De la Wikipedia, enciclopedia libera
Desi acest articol contine o lista de referinte bibliografice, sursele sale raman neclare deoarece ii lipsesc notele de subsol.
Puteti ajuta introducand citari mai precise ale surselor.
Linux
Autor initialLinus Torvalds[1]
DezvoltatorLinus Torvalds si mii de colaboratori
Versiune initiala[2]
Ultima versiune6.19.3[3] ()
Repogit.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Scris inC
Platformaarhitectura ARM
Atmel AVR[*][[Atmel AVR (family of microcontrollers)| ]]
Blackfin[*][[Blackfin (family of embedded DSP microprocessors)| ]]
DEC Alpha[*]
ETRAX CRIS[*][[ETRAX CRIS (series of CPUs)| ]]
Itanium[*]
Arhitectura MIPS
PA-RISC[*]
PowerPC
SPARC
SuperH[*][[SuperH (instruction set architecture by Hitachi)| ]]
TILE64[*][[TILE64 | ]]
Unicore[*][[Unicore | ]]
Xtensa[*][[Xtensa (instruction set architecture)| ]]
Motorola 68000 family[*][[Motorola 68000 family (series of microprocessors)| ]]
IBM System/390[*]
x86
x86_64
z/Architecture[*]
TipNucleu
LicentaLicenta Publica Generala GNU versiunea 2
Prezenta online
kernel.org
Modifica date / text
Nucleul Linux e utilizat ubicuitar pe diferite tipuri de hardware si este suportat de o abundenta de software, libera si proprietara

Nucleul Linux (in engleza ,,kernel") reprezinta nucleul sistemului de operare deschis care a fost creat de Linus Torvalds in 1991 si care a fost imbunatatit ulterior cu ajutorul programatorilor din intreaga lume.

Acesta a fost dezvoltat initial pentru microprocesorul Intel 80386, insa ulterior a fost portat pe multe alte platforme. Este scris aproape in intregime in limbajul de programare C, impreuna cu niste extensii GNU C si cu cateva linii de cod scrise in limbajul de asamblare.

Dezvoltat sub licenta GNU GPL (GNU General Public License), codul sursa al nucleului Linux este software liber.

Nucleul este cel mai bine cunoscut ca fiind principala componenta a sistemului de operare GNU/Linux. Distributiile de software bazate pe nucleul Linux se numesc Distributii GNU/Linux.

Proiectul a fost lansat in anul 1991 cu faimosul mesaj aparut in reteaua Usenet comp.os.minix care includea urmatoarea fraza:

"Creez un sistem de operare (liber) - e doar o pasiune, nu va fi la fel de mare si de profesional ca GNU - pentru calculatoarele compatibile AT 386(486)..." [1]

Pana in acel moment, proiectul GNU crease multe componente necesare unui sistem de operare liber, dar nucleul sau, numit "GNU Hurd", nu era complet si nici disponibil. Sistemul de operare BSD nu era inca eliberat de constrangerile legale, ceea ce a permis nucleului Linux sa umple golul respectiv si, desi avea initial o functionalitate limitata, a atras comunitatea dezvoltatorilor de software si a utilizatorilor. Pana astazi, mii de programatori si-au adus contributia la codul sursa al nucleului.

La inceput, "Linux" a fost numele nativ al nucleului. Termenul "nucleu" inseamna aplicatia de sistem de nivel scazut ("low-level") care creeaza nivelul de abstractizare a componentelor hardware, controleaza accesul la hard-disc si la sistemul de fisiere, permite lucrul multitasking, accesul distribuit si la reteaua (locala), constrangerile de securitate informatica. Nucleul Linux nu este un sistem de operare complet (cum este el cunoscut in mod uzual). Un sistem complet bazat pe nucleul Linux este mai cunoscut ca "Linux", desi unii prefera sa-l numeasca GNU/Linux. Exista si o controversa privind modul de referire la acest sistem de operare. Oamenii fac deseori confuzie intre nucleul si sistemul de operare Linux, ceea ce poate duce la aparitia unor termeni gresiti, cum ar fi ideea ca Linus Torvalds a scris sau a coordonat si alte componente ale sistemului de operare, in afara de nucleu.

  • Aprilie 1991 - Linus Torvalds, la varsta de 21 de ani, incepe sa se gindeasca la un sistem de operare simplu. A pornit cu crearea unui comutator de task-uri de sistem (folosind instructiunile procesorului Intel 386) si a unui driver de terminal.
  • 25 august 1991 - Linus a trimis mesajul la grupul de stiri comp.os.minix: [2]
"Scriu un sistem de operare (gratuit) (e doar un hobby, nu va fi mare si profesional ca gnu) pentru clone de 386(486) AT. Ma gandesc la asta din aprilie, si incepe sa fie gata. As dori orice fel de feedback referitor la lucruri care plac/displac oamenilor la minix, fiindca SO-ul meu i se aseamnana cumva (aceeasi structura fizica a sistemului de fisiere (din motive practice) printre altele).
Tocmai am portat bash(1.08) si gcc(1.40), si se pare ca merg. Asta inseamna ca o sa obtin ceva practic in cateva luni [...] Da - nu are nici un pic de cod minix, si are un sistem de fisiere multi-thread. NU este portabil (foloseste comutare de task 386 etc), si probabil ca nu va suporta niciodata alt harddisk decat AT, fiindca altceva nu am :-(.
[...] E scris cel mai mult in C, dar multi n-ar numi C ceea ce scriu eu. Foloseste fiecare feature al lui 386 pe care m-am putut gandi, fiindca a avut si scopul de a ma invata pe mine despre 386. Cum am mai spus, foloseste un MMU, atat pentru paginare (nu pe disc inca) si segmentare. Segmentarea e cea care il face cu ADEVARAT dependent de 386 (fiecare task are un segment de 64Mb pentru cod & date - maxim 64 task-uri in 4Gb. Oricui ii trebuie mai mult decat 64Mb/task - ghinion). [...] Unele din fisierele mele "C" (mai ales mm.c) au cam tot atata limbaj de asamblare cat C. [...] Spre deosebire de minix, mie imi cam PLAC intreruperile, deci intreruperile sunt tratate fara a se incerca ascunderea motivului din spatele lor"
  • Septembrie 1991 - Este lansat Linux versiunea 0.01. (10.239 linii de cod.)
  • Octobrie 1991 - Este lansat Linux versiunea 0.02. [3]
  • Decembrie 1991 - Este lansat Linux 0.11. Aceasta versiune este prima versiune self-hosted. (adica: se poate compila Linux 0.11 sub Linux 0.11)
  • 19 Ianuarie 1992 - Primul post pe alt.os.linux newsgroup. [4]
  • 31 Martie 1992 - Newsgroup-ul comp.os.linux este creat. [5]
  • Martie 1992 - Linux versiunea 0.95 este prima versiune capabila de a rula X Window System.
  • Anul 1993, si inceputul anului 1994 - 15 versiuni in dezvoltare 0.99.*, cu 0.99.11 (Iulie 1993) introducand BogoMips in nucleu
  • 14 Martie 1994 - Este lansat Linux 1.0.0. (176.250 linii de cod.)
  • Martie 1995 - Este lansat Linux 1.2.0 (310.950 linii de cod.)
  • 9 Mai 1996 - Pinguinul Tux este propus ca mascota Linux
  • 9 Iunie 1996 - Este lansat Linux 2.0.0. (777.956 linii de cod.)
  • 25 Ianuarie 1999 - Este lansat Linux 2.2.0, la inceput cu multe defecte. (1,800,847 linii de cod.)
  • 18 Decembrie 1999 - Patchuri pentru IBM mainframe pentru 2.2.13 sunt publicate, aducandin cele mai mari intreprinderi.
  • 4 Ianuarie 2001 - Este lansat Linux 2.4.0. (3.377.902 linii de cod.)
  • 17 Decembrie 2003 - Este lansat Linux 2.6.0. (5.929.913 linii de cod.)

Dezvoltand mai departe propriul cod si integrand modificari operate de alti programatori, Linus Torvalds continua sa lanseze noi versiuni ale nucleului Linux. Aceste versiuni se numesc nucleuri vanilla, insemnand ca nu au fost modificate pentru nimeni. Multi furnizori de sisteme de operare GNU/Linux isi modifica kernelul produsului lor, in principal pentru a adauga suport pentru drivere sau feature-uri care nu au fost oficial etichetate ca stabile, in timp ce alte distributii, cum ar fi Slackware, se bazeaza pe nucleuri vanilla.

Numerotarea versiunilor

[modificare | modificare sursa]

Numarul de versiune al nucleului Linux consta in prezent din patru numere, ca urmare a unei recente modificari in vechea politica a schemei de versiuni cu trei numere. De exemplu, sa presupunem ca numarul versiunii se compune astfel: A.B.C[.D] (de ex. 2.2.1, 2.4.13 sau 2.6.12.3).

  • Numarul A reprezinta versiunea de nucleu. Este schimbat cel mai rar, si doar cand au loc schimbari majore in cod si in conceptia nucleului. El a fost modificat de doua ori in istoria nucleului: In 1994 (versiunea 1.0) si in 1996 (versiunea 2.0).
  • Numarul B reprezinta revizia majora a nucleului. Numerele pare indica un release stabil, adica unul considerat potrivit pentru productie, cum ar fi 1.2, 2.4 sau 2.6. Numerele impare sunt release-uri in dezvoltare, cum ar fi 1.1 sau 2.5. Ele sunt folosite pentru testarea feature-urilor si driver-elor noi pana cand acestea devin suficient de stabile pentru a fi incluse intr-un release stabil.
  • Numarul C indica revizia minora a nucleului. In vechea schema de versiuni, cu trei numere, aceasta era modificata cand erau implementate in nucleu patch-uri de securitate, bufix-uri, feature-uri noi sau driver-e. In noua politica, insa, ea nu se modifica decat la introducerea de noi feature-uri sau driver-e; reparatiile minore sunt tratate de numarul D.
  • Un numar D a aparut prima oara cand a fost detectata o eroare grava, care a necesitat reparare imediata, in codul de NFS din 2.6.8. Totusi, nu erau suficiente alte modificari pentru a justifica lalnsarea unei noi revizii minore (care ar fi fost 2.6.9). Astfel, s-a lansat 2.6.8.1, singura modificare fiind repararea acelei erori. Odata cu 2.6.11, aceasta a fost adoptata ca noua politica oficiala de versionare. Bugfix-urile si patch-urile de securitate sunt acum tratate de al patrulea numar, pe cand modificarile mai mari sunt implementate in schimbarile reviziilor minore (numarul C).

In timp ce Linus Torvalds supervizeaza modificarile codului si release-urile ultimelor versiuni de nucleu, el a delegat mentenanta versiunilor mai vechi altor programatori:

Versiunea nucleului Mentinator
2.0 David Weinehall
2.2 Marc-Christian Petersen (fost Alan Cox)
2.4 Marcelo Tosatti
2.6 Andrew Morton / Linus Torvalds

Alti programatori de nucleu linux sunt Robert Love si Ingo Molnar . (Vezi fisierul cu echipa de mentenanta Linux).

Istoria versiunilor stabile

[modificare | modificare sursa]
  • Versiunea 1.0 din Martie 1994 suporta doar masini cu un singur procesor i386.
  • Versiunea 1.2 din Martie 1995 a adaugat suport pentru Alpha, Sparc si Mips.
  • Versiunea 2.0 din Iunie 1996 a adaugat suport pentru mai multe familii de procesoare si a inclus suport pentru SMP.
  • Versiunea 2.2 din Ianuarie 1999 (Minunata lume a Linux 2.2 Arhivat in , la Wayback Machine.).

Nucleul Linux include multitasking real, memorie virtuala, biblioteci partajate, demand loading, executabile partajate copy-on-write, gestiunea memoriei corecta, si retele TCP/IP.

Astazi, Linux este un nucleu monolitic cu incarcare de module. Device driver-e si extensii de nucleu ruleaza tipic in inelul 0, cu acces total la hardware, desi unele ruleaza in spatiul utilizator. Spre deosebire de nucleele monolitice standard, device driver-ele se configureaza usor ca module, si se incarca sau se descarca in timpul rularii sistemului. Tot spre deosebire de nucleele monolitice standard, device driver-ele pot fi pre-empted in anumite conditii. Acest din urma feature a fost adaugat pentru a trata intreruperile hardware corect, si pentru a imbunatati suportul pentru multiprocesare simetrica. Preemptiunea de asemenea amelioreaza latenta, crescand viteza de raspuns si facand Linux mai potrivit pentru aplicatii de timp real.

Faptul ca Linux nu este un microkernel a fost subiectul principal al celebrului flame war intre Linus Torvalds si Andy Tanenbaum pe comp.os.minix in 1992. [8] Arhivat in , la Wayback Machine. [9]

Codul sursa complet al diferitelor versiuni ale nucleului Linux pot fi gasite la http://lxr.linux.no .

System Call Interface pentru source, Linux Standard Base pentru programe compilate. SCI-ul se compune din cca 380 de apele de sistem.

Limbaje de programare

[modificare | modificare sursa]

Nucleul Linux este scris in versiunea limbajului de programare C suportata de compilatorul GNU GCC (care suporta un superset al C-ului standard), impreuna cu unele sectiuni relativ scurte de cod scrise in limbajul de asamblare al arhitecturii tinta (la ultima numaratoare, Linux suporta aproximativ 20 de familii diferite de procesoare). Datorita extensiilor C suportate de compilatorul GCC, acesta a fost (impreuna cu setul de unelte asociat) multa vreme singurul compilator capabil sa compileze corect un nucleu Linux. Mai recent, Intel sustine ca si-a modificat compilatorul C astfel incat si acesta sa poata modifica nucleul.

Sunt folosite, pe langa C, si multe alte limbaje, in primul rand in legatura cu procesul de 'construire' a nucleului (metodele prin care este creata din surse imaginea bootabila). Printre acestea se numara Perl, Python, si diferite limbaje de shell scripting. Unele driver-e ar putea fi scrise si in C++, Fortran, sau alte limbaje, dar acest comportament este cu tarie nerecomandat. Sistemul de construire a nucleului suporta doar GCC pentru compilarea nucleului si a driver-elor.

Portabilitate

[modificare | modificare sursa]

Desi initial nu s-a intentionat ca Linux sa fie un sistem de operare portabil, el este acum unul din cele mai mult portate nuclee de sistem de operare (desi NetBSD a fost portat si el pe aproape tot atatea arhitecturi), ruland pe o gama larga de sisteme, de la iPAQ (un calculator handheld) pana la IBM System z9 (un server mainframe masiv care poate rula sute sau chiar mii de instante concurente de Linux). Linux este gandit pentru a rula ca sistem de operare principal pe noua arhitectura de supercalculator Blue Gene de la IBM, cand aceasta va fi terminata. Linus a inclus, probabil in gluma, BogoMips in nucleu ca pseudo-unealta de comparare a performantelor.

Este important de notat ca eforturile lui Linus au fost indreptate cu succes si catre un alt fel de portabilitate. Portabilitate, conform lui Linus, era abilitatea de a compila aplicatii dintr-o varietate de surse pe sistemul sau; astfel Linux a devenit la inceput popular in parte pentru ca necesita cel mai mic efort de a face sa functioneze pe el aplicatii populare sub licenta GPL, precum si alte aplicatii open source.

Linux ruleaza in prezent pe urmatoarele arhitecturi:

O lista completa a portarilor Linux se gaseste aici Arhivat in , la Wayback Machine..

Termeni de licentiere

[modificare | modificare sursa]
Informatii de bootare la Linux 5.13.5

Initial, Torvalds a lansat Linux sub o licenta care interzicea orice exploatare comerciala a lui. Aceasta a fost insa inlocuita curand cu GNU General Public License (exclusiv versiunea 2). Aceasta licenta permite distribuirea si chiar vanzarea unor versiuni posibil modificate de Linux dar necesita ca toate copiile sa fie eliberate sub aceeasi licenta si insotite de codul sursa.

Torvalds a descris decizia de a licentia Linux sub GPL ca fiind "cel mai bun lucru pe care l-am facut vreodata." [10] Arhivat in , la Wayback Machine.

O intrebare generala privind aplicarea GPL al Linux este daca modulele de nucleu incarcabile sunt considerate "lucrari derivate" sub legea dreptului de autor, si de aceea intra sub incidenta GPL. Torvalds si-a afirmat opinia ca modulele care folosesc doar o sumultime limitata, "publica" a interfetelor nucleului pot fi uneori considerate lucrari independente, permitand astfel unele driver-e doar binare (fara sursa publica) si alte module care nu respecta GPL. Insa nu toti contribuitorii la nucleu sunt de acord cu aceasta interpretare, si chiar si Torvalds admite ca multe module de nucleu sunt evident lucrari derivate, si intr-adevar el afirma ca ,,modulele de nucleu SUNT implicit derivate"; finalmente, asemenea chestiuni se pot rezolva doar in tribunal.

Linux este o marca inregistrata a lui Linus Torvalds.

Tux

Mascota Linux este un pinguin numit Tux, creat de Larry Ewing folosind prima versiune publica a lui GIMP (0.54).

Exista mai multe variante ale pinguinului Tux, unele in 3D.

Mascota este un pinguin pentru ca, asa cum a spus Torvalds, "Lui Linus ii plac pinguinii. Asta e." Numele Tux vine de la (T)orvalds (U)ni(X). [11] Arhivat in , la Wayback Machine.

In Linux, un "panic" este o eroare de sistem nerecuperabila detectata de nucleu, spre deosebire de unele erori similare detectate de cod din spatiul utilizator. Codul nucleului poate indica o astfel de stare prin apelul functiei panic aflate in fisierul header sys/system.h. Totusi, majoritatea panic-urilor sunt rezultatul unor exceptii procesor netratate in codul de nucleu, cum ar fi referinte la adrese de memorie invalide. Acestea indica in mod tipic un bug undeva pe lantul de apel care a condus la panic.

  1. ^ https://web.archive.org/web/20150315012537/http://www.linuxfoundation.org/about. Lipseste sau este vid: |title= (ajutor)
  2. ^ ,,It's official, Linux was released on September 17, 1991" (in engleza). Accesat in .
  3. ^ Greg Kroah-Hartman (). ,,Linux 6.19.3". Accesat in .
  • Torvalds, Linus; Diamond, David (2001). Just For Fun: The Story of an Accidental Revolutionary. HarperBusiness. ISBN 0-06-662072-4 (hardcover); HarperAudio ISBN 0-694-52539-1 (caseta audio, editie prescurtata, citita de David Diamond) - despre nasterea nucleului Linux
  • [12], Nikolai Bezroukov. Portraits of Open Source Pioneers. Capitolul 4: A benevolent dictator

(Carte electronica Softpanorama).

  • LinkSys and binary modules, LWN.net Weekly Edition, 16 octombrie 2003.
  • Revolution OS - un documentar despre istoria Linux continand cateva interviuri cu hackeri importanti, printre care si Torvalds

Legaturi externe

[modificare | modificare sursa]
Wikibooks are mai multe despre subiectul: Linux (nucleul)
Commons
Wikimedia Commons contine materiale multimedia legate de Linux (nucleul)

Urmatoarele ar trebui adaugate

Linux - versiunea 2.6

[modificare | modificare sursa]

Pagini ce contin legaturi catre multiple informatii suplimentare

[modificare | modificare sursa]