I
l linux oramai e' un argomento diffuso non solo tra gli studenti, ma anche
nell'industria e nella ricerca (almeno a giudicare dai commenti sentiti
nello stand linux all'i2u). Nonostante questo, molti degli sviluppi attuali
del linux e dei programmi correlati sono ancora poco noti al "grande
pubblico" nonostante la loro importanza. Per questo motivo vorrei riassumere
qui alcuni degli argomenti che hanno maggiormente riscosso l'attenzione del
pubblico nello stand linux all'i2u:
- Il kernel
Il kernel (ossia il linux vero e proprio) si e' evoluto in maniera
straordinaria nell'ultimo anno, superando di gran lunga per prestazioni e
versatilita' la maggior parte dei concorrenti commerciali.
Cos'e' esattamente il kernel?
Si tratta del nucleo vero e proprio di un sistema operativo, ossia la parte
che sta a contatto diretto con l'hardware e gestisce le risorse importanti
(memoria, CPU, video ecc.) per renderle disponibili in maniera efficiente ai
vari programmi che l'utente esegue. Esistono tre tipi di kernel:
- I kernel monolitici,
che sono praticamente "un blocco unico". La maggior
parte dei kernel unix sono monolitici, visto che in questo modo sono piu'
facili da realizzare e sono piu' efficienti. Lo svantaggio e' che dovendo
inglobare tutto, il kernel diventa grosso e quindi occupa molta piu'
memoria, e diventa inoltre poco flessibile (per aggiungere un driver e'
necessario ricompilare il tutto).
- I kernel modulari,
in cui vi e' una parte fissa che gestisce le risorse
fondamentali e una serie di moduli che vengono aggiunti successivamente e
che si occupano delle risorse "transitorie". Il linux (specialmente il 2.0)
rientra in questa categoria, con in piu' il vantaggio del kerneld che
gestisce in modo automatico e trasparente il caricamento dei moduli in
memoria. Il kernel diventa molto piu' piccolo, mantenendo una buona
efficienza.
- I microkernel,
in cui solo una parte minima dei servizi viene svolta dal
kernel, mentre tutto il resto viene svolto da programmi esterni che
comunicano con il kernel tramite interfacce standardizzate.
Ha il vantaggio di una maggiore eleganza, di una grande solidita' (visto che
la maggior parte dei servizi sono esterni al kernel e quindi se hanno
problemi non bloccano il resto del sistema) ma anche una efficienza molto
ridotta data dallo svantaggio di dover usare una interfaccia per qualunque
cosa. Inoltre in generale i microkernel (a dispetto del nome) tendono a
essere piu' grossi e pesanti dei kernel monolitici (basta vedere il Mach...)
Il linux e' attualmente un kernel modulare, e grazie alla recente
collaborazione con la OSF sta muvendosi nella direzione del real-time
(ideale per le applicazioni industriali) e "leggermente" microkernel (nel
senso che vengono spostati fuori dal kernel solo alcuni dei servizi meno
richiesti, in modo da non perdere troppo in prestazioni).
- gcc, libc eccetera
Il compilatore della Free Software Foundation ha finalmente ricevuto le
estensioni al C++ che gli mancavano (in particolare le STL) e quindi adesso
puo' essere utilizzato per portare programmi da tutti gli altri ambienti
Unix senza problemi. La libc (la libreria usata dai vari compilatori FSF)
dovrebbe nella prossima versione 6 diventare una versione unica sia per il
sistema operativo Hurd che per il Linux. In questo modo il linux guadagna un
inizio di microkernel (visto che la libc Hurd contiene molte delle funzioni
normalmente inglobate nel kernel) senza averne il peso, e consentira' di
portare su linux alcuni ambienti software al momento non utilizzabili senza
pesanti modifiche (come l'ambiente DCE - Distributed Computing Environment).
- X11
Nella prossima versione dell' X11 dovrebbe comparire il BroadWay (la
risposta dell'X consortium al Java) e finalmente il sonoro!! Anche se devono
ancora decidere quale degli standard attualmente presenti vada supportato
(al momento ne esistono due principali, il NAS - network audio server - e il
RAS - remote audio). Oltre a questo, dovrebbero vedere la luce molte piccole
migliorie e una serie di librerie per facilitare la realizzazione di
animazioni veloci (videogiochi?).
- Altre librerie
Le piu' importanti sono tre: lesstif, gnustep e Mesa.
- lesstif:
si tratta di un clone delle librerie standard Motif, che
consentira' di portare (gratuitamente, visto che le Motif vere sono a
pagamento) l'enorme quantitativo di software motif disponibile per Unix. Sono
attualmente in preparazione, e dovrebbero essere ultimate all'inizio
dell'anno prossimo (speriamo).
- gnustep:
il progetto forse piu' grosso intrapreso di recente dalla FSF, si
tratta di riscrivere da zero tutto l'ambiente di programmazione e le
librerie del sistema operativo NeXTStep. Si tratta di uno dei sistemi object
oriented piu' avanzato in assoluto, con un ambiente di programmazione
splendido per la sua semplicita' e una base di oggetti molto completa e
potente. Ci sara' anche una libreria per la grafica 3d basata sullo standard
RenderMan (quello con cui e' stato creato Toy Story della Disney, per
intenderci).
- Mesa:
un clone completo delle librerie OpenGL della Silicon Graphics. E' il
progetto piu' avanzato, e gia' adesso e' usabile per portare software dalle
Silicon. Mancano solo alcune delle estensioni piu' evolute (NURBS, e poco
altro) e nel giro di qualche mese dovrebbe essere completa e perfettamente
compatibile. Inoltre il mesa viene al momento usato come piattaforma per lo
sviluppo dei driver per le nuove schede accelerate 3D (GLINT, ecc.) e una
versione modificata dovrebbe venire inclusa direttamente nell' Xserver come
estensione GLX.
Ci sarebbe da continuare a lungo - con il Postgres95 (database SQL con
gestione ODBC), il supporto Java (con un compilatore nativo completamente
free, una nuova macchina virtuale con compilatore Just In Time chiamata
kaffe..), il nuovo fortran 77 della GNU... insomma, il futuro si presenta
decisamente roseo. A dispetto della Microsoft...
|