Benvenuti in Ubuntu Tricks

Benvenuti!
Questo blog è stato creato con l'intento di raccogliere e raggruppare informazioni su Linux, in particolare sulla distribuzione Ubuntu. Saranno postati trucchi&consigli, ma anche programmi poco conosciuti che offrono servizi molto utili. Speriamo che questi post possano aiutarvi a farvi scoprire o ri-scoprire il vasto mondo di questo versatile sistema operativo.

Gli Amministratori:
- Noah -

sabato 23 luglio 2011

The Linux 0.01 Release – Il primo kernel Linux


I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.
(Cit. Tratta dal primo post riguardante Linux – 26 Agosto 1991)
Un gusto di trionfo pervade la mia bocca ogni volta che leggo questa citazione al solo pensiero che dall’hobby di colui che diventerà uno dei più acclamati geni dell’informatica scaturisca un sistema operativo tra i più affidabili e sicuri al mondo, e del tutto OpenSource!

Quest’anno ricorre il ventennale dalla creazione di Linux, e vorrei parlarvi in particolare proprio della prima bozza che Linus Torvalds caricò in rete il 17 settembre del 1991: “The Linux 0.01 Release

Grazie al supporto della Helsinki University of Technology (HUT) che gli concesse uno spazio nel proprio server, Trovalds fu in grado di effettuare il primo upload.
Tale indirizzo FTP è stato mantenuto dall’università che ne permette tuttora l’accesso.
Scritto interamente utilizzando una combinazione di C e assembly, il kernel ha la peculiare caratteristica di avere una struttura monolitica.

Kernel monolitico

Un sistema è un software che solitamente viene progettato come insieme di moduli, tuttavia questo metodo di progettazione, pur semplificandone la fase di test e di ricerca degli errori, non permette ai vari moduli di interagire tra loro che di fatto restano completamente indipendenti.

Un sistema monolitico consiste in un sistema operativo che ha il compito di fare da tramite (o interfacciarsi) tra utente e hardware (componenti fisici).
In tale interfaccia è contenuto un interprete dei comandi che trasforma un’istruzione comprensibile all’utente (linguaggio ad alto livello) in un comando comprensibile dalle specifiche componenti del sistema hardware (una singola istruzione può essere tradotta in una serie di comandi a basso livello). La comunicazione utente-interfaccia-hardware avviene tramite delle vere e proprie chiamate a sistema (system-call), le quali vengono interpretate dall’interfaccia generando un codice comprensibile alla macchina; tali istruzioni danno origine ai servizi del sistema operativo che regola la gestione dei processi, della memoria, etc.

La scelta di utilizzare un kernel monolitico fu molto criticata dal creatore del sistema operativo Minix , Andrew S. Tanenbaum professore ordinario di Sistemi di Rete all’università di Amsterdam nonché autore del celeberrimo libro di testo “Operating Systems” dal quale Torvalds prese ispirazione per la creazione di Linux. Tanenbaum riteneva questa architettura obsoleta ed inferiore alla struttura microkernel utilizzata anche nel suo Minix.

Microkernel


Il sistema Microkernel fu sviluppato intorno agli anni ’90 con l’intento di migliorare la portabilità, l’espansibilità e l’affidabilità dei sistemi operativi che in quel periodo tendevano a diventare molto grandi e complessi.

Contiene un sottoinsieme di funzionalità incluse tipicamente in un kernel e supporta solo un numero limitato di system-call (le più utilizzate).
In tal modo il sistema risulta essere meno ingombrante a livello di memoria fisica (miglioramento della portabilità) ed allo stesso tempo lascia spazio a nuove espansioni modulari, poiché le parti meno essenziali sono al di fuori del kernel e l’eventuale modifica di queste non intaccherebbe direttamente lo stesso. In questo modo l’interruzione improvvisa di una funzionalità o modulo non bloccherebbe l’intero sistema, dando la possibilità ad ogni singolo modulo di poter essere tranquillamente riavviato senza dover far ripartire l’intero sistema.

Lo svantaggio principale della struttura microkernel è proprio il suo punto di forza.
Abbiamo visto sopra che non tutte le funzionalità del sistema sono incluse nel kernel, ma alcune sono incluse in un sistema operativo implementato utilizzando il microkernel. Si genera così un ulteriore livello di dialogo: l’interazione tra sistema operativo e microkernel richiede una comunicazione tra processi che ne causa un rallentando notevole a livello di prestazioni del sistema (Si parla di una perdita pari al 50-70% su tali prestazioni).

Tuttavia dopo notevoli miglioramenti, il sistema a microkernel è arrivato a perdere solo il 5% di prestazioni rispetto ad altri tipi di kernel.

Kernel features

This is a free minix-like kernel for i386(+) based AT-machines. (Cit.Tratto da: Linux 0.01 release notes)
Presentato come un fac-simile di Minix, Linux, in realtà, non ha nulla a che vedere, l’obiettivo di Torvalds era la creazione di un sistema operativo che migliorasse notevolmente le lacune di Minix attraverso una struttura completamente diversa.
Si “radunarono” intorno a lui un numeroso gruppo di persone (principalmente informatici) che lo sostennero e lo aiutarono in questo progetto nei modi più disparati, dimostrando quello che è per me la definizione di Linux: un sistema operativo creato da tutti per tutti.

La prima versione, The Linux 0.01 Release, supporta i principali hardware (Tastiera, Hardisk, Schermo) tuttavia non tutte le system-call risultano essere completamente implementate ed essendo una versione costruita ad hoc, necessita strettamente di queste caratteristiche hardware:
- 386 AT (piattaforma a 32 bit)
- VGA/EGA screen
- AT-type harddisk controller
- Tastiera Finlandese

Il suo utilizzo richiede un avvio tramite il file system di Minix (fino alla versione 0.11) poichè non sono state ancora implementate le routine di avvio, tuttavia questa compatibilità con Minix non intacca drasticamente l’estraneità di Linux dal sistema operativo di Tanenbaum.

Alcune importati innovazioni che utilizza Linux già dalla prima versione sono:

- Viene progettato appositamente per sistemi 386 in modo tale da sfruttare pienamente i vantaggi di quella che allora era un’architettura (a 32bit) di ultimissima generazione.

- Utilizza in modo efficace il multithreading, permette cioè l’esecuzione contemporanea di più processi facendo utilizzare la CPU ad ognuno di questi per un tempo finito, senza causare cali di prestazioni come accadde in Minix (attenzione a non confondere il multithreading con il multitasking, parole simili che descrivono concetti molto differenti).

- Creato come sistema monolitico, non prevede distinzioni tra Kernel, File System e Organizzazione della memoria che sono tutte implementate all’interno dello stesso codice

Evoluzione di Linux

Dall’emulazione di un terminale che si occupava della gestione di due thread (ovvero flussi di un processo) si passò ad un vero e proprio kernel in grado di gestire un sistema operativo completo, fu così che Linus iniziò ad interessarsi agli standard POSIX per la gestione delle API standardizzate.

Un notevole passo avanti lo si ha al rilascio della versione 0.11, quando la compilazione e l’installazione del kernel potevano essere eseguiti da Linux stesso evitando così di dover utilizzare il file-system Minix per tali operazioni.
Questo passo è fondamentale per Linux poiché solo da questo momento si può definire un kernel a tutti gli effetti (seppur incompleto, pieno di bug e poco versatile).

Ben presto Linux mostrò le sue vere potenzialità superando di gran lunga Minix in termini di funzionalità. Fu proprio in questo periodo che il kernel venne adattato perché funzionasse con i componenti GNU, in modo da ottenere un sistema operativo completo e sopratutto libero.

Un secondo notevole passo è stato compiuto nel 1992 dall’ Hacker Orest Zborowski.

Zborowski riuscì infatti a rendere eseguibile X nella versione 0.12 che fornì, oltre all’utilizzo di un ambiente grafico, anche la base per dotare Linux di uno stack di rete.
Tale avanzamento entusiasmò Linus a tal punto da commettere un errore di valutazione in termini di stima dell’avanzamento del software.
Infatti dalla versione 0.13 si passò direttamente alla versione 0.95, senza tener presenti i problemi legati alla rete, dalla trasmissione dati alla sicurezza.
Per ovviare a questa leggerezza Linus dovette inventarsi nuovi metodi con cui definire le nuove release, utilizzando nuovi campi per indicarne i “livelli di patch e le revisioni”; i primi con i numeri mentre le seconde con le lettere dell’alfabeto.

L’ultima versione che si potrebbe definire “unstable” fu la “0.99 15Z” ovvero: Versione 0.99 , Patch 15, Revisione Z.

Il 14 Marzo del 1994 venne rilasciata la prima versione ufficiale del kernel: Linux 1.0 Release.
…ma questa è un’ altra storia… ed un altro post.

Fonti:
Fonte principale
Primo post riguardante Linux
The Linux 0.01 Release
Wikipedia

Nessun commento:

Posta un commento