Documentazione/Anatomia del Kernel Linux
Il Kernel Linux è il cuore di un vasto e complesso sistema operativo, che nonostante sia enorme, è organizzato molto bene in termini di sub-sistemi e livelli. In questo articolo esplorerai la struttura generale del kernel e conoscerai i suoi maggiori sub-sistemi e interfacce. Dove possibile, troverai dei link ad altri articoli IBM per approfondire le tue conoscenze.
Un breve tour nella storia di Linux
Anche se Linux è indiscutibilmente il più popolare sistema operativo open source, la sua storia è relativamente giovane, considerando l' era di inizio degli altri sistemi operativi. Con i primi computer, i programmatori sviluppavano in linguaggio macchina. L' unica mancanza di un sistema operativo era che solo un applicazione (e un utente) poteva usare i (grandi e dispendiosi) servizi alla volta. I primi sistemi operativi furono sviluppati nel 1950 per fornire una semplice esperienza sviluppativa. Esempi di cio sono il General Motors Operating System (GMOS) sviluppato per l' IBM 701 e il FORTRAN Monitor System (FMS) sviluppato dal North American Aviaton per l' IBM 709.
Nel 1960, l' istituto della tecnologia di Massachusetts (MIT), e qualche altra compagnia, svilupparono un sistema operativo sperimentale chiamato Multics (o Multiplexed Information and Computing Service) per il GE-645. Uno degli sviluppatori di questo sistema operativo, AT&T, si "stacco" dal progetto Multics e sviluppò il proprio sistema operativo nel 1970 chiamato Unics. Per tutti questi sistemi operativi, venne usato il C come linguaggio di programmazione, infatti il C fu sviluppato e rivisto per scrivere sistemi operativi portabili.
Vent'anni dopo, Andrew Tanenbaum creo una microkernel versione di UNIX, chiamata MINIX (o UNIX minimale), che girava in un piccolo personal computer. Questo sistema operativo open source ispirò Linus Torvalds a sviluppare L'inux agli inizi degli anni 90.
// figura 1
Linux da un progetto legato ad un unica singola persona, passo velocemente ad un progetto sviluppato dal mondo intero che coinvolse migliaia di sviluppatori. Una delle piu importanti decisioni di Linux fu di adottare come licenza la GNU General Public License (GPL). Prima del GPL, Linux fu protetto da scopi commerciali, e beneficiò dallo spazio di sviluppo del GNU project. A questo seguirono applicazioni interessanti e utili come il Gnu Compiler Collection (GCC) e varie shell di supporto.
Introduzione al Kernel Linux
Ora daremo un occhiata all'architettura del sistema operativo GNU/Linux. Puoi pensare ad un sistema operativo come se fosse formato da due livelli, come mostrato in figura:
// figura 2
In alto c'è l'utente, o le applicazioni. Qui è dove le applicazioni dell'utente vengono eseguite. Sotto lo spazio utente (user space) troviamo lo spazio del kernel. Qui, è dove il kernel di Linux esiste.
C'è anche la GNU C Library (glibc). Questa permette al sistema di chiamare l'interfaccia che si connette al kernel e permette il meccanismo di transizione tra l' applicazione spazio utente (user space) e il kernel. Questo è importante perchè il kernel e lo spazio utente occupano differenti spazi protetti. E mentre ogni processo utente occupa il suo virtuale spazio di memoria, il kernel occupa un singolo spazio di memoria. Per maggiori informazioni visita i link nella sezione risorse.
Il Kernel Linux può essere grosso modo diviso in 3 grossi livelli. In alto c'è l'interfaccia di chiamata al sistema, che implementa le funzioni di base come READ e WRITE. Sotto all'interfaccia di chiamata al sistema troviamo il codice Kernel, che può essere piu precisamente definito come l'architettura indipendente del codice Kernel. Questo codice è comune a tutti i processori con architettura supportata da Linux. Sotto di questo c'è l'architettura dipendente, la cui forma è comunemente chiamata BSP (Board Support Package). Questo codice serve il processore e la specifica piattaforma per la specifica architettura.