Linux (kernel): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m WPCleaner v2.01 - Fixed using Wikipedia:Check Wikipedia (Liste con <br> inutili)
La versione del kernel è la 6.16.8 uscita pochi giorni fa quindi ho cambiato il numero della versione corrente
Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile
 
(69 versioni intermedie di 51 utenti non mostrate)
Riga 1:
{{Nota disambigua|la famiglia di sistemi operativi basati su questo [[kernel]]|Linux}}
{{Sistema operativo
|nome = Linux
|logo = Tux.svg
|screenshot = KNOPPIX booting.png
|didascalia = Caricamento del kernel Linux 2.6.24.4, [[Knoppix]] 5.3.1
Riga 8 ⟶ 6:
|famiglia = [[POSIX]]
|prima_versione_pubblicata = 1.0
|data_prima_pubblicazione = 13 marzo [[1994]]<ref>{{Cita web|1=http://www.kerneltrap.com/node/14002|2=Linux: The 0.01 Release|3=9 gennaio 2011|lingua=en|dataarchivio=10 giugno 2011|urlarchivio=https://web.archive.org/web/20110610190348/http://www.kerneltrap.com/node/14002|urlmorto=sì}}</ref>
|ultima_versione_pubblicata = 6.16.8
|data_ultima_pubblicazione = 19 settembre 2025
|tipo_kernel = [[Kernel#Kernel monolitici|Monolitico]]
|piattaforme_supportate = [[Alpha AXP]], Sun SPARC, [[Motorola 68000]], [[PowerPC]], [[Architettura ARM|ARM]], Hitachi SuperH, [[IBM]] S/390, [[Architettura MIPS|MIPS]], [[Hewlett -Packard|HP]] PA-RISC, [[Intel]] IA-64, [[AMD]] x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850,Intel Quarz, Tensilica Xtensa, Analog Devices Blackfin<ref>{{cita web |titolo=Piattaforme supportate dal kernel Linux |url=https://www.kernel.org/ |accesso=23 luglio 2010 |lingua=en}}</ref>
|interfaccia_utente = Svariati [[Ambiente desktop|Ambienti Desktop]] operanti su [[X Window]], [[Command line interface|CLI]] o [[Sistema embedded|sistemi embedded]]
|tipologia_licenza = libero
Riga 16:
|stadio_sviluppo = In corso (sviluppo continuo)
}}
 
'''Linux''' è un [[kernel]], creato nel [[1991]] da [[Linus Torvalds]] e derivato da [[UNIX]]., Distribuitodistribuito sotto [[licenza di software libero]] [[GNU General Public License|GNU GPLv2]], (anziché [[software proprietario]]), comprendecomprendente anche diversi [[firmware]] sotto licenze non-libere<ref>{{Cita web|https://kernel.org/pub/linux/kernel/COPYING|COPYING|24 marzo 2016|lingua=en}}</ref><ref>{{Cita web|url=https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/firmware/WHENCE?id=HEAD|titolo=index : kernel/git/stable/linux-stable.git|3=24 marzo 2016|lingua=en|urlmorto=sì|urlarchivio=https://web.archive.org/web/20161208072928/http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/firmware/WHENCE?id=HEAD|dataarchivio=8 dicembre 2016}}</ref>. che,Utilizzato utilizzatospesso congiuntamente al [[sistema operativo]] [[GNU]], ideato da [[Richard Stallman]], ha dato vita alalla famiglia di [[sistemi operativi|sistema operativo]] [[Linux]], diffusosidiffusi nelle sue varie [[Distribuzione (Linux)|distribuzioni]] (l'accesso diretto al kernel da parte dell'utente/[[sistemista|amministratore]] in modalità [[user mode]]/[[kernel mode]] si ha attraverso la cosiddetta [[Linux console]]). L'attività di sviluppo è, promossa dalla [[Linux Foundation]] che, ha portato ad una [[standard aperto|standardizzazione]] nota come [[Linux Standard Base]], mentre un tentativo di implementazione di un kernel completamente [[software libero|libero]] è [[Linux-libre]]. L'accesso diretto al kernelrappresentata da parte dell'utente/[[sistemista|amministratore]] in modalità [[user mode]]/[[kernel mode]] si ha attraverso la [[Linux console-libre]].
 
== Storia ==
[[File:Linus_Torvalds.jpeg|thumb|[[Linus Torvalds]]]]
Nell'aprile del [[1991]] [[Linus Torvalds]], uno studente finlandese di [[informatica]] presso l'[[Università di Helsinki]], all'età di 21 anni iniziò a lavorare su alcune semplici idee per un sistema operativo. Iniziò con un ''[[context switch]]'' programmato in [[assembly]] su [[processore]] [[Intel]] 80386 e un [[driver]] da [[terminale (informatica)|terminale]]. A questo punto, il 25 agosto 1991, Torvalds scrisse un post<ref>{{Cita web|lingua=en|titolo=What would you like to see most in minix?|autore=[[Linus Torvalds]]|data=26 agosto 1991|sito=comp.os.minix|url=https://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b|accesso=25 dicembre 2008}}</ref>, di cui è riportata una traduzione:
 
Nell'aprile del [[1991]] [[Linus Torvalds]], uno studente finlandese di [[informatica]] presso l'[[Università di Helsinki]], all'età di 21 anni iniziò a lavorare su alcune semplici idee per un sistema operativo. Iniziò con un ''[[context switch]]'' programmato in [[assembly]] su [[processore]] [[Intel]] 803868086 e un [[driver]] da [[terminale (informatica)|terminale]]. A questo punto, il 25 agosto 1991, Torvalds scrisse un postmessaggio:<ref>{{Cita web|lingua=en|autore=[[Linus Torvalds]]|url=https://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b|titolo=What would you like to see most in minix?|autoresito=[[Linus Torvalds]]comp.os.minix|data=26 agosto 1991|sitoaccesso=comp.os.minix25 dicembre 2008|urlurlarchivio=https://web.archive.org/web/20130515090124/http://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b?dmode=source|accessourlmorto=25 dicembre 2008no}}</ref>, di cui è riportata una traduzione:
 
{{Citazione|Ciao a tutti là fuori che usate minix -
 
{{Citazione|Sto [[programmazione (informatica)|programmando]]facendo un sistema operativo (gratuito) e (solo per hobby, non vuole esseresarà grande e professionale come GNUgnu) per cloni di AT 386(486). È in preparazione da aprile, e sta iniziando aad funzionareessere pronto. Mi piacerebbe saperequalsiasi cosariscontro visu piace eo non vi piace alle persone in Minixminix, siccome il mio Sistema OperativoSO gli assomiglia in parte (frastessa lestruttura altre cose, lo stesso layout fisicofisica del ''filesystem,'' (per ragioni pratiche) fra le altre cose).
 
Ho convertito la shellportato bash (v.1.08) e GCC gcc(v.1.40), e sembranola cosa sembra funzionare. Ciò denotaimplica che otterròavrò qualcosa di funzionantepratico in pochi mesi e mi piacerebbe sapere quali funzionalità vuole la maggior parte della gente. Ogni suggerimento è ben accetto, anche se non possovi prometterviprometto che lo implementerò.}} :-)
 
Linus (torvalds@kruuna.helsinki.fi)
 
PS. Sì - è libero dal codice minix, e ha un fs ''multi-threaded''. NON è portabile (usa il cambio delle attività del 386 ecc.), e probabilmente non supporterà mai nient'altro che dischi rigidi AT, visto che ho solo quelli :-(.|3=Hello everybody out there using minix -
 
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
 
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
 
Linus (torvalds@kruuna.helsinki.fi)
{{Citazione|Sto [[programmazione (informatica)|programmando]] un sistema operativo (gratuito e solo per hobby, non vuole essere grande e professionale come GNU) per cloni di AT 386(486). È in preparazione da aprile, e sta iniziando a funzionare. Mi piacerebbe sapere cosa vi piace e non vi piace in Minix, siccome il mio Sistema Operativo gli assomiglia in parte (fra le altre cose, lo stesso layout fisico del filesystem, per ragioni pratiche).
 
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.|lingua=en}}
Ho convertito la shell bash (v.1.08) e GCC (v.1.40), e sembrano funzionare. Ciò denota che otterrò qualcosa di funzionante in pochi mesi e mi piacerebbe sapere quali funzionalità vuole la maggior parte della gente. Ogni suggerimento è ben accetto, anche se non posso promettervi che lo implementerò.}}
 
Linus aveva iniziato a programmare il kernel su un'architettura [[MINIX]], un sistema operativo libero programmato dal professore universitario [[Andrew Stuart Tanenbaum|Andrew S. Tanenbaum]], che poi però criticò molto il lavoro dello studente finlandese.
 
Dopo la pubblicazione di questo post, molte persone collaborarono allo sviluppo del progetto, e il 5 ottobre 1991 Linus rilasciapubblica la versione 0.02 del kernel, circa un mese dopo deldella rilasciopubblicazione della versione 0.01, che però non ebbe grande successo. Egli scrisse, in occasione deldella rilasciopubblicazione, il seguente post<ref>{{Cita web|lingua=en|titolo=Free minix-like kernel sources for 386-AT|autore=[[Linus Torvalds]]|data=5 ottobre 1991|sito=comp.os.minix|url=https://groups.google.com/group/comp.os.minix/browse_thread/thread/e3df794a2bce97da|accesso=25 dicembre 2008}}</ref>:
 
{{Citazione|Rimpiangete i bei giorni di Minix 1.1, quando gli uomini erano uomini e scrivevano da soli i driver?
Riga 65 ⟶ 82:
copyright o anche di pubblico dominio), mi piacerebbe sentirvi, in modo che
possa aggiungerli al sistema. Sto usando Earl Chews estdio al momento (grazie
per un sistema carino e funzionante, Earl), e lavori simili saranno molto ben accetti.
Il vostro C sarà ovviamente lasciato intatto. Scrivetemi due righe se volete lasciarmi usare il vostro codice.}}
 
[[File:AndrewTanenbaum.JPG|thumb|[[Andrew Stuart Tanenbaum]]]]
 
Fu dato inizio ad un newsgroup ''alt.os.linux'' e il 19 gennaio 1992 fu inserito il primo post.<ref>{{Cita web|lingua=en|titolo=Troubles with Partitions|autore=David W Summers|data=19 gennaio 1992|sito=alt.os.linux / comp.os.minix|url=news://1992Jan19.085628.18752@cseg01.uark.edu|urlarchivio=https://groups.google.com/group/alt.os.linux/msg/c638df159fa15159|accesso=24 dicembre 2008|dataarchivio=24 dicembre 2008|urlmorto=no}}</ref> Nel 31 marzo 1992, alt.os.linux divenne ''comp.os.linux''.<ref>{{Cita web|lingua=en|titolo=It's here!|autore=Alan B Clegg|data=31 marzo 1992|sito=comp.os.linux|url=news://1992Mar31.131811.19832@rock.concert.net|urlarchivio=https://groups.google.com/group/comp.os.linux/msg/81fe3618c4803d1e|accesso=24 dicembre 2008|dataarchivio=24 dicembre 2008|urlmorto=no}}</ref>
 
Presto fu effettuato il porting di [[X Window System]] su Linux. La prima versione di Linux ad essere capace di eseguire X fu la 0.95 nel marzo del 1992. Questo grande salto di numerazione nella versione (da 0.1x a 0.9x) fu dovuto al fatto che si sentiva molto vicina una versione 1.0 senza nessun pezzo mancante. Tuttavia questa sensazione era troppo ottimista e dal 1993 fino agli inizi del 1994 furono rilasciatepubblicate 15 versioni della versione 0.99.
 
Il 14 marzo 1994 fu rilasciatopubblicato Linux 1.0.0, con 176.250 linee di codice. A marzo del 1995, fu rilasciatopubblicato Linux 1.2.0 ({{formatnum:310950}} linee di codice).
 
La versione 2 di Linux, pubblicata il 9 giugno 1996, fu seguita da altre versioni maggiori sotto il prefisso della versione 2:
* 25 gennaio 1999 - RilascioPubblicazione di Linux 2.2.0 ({{formatnum:1800847}} linee di codice).
* 18 dicembre 1999 - Furono pubblicate le [[patch]] per supportare l'architettura dei [[mainframe]] [[IBM System/390]] nella versione 2.2.13, che permisero a Linux di essere installato su macchine di livello enterprise.
* 4 gennaio 2001 - RilascioPubblicazione di Linux 2.4.0 ({{formatnum:3377902}} linee di codice).
* 17 dicembre 2003 - RilascioPubblicazione di Linux 2.6.0 ({{formatnum:5929913}} linee di codice).
* 9 ottobre 2008 - RilascioPubblicazione di Linux 2.6.27 ({{formatnum:9709868}} linee di codice)<ref name="Linux Kernel Data">"[http://www.heise-online.co.uk/open/Kernel-Log-Linux-2-6-27-Released--/features/111671/6#trends Linux Kernel Data]."</ref>.
* 24 dicembre 2008 - RilascioPubblicazione di Linux 2.6.28 ({{formatnum:10195402}} linee di codice).
* 20 ottobre 2010 - RilascioPubblicazione di Linux 2.6.36 ({{formatnum:13499457}} linee di codice).<ref name="autogenerato1">"[http://www.h-online.com/open/features/What-s-new-in-Linux-2-6-36-1103009.html?page=6 Linux Kernel Data]."</ref>
* luglio 2011, per festeggiare il 20º anniversario della nascita di Linux, Torvalds ha deciso di passare ad un sistema di numerazione a 2 cifre, rilasciandopubblicando la versione 3.0 del kernel. L'ultima releaseversione della serie 2.6 è stata la 2.6.39.<br />La prima releaseversione del nuovo sistema di numerazione adottato - la 3.0 - pubblicata contiene {{formatnum:14646952}} righe di codice.
* 8 marzo 2015 - Viene rilasciatapubblicata la prima beta della nuova versione 4.0 del kernel.
* 12 marzo 2015 - Viene rilasciatapubblicata la releaseversione stabile di Linux 4.0 e da ora la numerazione prevederà solo un numero decimale.
 
=== Il dibattito Tanenbaum-Torvalds ===
Il fatto che Linux sia un [[Kernel#Kernel monolitici|kernel monolitico]] piuttosto che un [[Kernel#Microkernel|microkernel]] è stato l'argomento del dibattito [[Andrew Stuart Tanenbaum|Tanenbaum]]-[[Linus Torvalds|Torvalds]]. Il dibattito iniziò nel 1992 riguardo Linux e l'architettura del kernel in generale sul gruppo di discussione [[Usenet]] <code>comp.os.minix</code>.<ref>{{Cita web|lingua=en|titolo=LINUX is obsolete|autore=Andrew Stuart Tanenbaum|data=29 gennaio 1992|sito=comp.os.minix|url=news://12595@star.cs.vu.nl/|urlarchivio=https://groupsweb.googlearchive.comorg/web/20010721213701/http:/group/compstar.oscs.minix/msgvu.nl/f447530d082cd95d|accesso=25 dicembre 2008|dataarchivio=2521 dicembreluglio 2001|urlmorto=sì}}</ref> Tanenbaum sosteneva che i microkernel fossero superiori ai kernel monolitici e che perciò [[Linux]] fosse obsoleto. A differenza dei kernel monolitici tradizionali, i driver sono facilmente configurati come [[Loadable Kernel Module|moduli del kernel]] e caricati o meno mentre il sistema è in esecuzione. Questo argomento è stato riproposto il 9 maggio 2006<ref>{{Cita web | data=9 maggio 2006 | titolo = Hybrid kernel, not NT | url = http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=11 | nome = Linus | cognome = Torvalds | accesso=6 gennaio 2007 }}</ref> e il 12 maggio 2006.<ref>{{Cita web | data=12 maggio 2006 | url = http://www.cs.vu.nl/~ast/reliable-os/ | titolo = Tanenbaum-Torvalds Debate: Part II | cognome = Tanenbaum | nome = Andy | accesso=6 gennaio 2007 2008}}</ref>
 
Tanenbaum sosteneva che i microkernel fossero superiori ai kernel monolitici e che perciò [[Linux]] fosse obsoleto. A differenza dei kernel monolitici tradizionali, i driver sono facilmente configurati come [[Loadable Kernel Module|moduli del kernel]] e caricati o meno mentre il sistema è in esecuzione. Questo argomento è stato riproposto il 9 maggio 2006<ref>{{Cita web | data=9 maggio 2006 | titolo = Hybrid kernel, not NT | url = http://www.realworldtech.com/forums/index.cfm?action=detail&id=66630&threadid=66595&roomid=11 | nome = Linus | cognome = Torvalds | accesso=6 gennaio 2007 }}</ref> e il 12 maggio 2006.<ref>{{Cita web | data=12 maggio 2006 | url = http://www.cs.vu.nl/~ast/reliable-os/ | titolo = Tanenbaum-Torvalds Debate: Part II | cognome = Tanenbaum | nome = Andy | accesso=6 gennaio 2007 }}</ref>
 
== Descrizione ==
{{Vedivedi anche|Kernel}}
[[File:KNOPPIX bootingBash_screenshot.png|thumb|upright=1.42|CaricamentoSessione del kernel Linux 2.6.24.4[[bash]] su [[KnoppixGentoo|Gentoo Linux]] 5.3.1]]
Il [[kernel]] Linux, uno dei più riusciti esempi di software [[open source]],<ref>
{{Cita web
Riga 101 ⟶ 118:
|titolo=Re: GPLv3 Position Statement
|lingua=en
}}</ref> costituisce il nucleo dei sistemi operativi della famiglia di Linux ovvero le [[distribuzione Linux|distribuzioni Linux]].<ref>{{Cita web
|url = https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=README;h=90a07658ede14840346eee6610648bcf4ec79997;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b
{{Cita web
|titolo = File README
|url = https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=README;h=90a07658ede14840346eee6610648bcf4ec79997;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b
|editore = git.kernel.org
|titolo = File README
|accesso = 12 novembre 2010
|editore = git.kernel.org
|lingua = en
|accesso = 12 novembre 2010
|lingua = en
|urlmorto = sì
|urlarchivio = https://archive.is/20120724163945/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=README;h=90a07658ede14840346eee6610648bcf4ec79997;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b
}}</ref> Fu inizialmente creato nel [[1991]] da alcuni studenti di informatica [[Finlandia|finlandesi]]<ref>
|dataarchivio = 24 luglio 2012
}}</ref> Fu inizialmente creato nel [[1991]] da alcuni studenti di informatica [[Finlandia|finlandesi]]<ref>
{{Cita web
|autore=Marjorie Richardso
Riga 127 ⟶ 145:
}}</ref>
 
RilasciatoPubblicato, liberamente [[download|scaricabile]] [https://www.kernel.org/] e modificabile/[[customizzazione|personalizzabile]] sotto la [[licenza libera]] [[GNU General Public License|GNU GPL]]<ref name="COPYING">
{{cita web
|url = https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=COPYING
Riga 139 ⟶ 157:
}}<!-- questo viene aggiornato col kernel, la citazione originale era ;h=ca442d313d86dc67e0a2e5d584b465bd382cbf5c;hb=f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b --></ref> (insieme ad alcuni [[firmware]] con varie licenze), è continuamente e liberamente sviluppato da collaboratori di tutto il mondo attraverso la relativa [[community]], con lo sviluppo che ogni giorno avviene sfruttando la relativa [[mailing list]], in modo del tutto analogo in cui sono sviluppati i [[suite di protocolli Internet|protocolli di Internet]]. Il [[codice sorgente]] di Linux è dunque disponibile a tutti ed è ampiamente personalizzabile, al punto da rendere possibile, in fase di compilazione, l'esclusione di codice non strettamente indispensabile.
 
Come ogni progetto che sia [[software libero]], anche il kernel Linux è dunque in continua evoluzione<ref>Le nuove releaseversioni sono reperibili sul sito [https://www.kernel.org/ kernel.org]</ref> con la dimensione del kernel che cresce in maniera esponenziale, aggiungendo nuovi moduli, nuovo [[hardware]] supportato e così via. Il ramo di sviluppo principale del kernel Linux prevede che esso contenga anche alcune parti non-libere, offuscate od oscurate come ad esempio alcuni [[driver]]. Il progetto [[Linux-libre]] si propone invece come variante completamente libera di Linux, da cui sono nate diverse [[Linux#Distribuzioni completamente libere|distribuzioni completamente libere]].<ref name="linux-libre">
{{Cita web
|url=https://www.fsfla.org/ikiwiki/selibre/linux-libre/index.en.html
Riga 151 ⟶ 169:
 
In quanto "cuore" di un [[sistema operativo]] (nucleo) fornisce tutte le funzioni essenziali per il sistema, in particolare la gestione della [[memoria primaria]], delle risorse [[hardware]] del sistema e delle [[periferica|periferiche]], assegnandole di volta in volta ai [[processo (informatica)|processi]] in esecuzione. La controparte del kernel è la [[Shell (informatica)|shell]], ovvero l'interfaccia utente del sistema, la parte più esterna. I programmi chiedono le risorse al kernel attraverso delle chiamate ([[chiamata di sistema|system call]]) e non possono accedere direttamente all'hardware.
 
[[File:Linux kernel interfaces.svg|thumb|upright=1.42|System Call Interface e [[Linux Standard Base]]]]
 
Si occupa quindi di gestire il tempo [[processore]], le comunicazioni e la memoria distribuendole ai processi in corso a seconda delle priorità ([[Scheduler|scheduling]]) realizzando così il [[multitasking]].
Riga 156 ⟶ 176:
 
Linux supporta il [[Pre-rilascio|multitasking con pre-rilascio]] (sia in [[user mode]] che in [[kernel mode]]), [[memoria virtuale]], [[Library (computer science)|librerie condivise]], [[Demand paging|caricamento a richiesta]], eseguibili [[copy-on-write]] condivisi, [[gestione della memoria]], la [[suite di protocolli Internet]], e il [[Thread (informatica)|threading]]. La flessibilità di questo [[kernel]] lo rende adatto a tutte quelle tecnologie [[Sistema embedded|embedded]] emergenti e anche nei centri di [[calcolo distribuito]] (come il cluster [[Beowulf (computer)|Beowulf]]) fino ad essere incorporato in alcuni videoregistratori digitali e nei [[telefono cellulare|telefoni cellulari]].
 
[[File:Linux kernel interfaces.svg|thumb|upright=1.4|System Call Interface e [[Linux Standard Base]]]]
 
=== Architettura ===
[[File:Linux kernel map.png|thumb|Mappa del kernel di Linux e la sua versione interattiva.]]
 
Linux è un [[kernel monolitico]]. Sebbene oggi il [[kernel]] possa essere compilato in modo da avere un'immagine binaria ridotta al minimo e i driver caricabili da moduli esterni, l'architettura originaria è chiaramente visibile: tutti i driver infatti devono avere una parte eseguita in [[kernel mode]], anche quelli per cui ciò non sarebbe affatto necessario (ad esempio i driver dei [[file system]]).
 
I [[driver]] e le estensioni del kernel lavorano nel [[kernel space]] ([[Ring (computer security)|ring 0]] nella maggior parte delle [[CPU]]), con pieno accesso all'hardware, sebbene alcune eccezioni lavorino in [[user space]]. Il [[X Window System|sistema grafico]] che la maggior parte delle persone utilizza con Linux non lavora nel kernel space. [[Kernel mode]] [[preemption (computing)pre-rilascio|Preallocazione]] consente ai driver dei dispositivi di essere preallocati sotto determinate condizioni. Questa caratteristica è stata introdotta per gestire correttamente gli [[Interrupt|interrupt dell'hardware]] e migliorare il supporto al [[sistema multiprocessore simmetrico]] (SMP). La preallocazione inoltre migliora la [[latenza]], incrementanoincrementando la reattività e rendonorendendo Linux più adatto ad applicazioni in tempo reale.
 
=== Portabilità ===
[[File:Ipod linux booting kernel.jpg|thumb|[[iPodLinux]] mentre effettua il [[boot]] del Kernel.]]
 
Sebbene inizialmente non progettato per essere [[Portabilità|portabile]], Linux è uno dei kernel di sistema operativo maggiormente portabile, in grado di funzionare su un'ampia gamma di sistemi dall'[[iPAQ]] (un [[computer palmare]]) all'IBM [[IBM Z|System z9]] (un server [[mainframe]] in grado di eseguire centinaia o migliaia di istanze Linux contemporanee). Linux è il sistema operativo principale dei [[supercomputer]] [[Blue Gene]] di IBM. Linux è il sistema operativo di più del 97% dei sistemi nella classifica [[TOP500|Top 500]] dei supercomputer.<ref>{{Cita web|url=https://www.top500.org/statistics/details/osfam/1|titolo=Operating system Family / Linux {{!}} TOP500 Supercomputer Sites<!-- titolo generato automaticamente -->|editore=Top 500 Supercomputer Sites|mese=novembre|anno=2014}}</ref> Inoltre, Linux è stato compilato in numerosi dispositivi portatili come [[TuxPhone]] e l'iPod di Apple.
 
=== Linguaggi di programmazione ===
Linux è scritto nella versione del [[C (linguaggio)|linguaggio di programmazione C]] supportata dal compilatore [[GNU Compiler Collection|GCC]] (che ha introdotto numerose estensioni e cambiamenti al C standard), insieme a un certo numero di brevi sezioni di codice scritte in linguaggio [[Assembly]] (sintassi GCC con stile "[[AT&T]]"). Grazie alle estensioni di C che supporta, GCC per lungo tempo è stato il solo compilatore in grado di compilare correttamente Linux. Nel 2004, [[Intel]] asserì di aver modificato il kernel in modo tale che anche il suo compilatore C fosse in grado di compilare Linux.<ref>[http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html Linux kernel patch for Intel Compiler] {{webarchive|url=https://web.archive.org/web/20110722090031/http://www.pyrillion.org/index.html?showframe=linuxkernelpatch.html |data=22 luglio 2011 }}</ref>
 
In qualche modo vengono utilizzati molti altri linguaggi, soprattutto nel processo di [[Compilatore|compilazione]] del kernel (metodi in cui a partire dal codice sorgente viene creata un'immagine avviabile). Questi includono [[Perl]], [[Python]] e diversi linguaggi [[Shell (informatica)|shell]]. Alcuni driver possono anche essere scritti in [[C++]], [[Fortran]] o altri linguaggi, ma questa pratica è fortemente scoraggiata. Il sistema di compilazione di Linux supporta ufficialmente solo GCC come compilatore sia del kernel sia dei driver.
 
=== Opzioni di Compilazione ===
Il kernel Linux ha delle [[Linux build options|opzioni di compilazione]] configurabili che consentono di aggiungere o rimuovere specifiche caratteristiche dal kernel durante la compilazione iniziale. Durante quest'ultima fase possono, inoltre, essere configurati alcuni parametri di default personalizzati.
 
=== Oggetti Kernel ===
Riga 182 ⟶ 201:
 
=== Header kernel ===
Gli header del kernel sono [[Header file|file header C]] che forniscono la condivisione di alcune definizioni del kernel di basso livello [[Application binary interface|ABI]] tra kernel e applicazioni dello [[spazio utente]]. La maggior parte delle applicazioni non necessita di questi header: essi servono soltanto per l'uso diretto da parte delle librerie di sistema, utilità e daemon di basso livello.<ref>{{collegamento interrotto|1=[http://news.gmane.org/find-root.php?message_id=%3cPine.LNX.4.64.0604271656390.3701%40g5.osdl.org%3e Gmane Loom] |datedata=marzo 2018 |bot=InternetArchiveBot }}</ref>
 
Il comando "<code>make headers_install</code>", quando eseguito sull'albero dei sorgenti del kernel, esporta i file header del kernel in una forma adatta all'uso dei programmi nello spazio utente.<ref>[http://www.mjmwired.net/kernel/Documentation/make/headers_install.txt Linux Kernel Documentation :: make : headers_install.txt]</ref>
Riga 188 ⟶ 207:
 
=== Kernel panic ===
{{Vedivedi anche|Kernel panic}}
[[File:Kernel-panic.jpg|thumb|Kernel Panic]]
{{Vedi anche|Kernel panic}}
 
In Linux, un "panic" è un errore di sistema irrecuperabile individuato dal kernel al contrario di errori simili individuati in modalità [[user space]]. Il codice in kernel mode ha la possibilità di indicare una condizione di questo tipo chiamando la funzione <code>panic</code> dichiarata nell'header del file sys/system.h. Comunque la maggior parte dei kernel panic sono il risultato di [[Gestione delle eccezioni|eccezioni]] nel codice del kernel, come per esempio riferimenti a [[Indirizzo di memoria]] non validi.

Questo è tipicamente indice di:
* un [[bug]] da qualche parte nella call chain che conduce al kernel panic;
* un danno a livello hardware, come una cella di RAM danneggiata o errori nelle funzioni aritmetiche nel processore provocati da un [[Pentium FDIV bug|bug del processore]], un processore surriscaldato, danneggiato;
Riga 198 ⟶ 219:
 
=== Formati binari supportati ===
Linux 1.0 supportava il formato binario [[a.out]] e l'[[Executable and linkable format|ELF]], che semplifica la creazione di [[Dynamic-link library|librerie condivise]] (usatemolto tantissimoutili daiper moderniun [[desktopsistema environment]]operativo come [[KDE]] e [[GNOME]]<ref><code>ldd /usr/bin/kwin</code> lists 40 shared libraries (kwin 3.5.5a); <code>ldd /usr/bin/gnome-panel</code> lists 68 (gnome-panel 2.14.3).</ref>moderno). ELF è il formato standard usato da [[GNU Compiler Collection|GCC]] fin dalla versione 2.7.0<ref>{{Cita web |url=http://www.ibiblio.org/pub/historic-linux/distributions/slackware/3.1/docs/ELF-HOWTO |titolo=The Linux ELF HOWTO |nome=Daniel |cognome=Barlow |data=13 settembre 1995 |accesso=19 luglio 2007 |urlmorto=sì |urlarchivio=https://web.archive.org/web/20071012180722/http://ibiblio.org/pub/historic-linux/distributions/slackware/3.1/docs/ELF-HOWTO |dataarchivio=12 ottobre 2007 }}</ref> perciò, oggigiorno a.out vieneè usatodeprecato moltoe raramentenon più supportato dal kernel<ref>{{Cita web|url=https://www.phoronix.com/news/Linux-5.19-Drops-x86-a.out|titolo=Linux 5.19 Finally Removes Obsolete x86 a.out Support|sito=www.phoronix.com|lingua=en|accesso=2024-04-26}}</ref>.
 
Linux supporta molti altri formati binari, inclusi [[binfmt misc]] per associare un file a un programma (come un [[Interprete (informatica)|interprete]]) per eseguire o mostrare quel file.
 
=== Architetture delle macchine virtuali ===
Il kernel Linux ha un supporto estensivo e funziona su numerose architetture di [[macchina virtuale|macchine virtuali]] sia come sistema operativo "server" che "[[client]]". Le [[Macchina virtuale|macchine virtuali]] solitamente emulano la famiglia di processori con [[architettura x86]], sebbene in alcuni casi siano emulati anche i processori [[PowerPC]] o [[AMD64]].
 
== Versioni ==
Mentre sviluppa il proprio codice e integra le modifiche create da altri programmatori, Linus Torvalds continua a rilasciarepubblicare nuove versioni del kernel di Linux. Queste sono chiamate versioni "vanilla", ada indicare che non sono state modificate da nessun altro. Molte distribuzioni Linux modificano il kernel per il proprio sistema, principalmente allo scopo di aggiungere il supporto per driver o caratteristiche che non sono state ufficialmente rilasciatepubblicate come stabili, mentre altre distribuzioni usano un kernel vanilla.
 
=== Modello di sviluppo ===
Riga 213 ⟶ 234:
Verso la fine della serie 2.5.x, alcuni sviluppatori hanno deciso di apportare alcune modifiche nel ramo stabile, ma questo ha provocato un aumento dei problemi nella serie 2.4.x del kernel. Il ramo 2.5 venne allora dichiarato stabile e rinominato 2.6. Invece di aprire un ramo 2.7 instabile, gli sviluppatori continuarono a inserire modifiche d'una certa importanza nel ramo stabile. In questa maniera si sono tenuti sotto controllo con maggior precisione i cambiamenti, dividendoli in parti più piccole, rendendo disponibili le nuove caratteristiche velocemente, e ampliando il numero di persone che testano il codice più recente.
 
Il nuovo modello di sviluppo che caratterizza il 2.6, fa sì inoltre che non esista un ramo stabile per le persone che cercano solo correzioni di bug o inerenti alla sicurezza, ma non necessitano delle ultime caratteristiche. Le correzioni vengono applicate solo nella versione più recente, così se un utente vuole una versione con tutti i bug noti corretti, ottiene nel contempo tutte le ultime caratteristiche, ma rischia (in alcuni casi) di non far funzionare più alcune cose che nella versione precedente funzionavano. Una correzione parziale di questo problema è stata prima menzionata (vedasi la quarta cifra del numero della versione): essa caratterizza i nuovi kernel, ma non risolve completamente alcune necessità che non si avrebbero usando un ramo stabile. Le distribuzioni, come [[Red Hat]] e [[Debian]]<ref>{{Cita web|url=https://github.com/FUIT1985/MAIN/tree/main/TDAH_FUIT|titolo=TDAH_FUIT (TDAH_, in short) The_Debian_Administrator’s_Handbook_free_unofficial_Italian_translation|sito=Free unofficial Italian translation - FUIT on Github.com|lingua=en, it,|accesso=2022-05-02}}</ref>, allegano già un certo tipo di kernel nei loro rilasci: alla maggior parte delle persone conviene usare le versioni predefinite.
 
In risposta alla mancanza di un ramo stabile del kernel (inteso come ramo dove non vengono apportati nuovi cambiamenti, ma solo correzioni), [[Adrian Bunk]], nel dicembre 2005, ha annunciato che avrebbe continuato a rilasciarepubblicare kernel 2.6.16.y anche quando fosse stata rilasciatapubblicata la versione 2.6.17.<ref>[https://web.archive.org/web/20120724093633/http://kerneltrap.org/node/6930 Linux: 2.6.16.y Lives On | KernelTrap<!-- Titolo generato automaticamente -->]</ref> Inoltre ha progettato di includere aggiornamenti relativi ai driver, rendendo così lo sviluppo della serie 2.6.16 molto simile a quello della vecchia 2.4.<ref>[https://web.archive.org/web/20120709101718/http://kerneltrap.org/node/6386 Linux: Maintaining A 2.6.16.y Tree | KernelTrap<!-- Titolo generato automaticamente -->]</ref>
 
Il 10 ottobre 2008, è stata rilasciatapubblicata la versione stabile 2.6.27.<ref>[https://kernel.org/ The Linux Kernel Archives<!-- Titolo generato automaticamente -->]</ref>. Nel febbraio dello stesso anno, gli sviluppatori hanno poi ideato un ramo del kernel ''instabile'', denominato ''linux-next'': un posto dove ospitare le modifiche, con l'intento di includerle nel ciclo di sviluppo successivo.<ref>[https://lwn.net/Articles/269120/ linux-next and patch management process [LWN.net&#93;<!-- Titolo generato automaticamente -->]</ref>
 
Nel luglio del [[2011]], per festeggiare il 20º anniversario della nascita di Linux, Torvalds ha deciso di rilasciarepubblicare la versione 3.0 del kernel, passando ad un sistema di numerazione a 2 cifre. L'ultima releaseversione della serie 2.6 è stata la 2.6.39.
 
=== Controllo versione ===
In passato il codice sorgente del kernel Linux era gestito senza l'impiego di un sistema automatico di [[controllo versione]] (in inglese ''source code management'', SCM), principalmente a causa del fatto che a Torvalds non piacciono glii sistemi di SCMcontrollo centralizzati.
 
Nel 2002 lo sviluppo del kernel passò a [[BitKeeper]], un SCMsistema che soddisfaceva i requisiti tecnici richiesti da Torvalds e che era interoperabile, a certi livelli, con altri sistemi come [[Concurrent Versions System|CVS]] e [[Subversion]]. Sebbene Torvalds e altri sviluppatori ottenessero BitKeeper gratuitamente, il fatto che non fosse [[software libero]] causò delle controversie.
 
Dei tentativi di ''reverse-engineering'' di [[Andrew Tridgell]] su BitKeeper convinsero BitMover, la compagnia che gestiva BitKeeper, a terminare il suo sostegno alla comunità di sviluppo di Linux. Di conseguenza, Torvalds e altri scrisseroideò un nuovo sistema di controllo di versione, chiamato [[git (software)|git]];, ilscrivendo nuovola softwareprima fuversione scrittodi tale software in poche settimane, e. dueDue mesi dopo si ebbe la prima versione ufficiale del kernel Linux rilasciatapubblicata con git.<ref>{{Cita web |autore=Linux Kernel Mailing List |url=https://marc.info/?l=git-commits-head&m=111904216911731 |titolo=Linux 2.6.12 | data=17 giugno 2005}}</ref> Poco dopo git è diventato un progetto indipendente, guadagnandosi un'ampia diffusione nella comunità del software libero.
 
=== Manutenzione ===
Linus Torvalds è il supervisore dei cambiamenti e deldella rilasciopubblicazione delle ultime versioni del kernel: ha delegato la manutenzione delle versioni più datate ad altri programmatori. Alcune versioni vecchie come la 2.0 (ufficialmente resa obsoleta dal kernel 2.2.0 pubblicato nel gennaio 1999) sono aggiornate solo quando questo viene reputato necessario e i cambiamenti sono molto rari.
 
{| class="wikitable"
Riga 236 ⟶ 257:
! Supervisore
|-
| 2.0 || 2.0.40 || [[David Weinehall]]<ref>{{Cita web |autore=David Weinehall |url=http://kerneltrap.org/node/2279 |titolo=&#91;ANNOUNCE&#93; Linux-kernel 2.0.40 aka ``''The Moss-covered Tortoise'' |data=8 febbraio 2004 |urlarchivio=https://archive.is/20120530045533/http://kerneltrap.org/node/2279 |dataarchivio=30 maggio 2012 |urlmorto=sì }}</ref>
|-
| 2.2 || 2.2.27-rc2 || [[Marc-Christian Petersen]]<ref>{{Cita web |autore=Marc-Christian Petersen |url=http://kerneltrap.org/node/2279 |titolo=Linux 2.2.27-rc2 |data=13 gennaio 2005 |urlarchivio=https://archive.is/20120530045533/http://kerneltrap.org/node/2279 |dataarchivio=30 maggio 2012 |urlmorto=sì }}</ref> (ex supervisore [[Alan Cox]])
Riga 249 ⟶ 270:
|}
 
Altri programmatori del kernel di Linux particolarmente conosciuti sono [[Robert Love (1981)|Robert Love]] e [[Ingo Molnar|Ingo Molnár]].<ref>Per l'elenco completo vedi [http://lxr.linux.no/source/MAINTAINERS Linux MAINTAINERS file].</ref>
 
{{Calendario Kernel Linux}}
Riga 255 ⟶ 276:
=== Numerazione delle versioni ===
Per lungo tempo la versione del kernel di Linux era composta da tre numeri, ma recentemente questo sistema è stato modificato e ora la versione consiste di quattro cifre, nella forma "A.B.C[.D]", per esempio 2.2.1, 2.4.13, oppure 2.6.12.3;
* la 'A' indica la versione del kernel, che viene modificata molto raramente e solo quando avvengono mutamenti radicali del codice (fino al 2008 questo è avvenuto solo due volte, nel 1994, con l'introduzione della versione 1.0, e nel 1996 con la versione 2.0) o per ragioni commemorative (versione 3, nel 2011, per i 20 anni del kernel linuxLinux);
* la 'B' indica la revisione "maggiore" del kernel:
** prima della serie 2.6.x, i numeri pari (come 1.2, 2.4, oppure 2.6) indicavano un ramo stabile e i numeri dispari (come 1.1 oppure 2.5) indicavano rami di sviluppo, dove erano sperimentate nuove caratteristiche e driver finché queste non erano reputate adatte ad essere incluse nel ramo stabile;
** a partire dalla serie 2.6.x, la differenziazione tra numeri pari e dispari perde di significato, in quanto lo sviluppo di nuove caratteristiche avviene all'interno dello stesso ramo, allo scopo di ottenere uno sviluppo più lineare;
* la 'C' indica la revisione "minore" del kernel: nel vecchio schema di numerazione, questo numero aumentava quando venivano implementati nel kernel aggiornamenti riguardanti la sicurezza, correzioni di alcuni errori, nuove caratteristiche, o nuovi driver; secondo il modello attuale questo numero viene cambiato solo quando nuovi driver o caratteristiche diverse sono introdotte, in quanto le correzioni minori sono conteggiate dal numero contrassegnato con 'D';
* l'uso della 'D' è iniziato quando un grave problema, che richiedeva una correzione immediata, è stato riscontrato nel codice [[Network File System|NFS]] del 2.6.8. Non esisteva l'esigenza di cambiamenti tali da giustificare illa rilasciopubblicazione di una revisione minore (che sarebbe diventata la versione 2.6.9), così, il 2.6.8.1 venne rilasciatopubblicato, con la sola correzione di questo errore. Dal 2.6.11, questo modello venne adottato come nuovo paradigma ufficiale. Correzioni e patch di sicurezza adesso sono conteggiate così, con la quarta cifra, mentre se ci sono cambiamenti più consistenti, si usa la terza cifra. La cifra 'D' è inoltre associata col numero delle volte che il compilatore ha costruito il kernel, ed è denominata "build number".
 
Inoltre, alle volte si possono trovare altre lettere dopo la versione, come 'rc1' o 'mm2'; 'rc' è una versione candidata ad essere adottata come stabile, e indica una releaseversione non ufficiale. Altre lettere, invece, sono spesso (ma non sempre) le iniziali di una persona: questo segnala un [[Fork (sviluppo software)|fork]] del kernel da parte di questa persona. Per esempio, la dicitura 'ck' sta per [[Con Kolivas]], 'ac' per [[Alan Cox]], mentre 'mm' indica [[Andrew Morton]]. Certe volte, le lettere sono collegate alla caratteristica principale del kernel. Per esempio, 'wl'indica una versione di test per le reti wireless.
 
==== Versioni storiche ====
La prima versione del kernel è stata la 0.01. Questa venne seguita dalla 0.02, 0.03, 0.10, 0.11, 0.12 (la prima versione rilasciatapubblicata sotto licenza [[GNU General Public License]]), 0.95, 0.96, 0.97, 0.98, 0.99, e dalla 1.0.<ref>[http://ftp.cdut.edu.cn/pub/linux/kernel/history/lka-001.html Linux Kernel Archives - Volume 1] {{webarchive|url=https://archive.is/20050511062834/http://ftp.cdut.edu.cn/pub/linux/kernel/history/lka-001.html |data=11 maggio 2005 }} (Riley Williams)</ref> Dalla versione 0.95 a queste, sono state rilasciatepubblicate numerose patch tra le versioni.
 
==== Cronologia della versione stabile ====
Ci sono state due versioni maggiori stabili del kernel Linux 1.''x'': la 1.0 e la 1.2. La versione 1.0 fu pubblicata il 14 marzo 1994<ref name="kern1p0-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v1.0/|titolo=Kernel 1.0 Source Code Release|accesso=27 ottobre 2008|lingua=en}}</ref> Questa versione del kernel Linux era compatibile esclusivamente coi sistemi a singolo processore [[IA-32|i386]]. In seguito ci si iniziò a preoccupare anche della portabilità, e così la versione 1.2 (pubblicata il 7 marzo 1995<ref name="kern1p2-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v1.2/|titolo=Kernel 1.2 Source Code Release|accesso=27 ottobre 2008|lingua=en}}</ref>) incorporò il supporto per i sistemi basati su architetture [[DEC Alpha]], [[SPARC]], e [[Architettura MIPS|MIPS]]. Questa fu l'ultima versione stabile rilasciatapubblicata nella serie 1.''x'' del kernel Linux.
 
La versione 2.''x'' del kernel Linux ha visto un gran numero di cambiamenti, in particolare nella serie 2.6 e sul come viene sviluppata, mantenuta e rilasciatapubblicata. Le versioni 2.0, 2.2, e 2.4 furono costruite usando il vecchio sistema di sviluppo dove ognuno dei kernel era basato sulla versione stabile di quello precedente. La versione 2.0 fu pubblicata il 9 giugno 1996<ref name="kern2p0-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v2.0/|titolo=Kernel 2.0.''x'' Source Code Releases|accesso=27 ottobre 2008|lingua=en}}</ref>. Ci furono 41 rilascipubblicazioni in questa serie. La principale caratteristica del kernel 2.0 era il supporto al [[Sistema multiprocessore simmetrico|SMP]] (cioè al supporto a più processori su un singolo sistema) e il supporto per più tipi di processori.
 
La versione 2.2 (pubblicata il 26 gennaio 1999<ref name="kern2p2-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v2.2/|titolo=Kernel 2.2.''x'' Source Code Releases|accesso=27 ottobre 2008|lingua=en}}</ref>) rimosse lo [[spinlock]] globale, fornì un migliore supporto al multiprocessing simmetrico e aggiunse il supporto per le architetture [[Motorola 68k|m68k]] e [[PowerPC]] oltre all'aggiunta di nuovi filesystem (incluso il supporto in sola lettura per il filesystem della [[Microsoft]] [[NTFS]]).<ref name="WWOL22">{{Cita web|url=http://kniggit.net/wwol22.html|titolo=The Wonderful World of Linux 2.2|accesso=27 ottobre 2008|lingua=en|urlmorto=sì|urlarchivio=https://web.archive.org/web/20051118180045/http://kniggit.net/wwol22.html|dataarchivio=18 novembre 2005}}</ref> Lo sviluppo della serie 2.4.''x'' cambiò un po'. In questa serie infatti furono rese disponibili nuove caratteristiche durante tutto lo sviluppo della serie stessa. La versione 2.4.0, pubblicata il 4 gennaio 2001,<ref name="kern2p4-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v2.4/|titolo=Kernel 2.4.''x'' Source Code Releases|accesso=27 ottobre 2008|lingua=en}}</ref> conteneva il supporto per [[Industry Standard Architecture|ISA]] [[Plug and play]], [[USB]], e [[PC Card]].<ref name="WWOL24">{{Cita web|url=http://kniggit.net/wwol24.html|titolo=The Wonderful World of Linux 2.4|accesso=27 ottobre 2008|lingua=en|urlmorto=sì|urlarchivio=https://web.archive.org/web/20051118180109/http://kniggit.net/wwol24.html|dataarchivio=18 novembre 2005}}</ref> Includeva inoltre il supporto per i processori [[PA-RISC]] della [[Hewlett-Packard]]. Durante lo sviluppo della serie 2.4.''x'' furono aggiunte altre caratteristiche includendo: supporto [[Bluetooth]], [[LogicalGestore Volumelogico Managerdei volumi|Logical Volume Manager (LVM)]] versione 1, supporto [[RAID]], [[InterMezzoIntermezzo (Filefile system)|InterMezzo FS]] e [[ext3|ext3 FS]].
 
Con l'arrivo della serie 2.6.''x'' del kernel Linux, il sistema di numerazione cambiò in modo che ci potessero essere 4 cifre nel numero di versione del kernel, dandogli il formato 2.6.''x''.''y'' (dove.''y'' è opzionale). Le nuove caratteristiche vengono ora aggiunte tra una releaseversione ''x'' e l'altra, mentre le releaseversioni ''y'' sono solitamente riservate alla correzioni di bug. La versione 2.6.0 fu pubblicata il 18 dicembre 2003.<ref name="kern2p6-release">{{Cita web|url=https://www.kernel.org/pub/linux/kernel/v2.6/|titolo=Kernel 2.6.''x''.''y'' Source Code Releases|accesso=27 ottobre 2008|lingua=en}}</ref>. Tra i cambiamenti fatti in questa serie ci sono: l'integrazione di [[µClinux]] nei sorgenti del kernel principali, il supporto alla [[Physical Address Extension|PAE]], il supporto a diverse nuove linee di [[CPU]], l'integrazione di [[Advanced Linux Sound Architecture|ALSA]] nei sorgenti principali del kernel, il supporto a un numero di utenti fino a 2<sup>32</sup> (2<sup>16</sup> nelle versioni precedenti), il supporto a un numero di processi fino a 2<sup>30</sup> (2<sup>15</sup> nelle precedenti versioni), una crescita sostanziale del numero di tipi di dispositivo e del numero di dispositivi per ogni tipo, supporto ai processori a 64 bit migliorato, supporto di [[file system]] fino a 16 [[terabyte]]s, in-kernel [[Pre-rilascio|preemption]], supporto alla libreria Native POSIX Thread Library, integrazione nei sorgenti principali del kernel di [[andLinux]] e di [[Security-Enhanced Linux|SELinux]], supporto a [[InfiniBand|Infiniband]], e molto altro. Altrettanto importante è l'aggiunta di diversi filesystem durante le varie releaseversioni della serie 2.6.''x'': [[Filesystem in Userspace|FUSE]], [[Journaled File System|JFS]], [[XFS (file system)|XFS]], [[ext4]] e altri<ref>Altri dettagli sulla storia della serie 2.6 del kernel possono essere trovati sul ChangeLog situato in [https://www.kernel.org/pub/linux/kernel/v2.6/ the 2.6 kernel series source code release area]</ref>.
 
Nel luglio del 2011, per festeggiare il 20º anniversario della nascita di Linux, Torvalds ha deciso di passare ad un sistema di numerazione a 2 cifre, rilasciandopubblicando la versione 3.0 del kernel. L'ultima releaseversione della serie 2.6 è stata la 2.6.39.
 
Il 12 marzo 2015 viene rilasciatapubblicata la releaseversione stabile di Linux 4.0.
 
=== Costo stimato per lo sviluppo ===
Riga 288 ⟶ 309:
== Aspetti legali ==
=== Marchio registrato ===
Linux è un [[marchio registrato]] di [[Linus Torvalds]] negli [[Stati Uniti d'America|Stati Uniti]] e in altri Paesi. Questo è il risultato di un incidente in cui William Della Croce Jr., che non partecipava allo sviluppo del progetto Linux, registrò il nome e successivamente richiese una Royalty per il suo uso. Diversi sostenitori di Linux chiesero consiglio legale e intentarono causa contro Della Croce, che acconsentì nel 1998 ad assegnare il marchio a Torvalds.
 
=== Termini di licenza ===
Inizialmente, Torvalds rilasciòpubblicò Linux con una licenza che ne proibiva lo sfruttamento commerciale. Essa però lasciò presto il posto alla [[GNU General Public License]] (GPL) dalla versione 0.12. Questa licenza permette la distribuzione e la vendita di versioni modificate o non modificate di Linux a condizione che vengano rilasciatepubblicate con la stessa licenza e che si fornisca anche il corrispondente codice sorgente.
 
Torvalds ha descritto l'adozione della licenza GPL come "la miglior cosa che abbia mai fatto."<ref>{{Cita web|url=http://hotwired.goo.ne.jp/matrix/9709/5_linus.html|titolo=The Pragmatist of Free Software|nome=Hiroo|cognome=Yamagata|anno=1997|accesso=21 febbraio 2007|editore=HotWired|urlmorto=sì|urlarchivio=https://web.archive.org/web/20070210224351/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html|dataarchivio=10 febbraio 2007}}</ref>
 
==== GPL versione 3 ====
{{Vedivedi anche|GNU General Public License#La Versione 3}}
 
Attualmente, Linux adotta la versione 2 della licenza [[GNU General Public License|GPL]], senza nessuna opzione (a differenza di molti programmi rilasciatipubblicati con licenza GPL) che permette l'uso di una versione più avanzata, e ci sono alcune controversie sulla facilità con cui si potrebbero usare versioni successive come la 3 (e su quanto sia desiderabile).<ref>{{Cita web|url=https://lwn.net/Articles/169797/|titolo=GPLv3 and the kernel|editore=[[LWN.net]]|data=31 gennaio 2006|accesso=21 febbraio 2007|cognome=Corbet|nome=Jonathan}}</ref> Torvalds stesso ha specificato durante illa rilasciopubblicazione della versione 2.4.0 che il suo codice adotta soltanto la versione 2 della licenza.<ref>{{Cita web|url=http://www.uwsg.iu.edu/hypermail/linux/kernel/0009.1/0096.html|capitolo=Linux-2.4.0-test8|titolo=Linux-kernel mailing list archive|editore=Unix Systems Support Group of [[Università dell'Indiana|Indiana University]]|cognome=Torvalds|nome=Linus|accesso=21 febbraio 2007|data=8 settembre 2000|urlmorto=sì|urlarchivio=https://web.archive.org/web/20060827011644/http://www.uwsg.iu.edu/hypermail/linux/kernel/0009.1/0096.html|dataarchivio=27 agosto 2006}}</ref> Tuttavia, i termini della licenza GPL affermano che, se non viene specificata nessuna versione, allora ne può essere usata una qualsiasi, e [[Alan Cox]] fece notare che solo pochi di coloro che contribuiscono a Linux hanno specificato una particolare versione della licenza GPL.<ref>{{Cita web|url=https://lwn.net/Articles/169831/|articolo=Re: GPL V3 and Linux|nome=Alan|cognome=Cox|titolo=Linux-kernel mailing list archive|editore=LWN.net|accesso=21 febbraio 2007|data=20 gennaio 2006}}</ref> Un blogger ha concluso che circa il 40% del codice di Linux è specificatamente rilasciatopubblicato con licenza "GPL2 o superiore", e un altro 10% circa con licenza "GPL" (con versione non specificata), il che, messo assieme, costituisce circa la metà del kernel. Nel settembre 2006, un'indagine su 29 sviluppatori-chiave del kernel ha indicato che 28 di questi preferivano GPLv2 alla GPLv3 allora in stato di bozza. Torvalds ha commentato, «Penso che un nutrito numero di persone esterne credevano che fossi io l'unico strano, per il fatto che ho dichiarato pubblicamente di non essere un grande fan della GPLv3».<ref>{{Cita web|url=http://news.com.com/Top+Linux+programmers+pan+GPL+3/2100-7344_3-6119372.html|titolo=Top Linux programmers pan GPL 3|editore=[[News.com]]|accesso=21 febbraio 2007|data=25 settembre 2006|nome=Stephen|cognome=Shankland
}}</ref>
 
Riga 312 ⟶ 333:
=== Contenzioso SCO ===
{{vedi anche|Causa legale tra SCO e IBM}}
 
A marzo del 2003, il [[SCO Group|gruppo SCO]] intentò causa contro [[IBM]] accusandola di aver violato il [[copyright]] sul [[codice sorgente]] [[Unix]], inserendo porzioni di quel codice in Linux. Inoltre, SCO mandò lettere a diverse compagnie avvisandole che l'uso di Linux senza una licenza di SCO poteva essere una violazione della legge sul copyright, e dichiarò alla stampa che avrebbero intentato causa agli utenti Linux individuali. IBM allora promise di difendere i suoi clienti Linux. Questo contenzioso generò una serie di cause intentate da SCO nei confronti di [[Novell]], [[Daimler (azienda)|Daimler]] (parzialmente ritirata nel luglio 2004), [[AutoZone]], e cause di ritorsione intentate da [[Red Hat]] e altri contro SCO.
 
All'inizio del 2007 SCO fornì i dettagli specifici della presunta violazione di copyright. Diversamente dalle precedenti affermazioni che vedevano SCO proprietaria di 1 milione di righe di codice, specificarono soltanto 326 linee di codice, la maggior parte del quale non era coperto da copyright.<ref>{{Cita web | url=http://www.groklaw.net/articlebasic.php?story=20070308014847709 | titolo=Report from the Courthouse 7 March | accesso=1 dicembre 2008 | urlarchivio=https://web.archive.org/web/20110807034144/http://www.groklaw.net/articlebasic.php?story=20070308014847709 | dataarchivio=7 agosto 2011 | urlmorto=sì }} Groklaw article</ref> Ad agosto 2007, la corte nel [[SCO v. Novell|caso Novell]] stabilì, per cominciare, che SCO non possedeva neanche i diritti di copyright su Unix.<ref>{{Cita web | url=http://www.groklaw.net/article.php?story=20070810165237718 | titolo=Court Rules: Novell owns the UNIX and UnixWare copyrights}} Groklaw article</ref>
 
== Note ==
Riga 320 ⟶ 342:
 
== Bibliografia ==
* {{Cita libro|lingua=EN|nome=Daniel Pierre|cognome=Bovet, |nome2=Marco |cognome2=Cesati, ''|titolo=Understanding the Linux Kernel'', |edizione=3|annooriginale=2000|anno=2005|editore=O'Reilly, 2005, terza edizione|OCLC=776506350|LCCN=2006275169|ISBN=9780596005658|SBN=RMS1514739}}
* Tigran Aivazian, ''Linux Kernel 2.4 Internals'', 2002, https://web.archive.org/web/20081216014256/http://www.moses.uklinux.net/patches/lki.html
* ''LinuxChanges'', https://kernelnewbies.org/LinuxChanges, lista delle modifiche apportate a ciascuna versione del kernel
Riga 329 ⟶ 351:
* [[Dynamic Kernel Module Support]]
* [[GNU]]
* [[GNU/Linux]]
* [[Unix]]
* [[Linux-libre]]
Riga 341 ⟶ 363:
* [[Linux kernel oops]]
* [[Kernel-based Virtual Machine]]
* [[Patch (informatica)|Patch]]
* [[Marcelo Tosatti]]
* [[:Categoria:Sistemi operativi utilizzanti il kernel Linux]]
* [[Trustix Secure Linux]]
 
== Altri progetti ==