[Convention] [About] [Copertina] [Device Drivers]

Articoli



Dove vogliamo andare domani?
(libera interpretazione di un noto slogan di una piu' nota casa produttrice di software...)

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:

  1. 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).

  2. 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).

  3. 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?).

  4. 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...

di Carlo Daffara


[Convention] [About] [Copertina] [Device Drivers]