Linux (nucleo)

Article

August 15, 2022

Linux è un kernel del sistema operativo gratuito, simile a Unix, noto soprattutto per il suo sistema operativo Linux. Linux è anche il cuore dei sistemi operativi mobili Android e Sailfish.

Sfondo

Il progetto è stato avviato da Linus Torvalds nel 1991 e non è stato sviluppato dall'inizio con un uso generale in mente, ma principalmente perché Torvalds voleva saperne di più su come costruire sistemi operativi. Aveva anche bisogno in privato di un sistema operativo per il proprio computer: non voleva Windows, Minix era troppo limitato e le versioni commerciali di Unix troppo costose. Torvalds continua a guidare il lavoro di sviluppo, anche se ha delegato molti insiemi individuali. Quando Torvalds iniziò a lavorare su Linux, il progetto GNU aveva già creato molti dei componenti necessari per un sistema operativo libero, ma il loro nucleo, GNU Hurd, aveva grossi problemi e non era ancora utile. Linux poteva soddisfare questa esigenza e sebbene le prime versioni fossero molto limitate, la combinazione di GNU e Linux divenne rapidamente popolare. Il codice sorgente per Linux ha utilizzato la licenza software GNU GPL quasi sin dal suo inizio, che molti sostengono sia la ragione per cui è diventato così popolare e di successo. La licenza richiede che se hai apportato modifiche al sistema che desideri diffondere ulteriormente, devi anche rendere pubbliche e gratuite le modifiche al codice sorgente affinché tutti possano utilizzarle. In questo modo, la maggior parte dei miglioramenti andrà a beneficio di tutti. In un'intervista del 1997, Torvalds ha affermato che il passaggio alla GPL è stata "la cosa migliore che abbia mai fatto". Il core di Linux tuttavia non ha mai sostituito Hurd come core ufficiale all'interno di GNU, ma Hurd è ancora in fase di sviluppo separatamente. Linux viene utilizzato anche senza il software GNU, principalmente nei sistemi embedded.

Tecnica

Il cuore di un sistema operativo ha il compito di tenere traccia e comunicare con le varie parti dell'hardware del computer, come CPU, memoria di lavoro e dischi rigidi, nonché allocare l'accesso e le risorse ai vari programmi in esecuzione nel sistema . Sebbene il supporto e la composizione possano variare durante la creazione di un kernel, i driver per diversi tipi di hardware di solito richiedono la maggior parte dello spazio. Il kernel è il primo programma che si avvia in un sistema, sul PC solitamente dal BIOS e da un bootloader. Il primo compito del kernel è solitamente quello di raccogliere informazioni su quale hardware è disponibile e scaricare tutti i driver per questi. Successivamente il kernel passa ad altre parti del sistema e va in background ma ha il compito di allocare diverse risorse ai programmi in esecuzione. Linux, come la maggior parte degli altri sistemi simili a Unix, è un kernel monolitico. Ciò significa che la maggior parte dei processi di sistema come input e output, gestione della memoria e driver vengono eseguiti come parte del core e non come processi separati. Questa architettura può essere rischiosa, poiché un guasto in un modulo relativamente poco importante può arrestare questo singolo processo e quindi l'intero sistema. Il vantaggio è un design più semplice con prestazioni leggermente superiori, perché la comunicazione tra le diverse parti è più semplice e si evitano perdite di tempo quando i processi devono essere ruotati per funzionare. Linux è fondamentalmente un kernel UNIX tradizionale, monolitico e scritto in C. La grande differenza sta nel modo in cui si sviluppa Linux. Tuttavia, si possono notare alcune altre caratteristiche speciali: moduli ricaricabili per driver, protocolli di rete meno centrali, file system e molte altre funzionalità, che aumentano significativamente la flessibilità VFS, il file system virtuale, che rende facile per Linux supportare un gran numero di file system diversi (ext2 / 3, jfs, reisersf, fat, ntfs, ecc.) console virtuali, che consentono più sessioni simultanee sulla console di sistema (cioè sul computer stesso) le disposizioni all'avvio del sistema supporto per una miriade di piattaforme hardware diverse, dai sistemi embedded ai mainframe

Procedura di avvio

Perché Linux spesso funziona su computer progettati per altri sistemi operativi e spesso condivide il disco rigido con altri sistemi operativi