Sistemi operativi

Tutti sanno grossomodo com'è fatto un computer: c'è un'unità di calcolo, il processore, che si occupa di eseguire delle operazioni matematiche ricevendo ed inviando i dati i dati alla memoria volatile, la RAM. Ci sono poi il disco fisso, per conservare questi dati in modo permanente e la scheda video, che genera immagini da mandare ad uno schermo; ed infine tutte le periferiche per scambiare dati col mondo esterno: tastiera, mouse, scanner, microfono, ecc.. per ricevere (input) e monitor, casse, stampante, ecc. per inviare all'esterno (output).

Certo che da qui a finestre, barre degli strumenti, sfondi, chat, Unreal Tournament e compagni ne passa parecchio...

Intendo dire che una persona normale quando usa un computer non pensa a come riempire i registri del processore per fargli eseguire i calcoli che gli servono, nè a eseguire le corrette chiamate al BIOS per mostrare a video parole ed immagini, nè tantomeno a gestire gli indirizzi di memoria per salvare ed aprire i propri dati; queste cose succedono, ma fortunatamente sono eseguite in modo automatico da un programma che, possiamo dire, si mette in mezzo tra l'utente e le funzioni "crude" del computer, semplificandole e rendendole accessibili ad un qualsiasi essere umano di media intelligenza. Questo programma è detto sistema operativo (SO).

Dal principio ai giorni nostri

Oggi siamo abituati ad usare sistemi operativi che ci mostrano finestre, menu, che ci giudano nell'installazione di programmi e che ci dilettano con piacevoli effetti grafici... Ma non è stato sempre così.

I primi computers (quelli degli anni '50, grandi come armadi, incredibilmente lenti e costosi) addirittura non avevano sistema operativo, ma dovevano essere programmati "al volo" con le famose schede perforate, su cui venivano impressi programmi scritti direttamente in linguaggio macchina. L'output di tali programmi (generalmente costituito da sequenze di numeri) non poteva essere memorizzato, ma veniva stampato su carta.

L'evoluzione proseguì, e nel giro di un decennio praticamente ogni università potè disporre di un centro di calcolo, lo stanzone in cui un unico, enorme calcolatore serviva i ricercatori che ne facevano uso. Era necessario un programma di base che amministrasse le risorse di calcolo, suddividendole equamente tra tutti i ricercatori; nacquero così le prime versioni di Unix (che non prevedevano nessuna interfaccia, nè grafica nè testuale, ma servivano solo a permettere l'esecuzione in contemporanea di molti programmi esterni), con poche e semplici parole-chiave: multiutenza, multitasking, laconicità ed efficienza.

Interfacce testuali

Ma il tempo passava e i calcolatori, che alla fine degli anni '70 diventavano sempre più piccoli e sempre meno costosi, cominciavano a uscire dalla cerchia dei ricercatori per conquistare il mercato casalingo e professionale. Iniziano così a circolare i vari Apple II, Commodore e PC IBM.

Nel caso del Commodore il SO era costituito da un interprete BASIC, ovvero un esecutore di semplici istruzioni e niente più: un indicatore lampeggiante segnava la posizione del carattere, il sistema leggeva ogni riga di comando inserita e la "traduceva" in linguaggio macchina per il processore. Il vantaggio tratto da questa operazione è che 1) il linguaggio BASIC è tutto sommato umano ed accessibile e 2) è possibile registrare sequenze di comandi su delle cassette da far leggere ed eseguire dalla macchina. Ogni cassetta è un programma.

Più intraprendenti furono gli obbiettivi del colosso americano IBM, che nel 1981 lanciò sul mercato il suo PC, dotato di processore Intel e sistema operativo PC-DOS 1.0. Il DOS è un sistema operativo sviluppato da Microsoft, che nell'81 era una piccola società, fondata sei anni prima dai due studenti Paul Allen e Bill Gates. Il sistema è fondamentalmente un esecutore di programmi, che l'utente "chiama" inserendone il nome sulla riga di comando. Ogni programma per DOS "utilizza" il sistema per accedere alle funzioni della macchina; ad esempio, per scrivere a schermo del testo un programma può semplicemente rinviare quest'operazione al sistema, il quale si occupa di "sbrogliare" tutte le questioni di memoria, registri, schede ed operazioni matematiche. L'utente stesso può, utilizzando i programmi forniti col sistema, interagire col computer e con i dati in esso contenuti (elencare, creare, copiare, rimuovere files, visualizzare documenti...) o addirittura scrivere programmi per DOS, nella certezza che questi potranno essere eseguiti su qualsiasi altra macchina che supporti il neonato sistema operativo di Microsoft.

In realtà il DOS presenta un grosso limite, che oggi è quasi inconcepibile: è possibile eseguire un solo programma per volta; ovvero, se si lancia un'applicazione, il "prompt" dei comandi torna visibile solo quando l'applicazione termina. Ciononostante il PC IBM ebbe un successo oltre ogni aspettativa, ed assieme a lui lo ebbero, di conseguenza, i processori Intel e i sistemi Microsoft, che andarono formando una situazione di monopolio che dura fino ai giorni nostri.

Interfacce grafiche

Se un nodo cruciale della storia dell'informatica era stato fatto con l'invenzione del DOS, le rivoluzioni non erano finite: la Apple Computer Inc., società fondata nel 1976 da Steve Wozniak e Steve Jobs, e che già con grande fortuna negli anni precedenti aveva commercializzato gli Apple I e II, tra l'83 e l'84 produsse i suoi primi computers con interfaccia grafica, l'Apple Lisa (con SO LisaOS) e l'Apple Macintosh (con SO MacOS). Il secondo, dal costo più accessibile (2.500 dollari contro i 10.000 dell'Apple Lisa), prevalse e conquistò una fetta di mercato abbastanza solida da poter competere, per qualche anno, con i sistemi Microsoft, che, rispetto ai Mac, apparivano molto più rozzi e arretrati.

Il MacOS fu scritto da zero e, sulla traccia dello Xerox Star, uscito qualche anno prima al prezzo di 16.000 e passa dollari, interagiva con l'utente in modo completamente grafico, attraverso finestre, menu ed icone. Mentre gli utenti DOS, per capire come si usa il sistema, dovevano studiarsi manuali e liste di comandi testuali.

Unix e GNU/Linux

Nel frattempo il lato "universitario" dell'informatica viveva momenti di grande fermento. L'unico sistema operativo di riferimento era, come abbiamo già visto, Unix, originariamente sviluppato nei laboratori della grande ditta AT&T (il corrispondente americano della nostra Telecom) e distribuito gratuitamente a fini di studio e ricerca. Unix, nato agli inizi degli anni '70, venne distribuito in modo da poter essere liberamente modificabile dagli studenti fino al 1984, anno in cui AT&T fermò la politica di libera condivisione.

Unix all'apparenza può essere confuso con un qualsiasi sistema DOS: la sua interfaccia consta in un prompt da cui l'utente inserisce comandi per amministrare il sistema ed eseguire programmi. Ma in realtà si tratta di un software estremamente più sofisticato: una macchina Unix non solo può eseguire più programmi contemporaneamente, ma addirittura è in grado di "servire" più utenti allo stesso tempo. Un server dotato di tale sistema può essere collegato a centinaia terminali, per ciascuno dei quali è aperta una sessione differente; il sistema, oltre a distribuire equamente le risorse di calcolo fra tutti gli utenti che ne fanno richiesta, gestisce un vero e proprio archivio di utenti, ciascuno con dei privilegi specifici che regolano (permettendo o bloccando) tutta la "vita" del sistema, dall'accesso ai files all'esecuzione dei programmi. In questo modo gli "amministratori" possono compiere operazioni (come ad esempio modificare le impostazioni di sistema) che magari agli "studenti" o agli "ospiti" sono precluse...

Unix è quindi una sorta di "polipo informatico" che, attraverso un solo computer centrale, provvede a tutte le esigenze dei ricercatori. Ma, all'alba degli anni Ottanta era necessario fare qualche considerazione: una struttura centralizzata come questa poteva andare bene quando un calcolatore occupava più spazio di un guardaroba ed era necessaria una grande spesa per l'acquisto, ma ora ogni ricercatore poteva avere il suo PC a casa e lavorare senza recarsi ogni volta al centro di calcolo.

Sarebbe stato carino avere sul proprio PC IBM di casa un sistema un po' meno elementare del DOS, magari proprio Unix. C'erano tuttavia alcune circostanze che rendevano questo impossibile: 1) Unix, per quanto sia efficiente, è progettato per essere eseguito da macchine molto potenti, che possano reggere un'attività "da polipo", un PC casalingo non riuscirebbe a sostenere la complessità di un sistema del genere. 2) Nel 1984 Unix è stato definitivamente sottratto alla pubblica condivisione e quindi non può più circolare liberamente tra gli studenti.

L'obbiettivo era chiaro: serviva una sorta di "sistema clone" di Unix, che ne rispettasse i canoni, ma che fosse libero e modificabile da tutti. Un tale Richard Stallman colse la palla al balzo e, già nell'83, avviò un mega-progetto di nome GNU, con l'intento di produrre un sistema Unix completo (con tutti i programmi utili per usare il sistema) e che fosse liberamente utilizzabile e modificabile da chiunque. Nel 2008 GNU non è ancora stato completato. O meglio, sono stati scritti tutti i programmi "di contorno" (utility per elencare, visualizzare, copiare files, ma anche compilatori, fogli di calcolo, editors di testo...), ma non il sistema vero e proprio: manca il "cuore", ovvero quella parte (detta kernel) che si occupa di fare da tramite fra i programmi (o l'utente) e le risorse della macchina.

La "timidezza" rispetto alla creazione di un kernel di tipo Unix (unix-like) fu vinta solo nel 1986, quando il prof. Andrew S. Tanenbaum decise di creare un sistema di esempio da allegare al suo libro "Sistemi operativi: Progetto e implementazione". Questo sistema fu chiamato Minix, a sottolineare la sua natura "mini". Minix non venne mai direttamtente in contatto col progetto GNU, poichè non era "software libero" (non molto, ma qualcosa costava), ma servì da spunto per il giovane studente finlandese Linus Torvalds, che nel 1991 propose la primissima versione del suo kernel unix-like, Linux, e la distribuì secondo i princìpi del software libero dettati tempo prima da Richard Stallman.

Quello che successe poi è facile da immaginare: una vasta comunità di sviluppatori si unì attorno al nuovo sistema, che in breve fu migliorato ed unito al software scritto per GNU, dando origine al noto sistema GNU/Linux.

Un'ultima cosa: in quegli anni (1984) era stato sviluppato l'X Window System, il software che gestisce l'interfaccia grafica su tutti i sistemi di tipo Unix.

Microsoft Windows

L'utenza Microsoft intanto cominciava a scocciarsi di vedere schermi neri, scritte bianche e scrivere comandi su comandi quando il resto del mondo civile muoveva il mouse, cliccava icone e spostava finestre.

Per ovviare a questa scomodità alcune software house svilupparono delle interfacce utente per DOS, come la GEM (1984), fino a che anche Microsoft decise di fare qualcosa e creò una sua interfaccia grafica per DOS che chiamò Windows 1.0. Alla versione 1.0 (1985) succedettero la 2.0 (1987), la 3.0 (1990), la 3.1 (1991) e la 3.11 (1992).

Fino alla versione 3.11 Windows restò un semplice programma per DOS che, se eseguito, disegnava icone, finestre e quant'altro. Le cose cambiarono con la versione successiva, Windows 95 (1995), in cui il DOS (pur rimanendo alla base del sistema) è stato in un certo senso "integrato" nell'interfaccia grafica. Questa situazione "ibrida" durò per cinque anni, fino a giungere all'ultimo sistema Microsoft basato su DOS: Windows Millennium Edition (2000). Il resto possiamo considerarlo storia moderna.

Osservazione: non era più semplice produrre un sistema nativamente grafico (sullo stile del MacOS), piuttosto che "incastrare" assieme gli elementi moderni delle interfacce grafiche con un sistema inadatto come il DOS? Probabilmente sì, ma, in casa Microsoft, la priorità assoluta era garantire agli utenti DOS che tutti i loro vecchi applicativi sarebbero potuti girare tanto sui nuovi sistemi Windows quanto sul vecchio DOS, altrimenti ad alcuni sarebbe potuta sorgere la tentazione di comprarsi un Mac...

Ai giorni nostri

Dopo questa lunga, ma necessaria (ed anche affascinante, no?), parentesi storica, possiamo passare a dare un'occhiata a come la situazione si sia evoluta fino ad arrivare ai giorni nostri.

Microsoft Windows

Che la situazione delle versioni DOS-based di Windows non potesse durare era chiaro fin dal principio: parallelamente a queste versioni fu infatti portato avanti lo sviluppo di una nuova serie denominata NT. Scritta indipendentemente dagli altri Windows (e soprattutto dal DOS: come base fu utilizzato OS/2), essa mirava ad implementare le caratteristiche tipiche degli altri sistemi "seri", Unix primo fra tutti. Nacque così un Windows con supporto nativo per multi-utenza, multitasking e, dopo un po' di tempo, una buona affidabilità. Questo sistema riuscì a ritagliarsi un notevole spazio negli ambienti professionali, facendo agguerrita concorrenza agli altri *nix (ovvero Unix e derivati).

Il passo successivo fu l'abbandono definitivo del DOS: le versioni di Windows successive alla ME (che nel frattempo avevano conquistato il mercato "casalingo" con la presenza su oltre il 90% dei PC del mondo) furono sviluppate direttamente a partire dalla base NT; nacquero così Windows XP (2001) e Vista (2007); pare che sia prossimo il lancio (forse nel 2009) della futura Windows 7.

Oggi Microsoft Windows è il sistema operativo più diffuso al mondo (pur con un leggerissimo calo, è installato sul 90% dei computers del pianeta) e certamente possiamo trovare per lui dei punti a favore: è un sistema tutto sommato valido, prodotto da un team di professionisti e gode di una situazione commerciale che rende estremamente facile sia reperire che produrre software compatibile. Del resto sussistono innegabili contro, primo fra tutti la licenza che, oltre ad impedirne la libera diffusione (non tutti lo fanno, ma Windows andrebbe comprato e pagato), nega all'utente la possibilità di modificare il sistema stesso, limitando dunque chi intende approfondire lo studio della "scienza informatica", come chi semplicemente vorrebbe avere il pieno controllo delle sue macchine... E poi non possiamo far finta che Windows non si pianti mai...

Apple Macintosh

Anche Apple, che avevamo lasciato al 1984 (anno di lancio del primo Macintosh) decise di "rinfrescare" i propri sistemi, e lo fece nel 2000, dopo 16 anni in cui vennero prodotti una cinquantina di modelli Macintosh diversi. Il cambiamento constò, anche in questo caso, nello sviluppo di un nuovo sistema operativo, che non avesse nulla a che fare col vecchio MacOS: Unix (in particolare la fusione tra un progetto di nome Match e FreeBSD, lo unix dell'università di Berkeley) fu scelto come base del nuovo sistema, che fu chiamato Mac OS X. Fu inoltre sviluppata Aqua che è da molti considerata la migliore interfaccia utente esistente sulla faccia della terra.

Cinque anni dopo abbiamo un altro radicale cambiamento, che questa volta riguarda l'hardware. A partire dal 2005 i processori montati sui Mac, che erano sempre stati i PowerPC prodotti da Motorola, sono sostituiti con gli Intel, uniformandosì così al resto del mondo (che aveva di fatto reso l'architettura Intel, detta i386, standard mondiale, in seguito al successo del PC IBM).

Osserviamo che in entrambi i casi (sia la sostituzione del SO, che la sostituzione del processore) vengono a crearsi dei problemi di compatibilità. Un diverso SO infatti tendenzialmente non permette l'esecuzione di applicazioni scritte per altri sistemi, dal momento che ogni applicazione, deve, in un certo senso, poter "dialogare" col sistema, e se questo cambia, la cosa diventa evidentemente impossibile. Un discorso simile si applica anche ai diversi processori; ogni applicazione infatti contiene delle parti di codice indirizzato al processore (codice macchina). Questo è scritto con un linguaggio comprensibile direttamente dalla CPU, e va da sé che due CPU ti tipo (o meglio, architettura) differente non parlino la stessa lingua...

Entrambe le situazioni furono risolte integrando nel sistema due emulatori, ovvero due programmi in grado di simulare il funzionamento delle vecchie tecnologie e consentire dunque l'esecuzione del vecchio software. Questi programmi sono Classic (simula un computer su cui gira il vecchio MacOS) e Rosetta (che invece emula il processore PowerPC).

GNU/Linux

Lo sviluppo di Linux è invece proseguito senza grandi rivoluzioni interne, guadagnandosi il favore di un numero sempre maggiore di utenti, che hanno trovato in lui un sistema estremamente affidabile ed avanzato, non solo tecnologicamente, ma anche (e soprattutto) filosoficamente: attorno al sistema del pinguino (Tux, la mascotte di Linux, è un pinguino) si è riunita una comunità di programmatori (dagli studenti ai professionisti) di dimensioni a dir poco impressionanti, ed il progetto originario si è diramato (anche grazie alla fusione con GNU) in una miriade di sfaccettature portate avanti da singoli gruppi.

Sono state create inoltre delle distribuzioni, ovvero delle raccolte di software, che rendono sempre più semplice e veloce l'installazione di un sistema GNU/Linux completo non solo delle basi, ma anche di tutti i programmi di contorno (dalle suite office ai videogiochi): è raro per un utente Linux dover installare del software esterno alla distribuzione (cosa che invece è normale per utenti Windows), perchè, specie le più famose (Debian, Ubuntu, Fedora ecc...), mettono ormai a disposizione tutto ciò che serve.

Grazie alla semplicità delle odierne distribuzioni la diffusione di Linux (che all'inizio riguardava quasi esclusivamente ambienti professionali) negli ultimi anni è raddoppiata e copre quasi l'1% dell'utenza mondiale.

D'altro canto non si può certo dire che Linux sia il sistema perfetto. Anzitutto, sebbene sia stato fatto un ottimo lavoro per renderne semplice l'utilizzo, sono ancora molti e frequenti i problemi la cui difficoltà di risoluzione supera le capacità di un utente medio; questo è dovuto anche alla quantità e varietà di componenti del sistema: ogni distribuzione infatti sceglie i propri "pezzi" tra un parco software immenso (ci sono tanti programmi che svolgono gli stessi compiti, ad esempio la gestione del suono, piuttosto che l'archiviazione stessa dei programmi installati...), e questo inevitabilmente genera conflitti tra componenti equivalenti, o addirittura tra diverse versioni di uno stesso componente. Poi dobbiamo dire che Linux in generale è un sistema complesso, anche per quanto riguarda la struttura, e non è affatto semplice avere in testa un "quadro generale" completo del funzionamento del sistema, cosa che invece è più semplice con un sistema Windows, in cui ogni compito può essere svolto da un solo componente, sviluppato da una sola casa produttrice. Ed infine non può mancare un'osservazione sulla disponibilità di hardware e software: con una diffusione inferiore all'1% è assurdo pensare che molte case produttrici si prendano la briga di creare programmi che funzionino su Linux (bisogna poi dire che la comunità del free-software tende a rifiutare l'utilizzo di software che non sia libero, e quasi nessuna software-house ha intenzione di rendere i propri programmi disponibili liberamente per l'uso e la modifica) e quindi spesso è difficile condividere la propria esperienza informatica con utenti di altri sistemi non liberi. Un discorso simile vale per le periferiche, che per essere utilizzate necessitano di un piccolo programma, detto driver, in grado di spiegare al sistema come si usa la periferica in questione; anche qui l'interesse da parte dei produttori (che pure sta crescendo) è scarso e spesso accade che, non riuscendo la comunità a produrre drivers "liberi" per tutte le periferiche esistenti, alcuni dispositivi (come scanner, palmari, tavolette grafiche o a volte addirittura schede audio o video) non siano utilizzabili.

Al di là di questo GNU/Linux rimane senza dubbio il sistema più rivoluzionario dell'ultimo ventennio, e per le sue caratteristiche che lo rendono tanto sicuro ed efficiente qanto aperto e "smanettabile", sarà il sistema di riferimento per gli articoli di RePNI.