www.tesseract.it
Io, Informatico
Un Viaggio consapevole tra Informatica e Computer
Capitolo 3
Software e Sistemi Operativi
Carlo A. Mazzone
Tutti i diritti sono riservati. Nessuna parte di questa pubblicazione può essere riprodotta,
memorizzata in sistemi di archivio, o trasmessa in qualsiasi forma o mezzo, elettronico, meccanico,
fotocopia, registrazione o altri senza la preventiva autorizzazione dell'autore.
1 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Capitolo 3 – Software e Sistemi Operativi
Capitolo 3 – Software e Sistemi Operativi
Classifichiamo il software
Come quasi ogni elemento al mondo anche il software ha le sue inevitabili classificazioni. Infatti,
esso viene di norma differenziato in software di base e software applicativo.
Il software di base è costituito da programmi (o insiemi di programmi) di enorme rilievo (ma
d'altronde lo dice la parola stessa: è di base). In questa sottocategoria rientrano, ad esempio, i
Sistemi Operativi (software di sistema), programmi di utilità (detti anche tools) varia associati al
sistema operativo (compressione dati, manutenzione del sistema, ecc.) ed infine gli ambienti di
sviluppo (ovvero programmi per creare altri programmi) con di riflesso i relativi linguaggi di
programmazione .
Nella categoria del software applicativo rientrano tutti i programmi di norma utilizzati dall'utente
finale. Word, Excel, un programma di fotoritocco; sono tutti esempi di software appartenenti a
questa categoria. Software specifici per problemi specifici. Relativamente alla specificità del
software è possibile effettuare un'ulteriore distinzione tra software di tipo orizzontale e di tipo
verticale. Quelli di tipo orizzontale hanno scarsa specificità e sono quindi rivolti ad una utenza
molto vasta: un editor di testi oppure un software di contabilità generale sono esempi classici
ricadenti in tale categoria. I software di tipo verticale al contrario sono fortemente “tipizzati”. Essi
sono rivolti a ben specifiche tipologie di utenti: un software per la manutenzione della segnaletica
stradale, uno per il controllo di una centrale termoelettrica, piuttosto che un software per il controllo
del traffico aereo oppure uno per il supporto al calcolo per costruzioni critiche in zone sismiche
sono tutti esempi di software verticali.
Uno schema riepilogativo dovrebbe aiutarvi ad avere una visione d'insieme di quanto presentato:
Classificazione del software
2 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
Il software dal punto di vista della commerciabilità
Il software, seppur “impalpabile”, è un bene di consumo a tutti gli effetti. Questa considerazione
sfugge ai più. Molti infatti ritengono degni di essere acquistati con denaro contante solo i beni
hardware, probabilmente perché dotati di fisicità. D'altra parte questa considerazione può forse
aiutare a spiegare il fenomeno del software contraffatto (le cosiddette copie pirata o “craccate”). In
realtà, attualmente il costo effettivo del software supera abbondantemente quello dell'hardware.
Un'altra considerazione che ritengo degna di nota è relativa al fatto che il software, in linea del tutto
generale, non viene venduto ma piuttosto dato in licenza. Per comprendere questo aspetto basta
pensare al fatto che se effettivamente il software venisse venduto all'utente finale quest'ultimo
potrebbe farne delle copie e quindi rivenderlo. Ovviamente questo non è possibile. Ciò che l'utente
ottiene in cambio del denaro è una licenza d'uso del software stesso. E' la licenza a definire diritti e
limitazioni dell'utente nei confronti del software acquistato (ad esempio la possibilità di utilizzare il
software su di un singolo computer).
Tuttavia non esiste solo software a pagamento. Infatti, oltre a questo tipo di software spesso indicato
come commerciale o proprietario esistono altre differenti categorie di software.
La categoria di software più vicina al software proprietario è lo shareware.
Un software shareware è un tipo di software proprietario che viene distribuito liberamente,
normalmente tramite Internet, e che è di solito una versione con una scadenza temporale. Spesso
dopo 30 giorni di utilizzo il programma in questione smette completamente di funzionare oppure
tramite un apposita finestra visualizzata al lancio dell'applicazione (finestra nota come Nag Screen)
invita l'utente ad acquistare il software. Si tratta in definitiva di un software da provare per
verificarne l'utilità al fine di effettuare un acquisto consapevole.
In altri casi un programma di tipo shareware pur non
avendo un limite di tempo e di numero di utilizzi ha
invece una serie di limitazioni nelle possibilità d'uso.
Ad esempio, potrebbe essere impedito il salvataggio
del proprio lavoro in un file oppure, solo per fare un
esempio, nel caso di un programma che produce
immagini a queste potrebbe essere sovrapposta una
grande scritta che segnala il fatto che si tratta di
software di prova e quindi non licenziato. Ovviamente
dopo l'acquisto tali limitazioni saranno rimosse.
Spesso la procedura prevede dopo l'acquisto (di norma
realizzato tramite Internet) l'invio di una serie di
“codici di sblocco” atti ad abilitare le totali
funzionalità del software.
Il nag screen del software mIRC
Spesso il software di tipo shareware include
programmi le cui licenze hanno costi abbastanza
contenuti (normalmente qualche decina di euro) ma
altrettanto spesso risultano essere di buona qualità.
Su internet i software di tipo shareware vengono anche definiti come demoware oppure più spesso
come trialware. In realtà, a voler essere pignoli, qualche seppur piccola differenza tra le tipologie
3 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
demo, trial e shareware esiste. In generale una demo è un software sicuramente limitato nelle
funzionalità (viene distribuito a puro titolo dimostrativo) mentre una versione trial di norma
contiene tutte le funzionalità al fine appunto di rendere possibile la trial (prova) del software.
In ogni caso è spesso difficile
riuscire ad identificare queste
piccole differenze ed in linea
generale le tipologie in oggetto
possono essere considerate del
tutto simili. A rafforzare questa
considerazione c'è da osservare
come le licenze allegate a questo
tipo di software siano specifiche
per ogni software e che ogni
software
house
(azienda
produttrice di software ) o il
singolo sviluppatore rilascino
licenze
“personalizzate”.
E'
dunque importate leggere con
attenzione le singole licenze prima
di procedere all'acquisto al fine di
evitare spiacevoli sorprese. Ad
La finestra di accettazione della licenza (agreement) di WinZip: un
esempio potrebbe capitare di
famoso software shareware
immaginare di poter installare il
software acquistato su differenti macchine quando la licenza indica, tra le righe, che essa è
vincolata ad una singola installazione.
4 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
Software “libero” e Open Source
Le tipologia di software che vi ho presentato fino a questo punto, come già detto, rientrano nella
classificazione di software commerciale. Tuttavia oltre a questa categoria esiste una vera e propria
“galassia” di software non commerciale di norma identificato con il termine di software libero o
anche Open Source (a sorgente aperto).
In realtà software libero e open source non sono perfettamente sinonimi. Per chiarire questo aspetto
mi affido alle parole ed ai chiarimenti, che riporto di seguito, di Richard Stallman, il principale
fautore del software libero Si tratta di un estratto abbastanza lungo ma meritevole di attenzione
critica in quanto ricco di innumerevoli spunti di riflessione1.
“
Quando definiamo “libero” il software, intendiamo che rispetta le libertà
essenziali degli utenti: la libertà di eseguire il programma, di studiare il
programma e di ridistribuire delle copie con o senza modifiche. Questa è
una questione di libertà, non di prezzo. Per capire il concetto,
bisognerebbe pensare alla “libertà di parola” e non alla “birra gratis”
[NdT: il termine free in inglese significa sia gratuito che libero, in
italiano il problema non esiste].
Queste libertà sono d'importanza vitale. Sono delle libertà essenziali, non
soltanto per quanto riguarda l'utente in sé, ma perché queste libertà
promuovono la solidarietà sociale, cioè lo scambio e la cooperazione. Diventano sempre più
importanti man mano che la nostra cultura e le attività delle nostre vite sono sempre più legate al
mondo digitale. In un mondo di suoni, immagini e parole digitali, il software libero diventa sempre
più una cosa simile alla libertà in generale.
Il logo del Progetto GNU
Decine di milioni di persone in tutto il mondo usano oggi del software libero; nelle scuole di alcune
regioni dell'India e della Spagna viene insegnato agli studenti l'uso del sistema operativo
GNU/Linux, che è un sistema operativo libero. Tuttavia la maggior parte di questi utenti non sono
mai venuti a conoscenza delle ragioni etiche per cui abbiamo sviluppato questo sistema e abbiamo
creato la comunità del software libero, perché oggi questo sistema e questa comunità sono molto
spesso descritte con il termine “open source”, e queste cose vengono riferite a una diversa
filosofia, in cui, di solito, non si fa neppure riferimento a queste libertà.
Il movimento per il software libero sta facendo una campagna per le libertà degli utenti del
computer dal 1983. Nel 1984 abbiamo fatto partire lo sviluppo del sistema operativo libero GNU,
in modo da non dover utilizzare i sistemi operativi non liberi che negano la libertà ai propri utenti.
Nel corso degli anni Ottanta abbiamo sviluppato la maggior parte dei componenti essenziali di
questo sistema, così come abbiamo sviluppato la Licenza Pubblica Generica GNU, una licenza
studiata appositamente per proteggere la libertà di tutti gli utenti di un programma.
Tuttavia non tutti gli utenti e sviluppatori del software libero sono in accordo sugli obiettivi del
movimento del software libero. Nel 1998 una parte della comunità del software libero si è staccata
ed ha dato origine ad una campagna nel nome dell'“open source”. Questo era stato
originariamente proposto per evitare la possibile confusione del termine inglese “free software”,
ma ben presto questo termine è diventato associato a delle visioni filosofiche piuttosto diverse da
quelle del movimento del software libero.
1
Per ulteriori dettagli potete fare riferimento al sito http://www.gnu.org/
5 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
Alcune delle persone che promuovono l'“open source” lo considerano come una “campagna di
marketing per il software libero”, che vorrebbe attrarre i dirigenti delle aziende mostrando i
benefici pratici ed evitando di citare gli ideali di cosa sia giusto o sbagliato, cose il cui ascolto
potrebbe non essere gradito. Altre persone che promuovono l'“open source” rigettano
completamente i valori etici e sociali del movimento del software libero. Qualunque sia la loro
visione, quando fanno una campagna per l'“open source” non fanno riferimento né prendono le
difese di questi valori. Il termine “open source” è stato ben presto associato con la pratica di
citare soltanto i valori pratici, come fornire software più potente e più affidabile. Molti dei
sostenitori dell'“open source” sono giunti a questo da allora e questa pratica è quello che ha fatto
sì che sia diventato questo il significato di questo termine.
Quasi tutto il software open source è software libero; i due termini descrivono all'incirca la stessa
categoria di software. Ma si basano su valori fondamentalmente diversi. L'open source è una
metodologia di sviluppo; il software libero è un movimento sociale. Per il movimento per il
software libero, il software libero è un imperativo etico, perché soltanto il software libero rispetta
la libertà degli utenti. Al contrario la filosofia dell'open source pensa a come "migliorare" il
software soltanto da un punto di vista pratico. Dice che il software non libero è una soluzione non
ottimale. Per il movimento per il software libero, tuttavia, il software non libero è un problema
sociale e la soluzione è passare al software libero.
Software libero. Open source. Se si tratta dello stesso software, ha importanza quale nome venga
utilizzato? Sì, perché parole differenti portano con sé idee diverse. Benché un programma libero, in
qualunque modo venga chiamato, vi dia oggi la stessa libertà, stabilire la libertà in modo che
perduri nel tempo dipende soprattutto dall'insegnare alla gente il valore della libertà. Se volete
aiutarci in questo è essenziale che parliate di “software libero”.
Noi del movimento del software libero non pensiamo che il campo dell'open source sia il nemico; il
nemico è il software proprietario. Vogliamo però che la gente sappia che noi ci battiamo per la
libertà e che pertanto non vogliamo essere scorrettamente identificati come sostenitori dell'open
source.
Errori comuni nell'attribuire il significato dei termini “software libero” e “open source”
Il termine “software libero” ha un problema di erronea interpretazione: un significato non
intenzionale, il significato “il software che si può avere a costo zero” rientra nel significato del
termine così quanto il significato che realmente si voleva dare a questo termine, “il software che dà
agli utenti certe libertà”. Cerchiamo di puntualizzare questo problema con la pubblicazione della
definizione di software libero e dicendo: pensate alla “libertà di parola” e non alla “birra gratis”.
Questa non è una soluzione perfetta; non riesce a eliminare del tutto il problema. [NdT: il termine
free in inglese significa sia gratuito che libero, in italiano il problema non esiste]. Un termine
corretto e non ambiguo sarebbe meglio, se non avesse altri problemi.
Sfortunatamente tutte le alternative in inglese pongono alcuni problemi. Abbiamo preso in
considerazione molti termini alternativi, che sono stati proposti, ma nessuno di questi è certamente
la soluzione “giusta”, tale cioè che passare ad utilizzare quel termine sarebbe una buona idea. [In
inglese] ogni proposta per sostituire il termine “software libero” ha un certo tipo di problema a
livello semantico. Ed anche il termine “software open source” rientra in questa categoria.
La definizione ufficiale di “software open source” (che è pubblicata dalla Open Source Initiative e
che è troppo lunga per essere citata qui) venne creata derivandola in modo indiretto dai nostri
6 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
criteri per il software libero. Tuttavia non è la stessa cosa: è più permissiva in alcuni aspetti,
pertanto i sostenitori dell'Open Source hanno accettato alcune licenze che noi consideriamo non
accettabili perché troppo restrittive per gli utenti. Ma nella pratica è una definizione abbastanza
vicina alla nostra.
Tuttavia, il significato ovvio della espressione “software open source” è “Puoi guardare il codice
sorgente” e la maggior parte delle persone sembra attribuire questo significato al termine. Questo
è un criterio molto più debole che non quello di software libero e molto più debole della definizione
ufficiale di open source. In questo criterio rientrano molti programmi che non sono liberi né open
source.
Dal momento che il significato ovvio del termine “open source” non è quello che intendono i loro
sostenitori, si è avuto come risultato che molte persone intendono in modo scorretto il significato
del termine. Ecco come lo scrittore Neal Stephenson ha definito l'“open source”:
Linux è “open source”, il che semplicemente significa che ognuno può avere una copia del
codice sorgente.
Non penso che abbia deliberatamente cercato di rigettare o di porre in dubbio la definizione
“ufficiale”. Penso che abbia semplicemente utilizzato il significato che, in inglese, viene
convenzionalmente associato a questo termine. Lo stato del Kansas ha pubblicato una definizione
simile:
Fate uso del software open-source software (OSS). OSS è quel software per il quale il codice
sorgente è disponibile liberamente e pubblicamente anche se i termini delle specifiche licenze
variano così come varia quello che è permesso fare con quel codice.
Le persone che sostengono l'open source cercano di affrontare questo problema indicando la loro
definizione ufficiale, ma questo approccio correttivo è molto meno efficace per loro di quanto lo
sia, nel nostro caso, per noi. Il termine “software libero” ha due significati naturali, uno dei quali
è il significato che intendiamo esprimere, pertanto una persona che abbia compreso la differenza
tra libero e gratuito, come la differenza tra la “libertà di parola e non la birra gratis”, non
prenderà in seguito il significato sbagliato. Invece il termine “open source” ha soltanto un
significato naturale e questo significato è diverso da quello che intendono dire le persone che sono
a favore dell'“open source”. Pertanto non vi è un modo veloce di spiegare e di giustificare la
definizione ufficiale di “open source”. Questo crea la peggiore delle confusioni.
Differenti valori possono portare a conclusioni simili ... ma non sempre
I gruppi radicali degli anni Sessanta hanno avuto la reputazione di essere faziosi ed interessati
solo a se stessi: alcune organizzazioni si divisero perché vi era un disaccordo nei dettagli della
strategia e i due nuovi gruppi che si formarono a seguito della scissione si trattavano l'un con
l'altro come nemici, piuttosto che come organizzazioni con obiettivi e valori di fondo pressoché
simili. La destra fece leva su questo aspetto per criticare l'intera sinistra.
Alcuni tentano di screditare il movimento per il software libero facendo un paragone tra il
disaccordo tra noi e l'open source con il disaccordo di quei gruppi radicali. Hanno preso tutto alla
rovescia. Noi non siamo in accordo con il gruppo dell'open source negli obiettivi e nei valori di
base, ma le nostre visioni ci portano, in molti casi, verso lo stesso comportamento pratico, come
sviluppare software libero.
7 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
Come risultato le persone del movimento del software libero e le persone della campagna per
l'open source spesso lavorano assieme a progetti pratici come sviluppatori di software. È notevole
come visioni tanto diverse dal punto di vista filosofico possano, così spesso, motivare persone che
la pensano in modo differente a partecipare ad un progetto in comune. Ciò nonostante le visioni
sono molto differenti e ci sono situazioni che ci portano ad compiere azioni molto differenti.
L'idea dell'open source è quella che permettere agli utenti di apportare modifiche al software e di
ridistribuirlo renderà il software più potente e più affidabile. Ma questo non è garantito. Gli
sviluppatori del software proprietario non sono necessariamente degli incompetenti e a volte
producono dei programmi che sono potenti ed affidabili, anche se non rispettano le libertà degli
utenti. Come reagiranno a questo gli attivisti del software libero e gli entusiasti dell'open source?
Una persona che sia solamente un entusiasta dell'open source, e dunque una persona che non sia
affatto influenzata dagli ideali del software libero, dirà: “Sono sorpreso che voi siate stati in grado
di fare un programma che funzioni così bene senza utilizzare il nostro modello di sviluppo, ma ce
l'avete fatta. Come posso avere una copia del vostro programma?” Questo favorirà atteggiamenti
che allontanano dalle nostre libertà, che rischieranno di andare perse.
Una persona che sia un attivista del software libero dirà invece: “Il vostro programma è molto
attraente, ma non può valere il prezzo della mia libertà, per cui devo farne a meno. Piuttosto darò
il mio supporto ad un progetto che sviluppi un'alternativa libera.” Se noi consideriamo un valore
la nostra libertà, allora agiremo in modo da mantenerla e da difenderla.
Anche il software potente ed affidabile non sempre è un bene
L'idea che vogliamo che il software sia potente ed affidabile nasce dall'ipotesi che il software è
fatto per essere utile a chi lo usa. Se è potente ed affidabile sarà di maggiore utilità per gli utenti.
Ma si può dire che un software è utile agli utenti solo se rispetta le loro libertà. Cosa accade se il
software è progettato in modo da mettere i suoi utenti in catene? In questo caso l'affidabilità vuol
soltanto dire che le catene saranno più difficili da rimuovere.
Sotto la pressione delle società di produzione cinematografica e discografica, il software che
dovrebbe essere a disposizione degli individui è sempre più spesso specificatamente progettato per
porli invece sotto restrizione. Questa minacciosa caratteristica è nota come DRM, cioè Digital
Restrictions Management (vedi DefectiveByDesign.org) ed è l'antitesi dello spirito delle libertà che
il software libero cerca di ottenere. E non è solo una questione ideologica: dal momento che lo
scopo del DRM è quello di bloccare la vostra libertà, gli sviluppatori del DRM fanno sì che per voi
sia difficile, impossibile e perfino illegale cambiare il software che ha il DRM.
Tuttavia alcun sostenitori dell'open source hanno fatto una proposta per un software “DRM open
source”. La loro idea è che, con la pubblicazione del codice sorgente progettato per impedirvi
l'accesso a supporti criptati e per dare la possibilità ad altri di cambiarli, si produrrà un software
più potente e più affidabile nel porre le restrizioni a quelli che come voi siete gli utenti. E questo
software vi verrà inviato in dispositivi che non vi è permesso cambiare.
Questo software potrebbe anche essere “open source”, ed utilizzare il modello di sviluppo
dell'open source, ma non sarà software libero, perché non rispetterà le libertà degli utenti dove
quel programma verrà eseguito. Se il modello di sviluppo dell'open source riuscirà a fare un
software più potente e più affidabile nell'imporvi delle restrizioni, allora quello che si sarà ottenuto
sarà di aver reso le cose ancora peggiori.
8 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
Paura della libertà
Il più importante motivo che ha portato al termine “software open source” è che le idee etiche del
“software libero” non sono bene accettate da parte di alcune persone. Questo è vero: parlare di
libertà, di questioni etiche, della responsabilità e della convenienza significa chiedere alle persone
di pensare a delle cose che preferirebbero ignorare, come chiedersi se si stanno comportando in
maniera eticamente corretta. Questo può causare un senso di imbarazzo e alcune persone possono
decidere di risolvere la questione decidendo di non pensare a queste cose. Questo però non implica
che dobbiamo smettere di parlare di queste cose.
Tuttavia questo è quello che i capi dell'“open source” hanno deciso di fare. Hanno ritenuto che
evitando di parlare di questioni etiche e di libertà e parlando soltanto dei benefici pratici
immediati di alcuni programmi liberi, sarebbero stati in grado di “vendere” più efficacemente il
software a certi clienti, in particolar modo in ambito aziendale.
Questo approccio si è mostrato, a modo suo, efficiente. La retorica dell'open source ha convinto
molte aziende e persone private ad utilizzare, e persino sviluppare, software libero, cosa che ha
fatto estendere la nostra comunità, ma soltanto alla superficie, ad un livello pratico. La filosofia
dell'open source, con i suoi valori esclusivamente pratici, impedisce la comprensione delle idee più
profonde del software libero; porta molte persone nella nostra comunità, ma non insegna loro a
difenderla. Ciò è un bene finché le cose vanno bene, ma non è abbastanza per mettere al sicuro la
libertà. Attirare gli utenti verso il software libero li porta soltanto verso il primo passo per
diventare difensori delle loro libertà.
Prima o poi questi utenti saranno invitati a tornare indietro ad utilizzare software proprietari per
qualche ragione di vantaggio pratico. Molte aziende cercano di offrire una tentazione di tal genere,
alcune offrendo perfino delle copie gratis. Perché gli utenti dovrebbero rifiutare? Lo faranno
soltanto se avranno imparato a dare un valore alla libertà che il software libero dà a loro, a dare
un valore alla libertà in quanto tale piuttosto che alla convenienza tecnica e pratica di un
particolare software libero. Per diffondere questa idea dobbiamo parlare di libertà. La tecnica
dell'“evita di parlarne” può essere utile nei confronti delle aziende, ma fino ad un certo punto: se
ne si abusa, al punto da diventare una cosa comune, si corre il rischio che l'amore per le libertà
diventi quasi qualcosa di eccentrico.
Questa situazione pericolosa, ora descritta, è proprio ciò che abbiamo noi ora. Molte persone
coinvolte nel software libero dicono ben poco sulla libertà (di solito perché cercano di essere “il
più possibile accettabili dalle aziende”. In particolar modo i distributori di software mostrano
questo atteggiamento. Quasi tutti i distributori di sistemi operativi GNU/Linux aggiungono
pacchetti proprietari al sistema libero di base e invitano gli utenti a considerarli come un
vantaggio, piuttosto che un passo indietro che li allontana dalla libertà.
Le aggiunte (add-on) software proprietarie e le distribuzioni GNU/Linux parzialmente non libere
trovano un terreno fertile perché la maggior parte della nostra comunità non insiste sulla libertà
del proprio software. Questa non è una coincidenza. La maggior parte degli utenti dei sistemi
GNU/Linux hanno fatto la conoscenza di questi sistemi dalle discussioni sull'“open source”, nelle
quali non veniva detto che l'obiettivo era la libertà. La pratica di non proteggere a tutti i costi la
libertà e la decisione di non parlare della libertà vanno di pari passo e ognuna promuove l'altra.
Per superare questa tendenza, dobbiamo parlare di più, e non di meno, di libertà. 1”
Per informazioni su GNU rivolgersi, possibilmente in inglese, a [email protected]; telefono: +1-617-542-5942; fax: +1617-542-2652. Tratto da http://www.gnu.org/philosophy/open-source-misses-the-point.it.html
1
9 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il software dal punto di vista della commerciabilità
Le licenze relative al software libero sono (inaspettatamente per un profano) davvero tantissime. In
questo contesto mi limito a citare i nomi e gli aspetti più significativi.
Un primo termine che è facile incontrare nel contesto del software libero è PD. L'acronimo si
riferisce al software di tipo Public Domain (in italiano di Pubblico Dominio). Si tratta di software
rilasciato senza alcuna licenza specifica e quindi non coperto da copyright. L'autore rinuncia a
qualsiasi tipo di diritto sul software in questione.
Software freeware è un altro appellativo che si riferisce in generale a software gratuito (free in
questo caso sta appunto per gratuito). Ma bisogna fare molta attenzione a non usare questo termine
come sinonimo di free software. In quest'ultimo caso infatti il termine free sta per libero e quindi,
free software significa software libero.
Altri termini e relative tipologie di software che si incontrano facilmente sono:
Adware: si tratta di un software che viene distribuito a titolo gratuito ma che contiene varie forme
di pubblicità (la “Ad” iniziale del nome è la contrazione di nome è la contrazione di advertising
ovvero pubblicità). Sono programmi da utilizzare con una certa attenzione in quanto in alcuni casi
possono nascondere delle funzionalità pericolose per la privacy dell'utente.
Donationware: in questo contesto l'autore richiede una donazione facoltativa per l'utilizzo del
software (a volte anche un favore di terzi, enti benefici o similari). Essendo la donazione non
obbligatoria tale software può ricadere nell'ambito del freeware.
Abandonware: si tratta di software ormai obsoleti e non più appetibili dal punto di vista
commerciale per le aziende che li avevano prodotti. Spesso vengono rilasciati gratuitamente come a
scopo pubblicitario per invogliare all'acquisto di nuove versioni del pacchetto in questione.
Un ultimo nome per una tipologia di software che voglio presentarvi, proposto dal sottoscritto, è
Vivariumware.
"Vivariumware" è un neologismo che nasce con l'intento di dare una collocazione tipologica al
software ed alle applicazioni in generale nate in ambito sperimentale e didattico. Il termine è
l'unione delle parole Vivarium, dall'inglese (di derivazione latina) con significato di "vivaio" e dalla
arcinota parola "ware" che sempre dall'inglese ha il significato di materiale. Si tratta, dunque, di
materiale da vivaio; ovvero progetti nati con lo scopo di insegnare un determinato contesto
tecnologico che possono tuttavia essere i semi di futuri sviluppi.
Si tratta del lavoro prodotto da gruppi di persone (principalmente ragazzi e di norma in ambito
scolastico come esercitazione all’uso delle tecnologie informatiche) che si avvicinano per la prima
volta all’HTML, alla produzione di pagine per internet, così come a linguaggi di programmazione
come il C o il Pascal.
10 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
I Sistemi Operativi
I Sistemi Operativi
I sistemi operativi che nell'ambito del software di base fanno la parte del leone sono gli
intermediari tra le funzionalità dei programmi generici e l'hardware sottostante. Le varie versioni di
Microsoft Windows: 95, 98, 2000, XP, Vista, 7 sono tutti sistemi operativi (sicuramente i più
conosciuti). Sempre per rimane nel contesto Microsoft è importante citare l'ormai obsoleto MSDOS. Ma altri ne esistono e sono di enorme importanza: Unix e Linux, per citare forse i più
importanti. Tutti questi hanno fondamentalmente lo stesso compito: evitare che i vari programmi
applicativi si debbano preoccupare degli innumerevoli dettagli “di basso livello” relativi
all'hardware.
La questione è presto spiegata. Un applicativo qualsiasi, ad esempio
Microsoft Word, deve poter accedere all'hardware del sistema; per leggere o
scrivere un file su disco deve poter accedere al disco stesso. Ovviamente,
ogni disco ha le sue specifiche caratteristiche fisiche. A tal proposito pensate
alla differenza tra un disco fisso ed un cd-rom. In questa ottica, senza
l'intermediazione del sistema operativo la costruzione di un applicativo da
parte di uno sviluppatore risulterebbe essere un'opera titanica. Ciò che fa
l'applicativo e di limitarsi alla chiamata di una funzionalità messa a
disposizione dal sistema operativo (nota come system call) con la quale
delega il sistema operativo stesso ad eseguire l'accesso all'hardware per suo
conto.
Schematizzando al massimo l'organizzazione di un sistema operativo esso
può essere visto essenzialmente come composto da due principali sezioni:
una denominata kernel (nucleo) che è quella a più stretto contatto con
Il ruolo del Sistema
l'hardware della macchina ed un'altra denominata shell (guscio) a più stretto
Operativo
contatto con l'utente. La shell infatti si preoccupa di intercettare le richieste
dell'utente e di passarle agli strati più interni del sistema operativo per
esaudire le richieste dell'utente stesso.
L'utente interagisce con la shell del sistema operativo.
Schematizzando ulteriormente quest'ultimo aspetto si può dire che l'interfaccia utente può essere di
due tipi fondamentali: grafica oppure testuale.
L'interfaccia grafica è ormai familiare per chiunque abbia visto, anche se da una certa distanza, un
Personal Computer. Essa infatti è l'insieme delle icone e delle voci, selezionabili normalmente
11 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
I Sistemi Operativi
attraverso l'utilizzo del mouse, che consentono le normali operazioni di lancio di programmi, copia
di file e similari.
Tipica interazione con una interfaccia grafica
L'interfaccia testuale, ormai ahimè sconosciuta ai più, è un metodo alternativo, ma se conosciuto
di enorme e superiore potenza, per lanciare comandi e programmi sul sistema digitando il testo
appropriato per il comando specifico. Ad esempio, se voglio vedere la lista di determinati file su di
una macchina Windows, scriverò “DIR” in una apposita finestra di comandi, batterò il tasto
“Invio” ed otterrò un risultato analogo (ma in semplice testo e senza icone) all'elenco visibile
aprendo con l'interfaccia grafica la cartella “Documenti”.
Una tipica interazione testuale con il sistema operativo
12 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
I diversi ruoli del Sistema Operativo
I diversi ruoli del Sistema Operativo
Una schematizzazione molto netta ma efficace per comprendere le funzionalità di un Sistema
Operativo può essere quella di individuare nel Sistema Operativo stesso i quattro ruoli
fondamentali che esso svolge:
•
•
•
•
gestione dei dischi (più in generale dei dispositivi di memorizzazione di massa)
gestione dei programmi (esecuzione e relativo controllo)
gestione della memoria
gestione dei dispositivi di input – output
Gestione dei dischi ed organizzazione dei contenuti: File e cartelle
Su di una cosa dovremmo essere tutti d'accordo: un computer gestisce dei contenuti. Un documento
di testo, un'immagine, la nostra raccolta di canzoni preferite: in generale materiale che la macchina
deve poter conservare al suo interno per poterla gestire a seconda delle nostre richieste. Tali
contenuti vengono organizzati in contenitori “virtuali” noti come file (archivi).
Prima di entrare nel dettaglio di tale organizzazione sarà bene spendere qualche parola sui supporti
utilizzati per memorizzare tali file. La memoria principale di lavoro della macchina, la RAM, al di
la delle limitate capacità di memorizzazione, non è in grado di conservare al suo interno i dati una
volta che essa viene privata dell'elettricità necessaria al suo funzionamento. Ciò significa
banalmente che è necessario memorizzare i dati su supporti alternativi: le memorie di massa (note
anche come memorie esterne per distinguerle dalla memoria RAM). Tale termine indica tutti quei
supporti come ad esempio gli hard disk (noti anche come dischi fissi o dischi rigidi), i CD (Compact
disk), DVD (Digital Versatile Disk), dischetti (floppy) e quant'altro in grado di memorizzare in
maniera permanente i dati su di essi.
E' intuitivo comprendere come i file non vengono buttati a casa su tali dispositivi. Al contrario essi
vengono gestiti secondo una ben precisa organizzazione nota con il termine tecnico di file system.
Il file system, presente su ciascun dispositivo, è quindi una struttura atta a gestire in maniera
ordinata ed efficace i file.
Nel corso degli anni sono stati sviluppati vari tipi di file system per differenti sistemi operativi: fat,
ntfs, ext, ext2, ext3 e tanti altri. Ognuno ha le sue caratteristiche peculiari e migliorie rispetto ad
analoghe versioni precedenti ma sempre lo stesso compito: consentire la gestione dei file.
Il modo più comune in cui un file system organizza i file è noto come struttura ad albero. Si tratta
di una organizzazione molto simile ad un albero genealogico; in buona sostanza qualcosa molto
vicino ad un albero reale con la radice rivolta verso l'alto. Gli elementi fondamentali che
costituiscono l'albero (nodi) sono noti come cartelle (directory o folder in inglese).
Le cartelle fungono da veri e propri contenitori per i file e permettono quindi una organizzazione
razionale e funzionale di questi ultimi.
13 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei dischi ed organizzazione dei contenuti: File e cartelle
Ogni cartella può contenere uno o più file. Ogni sistema operativo durante la sua installazione
provvede a creare tutta una serie di cartelle necessarie al proprio funzionamento ed atte a contenere i
file che costituiscono il sistema operativo stesso. Sta poi all'utente il compito di creare le proprie
cartelle personali per tenere ordinati i propri contenuti e per trovare quindi facilmente i file ai quali
di volta in volta è interessato. In definitiva il file system svolge una funzione molto simile ad una
scaffalatura in cui su ogni ripiano (cartella) mettiamo da parte i barattoli (file) contenenti le nostre
conserve (contenuti). L'esempio appena portato, sebbene estremamente elementare, può aiutare
meglio a capire il significato e la funzione dei nomi dei file.
Un nome di file non è altro che una etichetta data al file stesso che permette di risalire in maniera
pressoché immediata al suo contenuto ed in generale anche alla sua funzione.
Un nome di file è in generale seguito da una sequenza di caratteri, nota come estensione del file,
separata dal nome stesso da un punto. L'estensione di un file, che non ha assolutamente nulla a che
vedere con la dimensione del file, serve a meglio classificare il file stesso. Estensioni molto comuni
sono ad esempio: .doc (per i documenti di testo come quelli prodotti da word), .gif e .jpg (per file
contenenti immagini), .mp3 (file musicali).
A proposito di estensioni di file mi preme sottolineare che la semplice modifica dell'estensione di
un file non influenza assolutamente il contenuto del file stesso. Riprendendo l'esempio che vi ho
fatto a proposito della scaffalatura cambiare l'estensione ad un file è come cambiare etichetta ad un
barattolo di peperoncini piccanti mettendoci, ad esempio, un' etichetta con la scritta “pomodori”: il
contenuto del barattolo sarà sempre lo stesso e ce ne potremmo accorgere, a nostre spese, solo dopo
aver assaggiato un piatto di pasta al pomodoro preparato dopo aver rinominato in maniera così
imprudente il nostro barattolo. Se vogliamo infatti trasformare il contenuto del nostro file, ad
esempio un file scritto per essere utilizzato con il programma word (estensione .doc) in un file
utilizzabile su internet (estensione .html) dobbiamo utilizzare specifiche funzioni di conversione per
appunto “convertire”, come si dice in gergo, il nostro file da un formato all'altro.
Da notare, a proposito di estensioni, che molti degli attuali utenti di computer non conoscono affatto
l'esistenza delle estensioni. Ciò è dovuto al fatto che la stragrande maggioranza degli utenti utilizza
come sistema operativo Microsoft Windows e che Windows stesso, nelle sue ultime versioni,
nasconde in maniera predefinita1 le estensioni dei file. In ogni caso l'estensione esiste e gioca,
particolarmente con tale sistema operativo, un ruolo fondamentale. In generale, infatti, l'estensione
determina in primo luogo l'icona associata allo specifico file. Inoltre essa determina il programma
che il sistema operativo richiama quando si prova ad aprire un certo file (tipicamente con un doppio
clic sull'icona).
Il termine informatico per indicare una situazione predefinita in un dato contesto è 'default'.
1
14 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei dischi ed organizzazione dei contenuti: File e cartelle
Per abilitare Windows a visualizzare le estensioni sarà necessario richiedere esplicitamente tale
visualizzazione come mostrato nella figura seguente richiamabile tramite la voce “opzioni cartella”
del menu “strumenti” di “Esplora risorse”.
Torniamo ora un attimo a parlare delle caratteristiche generiche dei file. In realtà esistono diverse
differenze per quanto riguarda le regole con cui è necessario gestire i file ed i loro nomi a seconda
del sistema operativo e dello specifico file system utilizzato dal sistema operativo stesso. Ad
esempio nel caso del vecchio sistema operativo DOS è necessario seguire la regola nota come 8+3,
vale a dire massimo 8 caratteri per il nome e 3 caratteri per l'estensione. Nel caso dei nuovi sistemi
operativi sempre “targati” Microsoft come ad esempio da “Windows 95” in poi è possibile
utilizzare fino a 255 caratteri per il nome del file. Esistono comunque delle limitazioni per quanto
riguarda gli specifici caratteri che possono essere usati: i seguenti, ad esempio, vengono considerati
“caratteri speciali” e non possono essere utilizzati per creare un nome di file:
?=,^*|;:[]/\
In generale per conoscere le specifiche precise da utilizzarsi bisogna fare riferimento alla
manualistica dello specifico sistema operativo. Anche cose banali come ad esempio la differenza tra
lettere minuscole e maiuscole potrebbero essere sostanziali; per concretezza vi segnalo che mentre
per i sistemi operativi di casa Microsoft (tutte le versioni di DOS e Windows) non esiste alcuna
differenza tra minuscole e maiuscole al contrario per i sistemi operativi tipo Unix e Linux la
differenza è sostanziale (CiccioPasticcio.doc è diverso da cicciopasticcio.doc) .
15 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei dischi ed organizzazione dei contenuti: File e cartelle
Comunque, niente paura, le cosa fondamentali da sapere relativamente ai file non sono così tante e
dopo un po' di esperienza pratica il tutto dovrebbe risultare abbastanza semplice.
A spasso tra le cartelle: i percorsi
Un aspetto di estrema importanza relativamente alla gestione dei file è l'indicazione della loro
posizione all'interno della struttura ad albero che li ospita. In altre parole spessissimo non è
sufficiente indicare semplicemente il nome del file ma è necessario riferirsi ad esso indicando con
precisione la cartella in cui esso si trova. Si parla in questo caso di percorso (path) del file.
Un percorso può essere di due tipi: percorso assoluto o percorso relativo.
Un percorso assoluto rappresenta la posizione del file rispetto alla radice dell'albero in cui il file è
presente ed è costituito dalla sequenza di cartelle che si incontrano percorrendo l'albero a partire
appunto dalla sua radice. Per indicare la radice di un file system si utilizza il simbolo '/' (barra
obliqua ma più semplicemente 'slash') nel mondo dei sistemi Unix e Linux mentre si utilizza il
simbolo '\' (barra rovesciata ma più semplicemente 'backslash') nel mondo dei sistemi Microsoft.
Un esempio può essere il seguente:
\windows\system32\cmd.exe
Nell'esempio, ovviamente riferito ad un sistema Windows, il primo '\' indica la radice, gli altri
servono da separatori tra i nomi delle cartelle e nella parte finale con il nome del file stesso.
A proposito di differenza tra sistemi Unix-Linux e Microsoft c'è da dire che essendo l'esempio
appena portato relativo al mondo Windows esso è incompleto. Infatti, nel caso dei sistemi di casa
Microsoft, ogni dispositivo di memorizzazione di massa deve avere una sua specifica radice. Per
poter accedere ad un file qualsiasi è quindi necessario specificare a quale dispositivo ci stiamo
riferendo. Per indicare i vari dispositivi riconosciuti dal sistema si fa uso delle lettere dell'alfabeto
seguite dal simbolo ':' (due punti). Ad esempio:
A: B: C: D: E:
Universalmente la prima lettera 'A' si riferisce ai floppy inseriti nell'apposito drive (lettore). La B Si
riferisce ad un eventuale secondo lettore di floppy. In realtà il secondo lettore di floppy è
praticamente in disuso; ma anche il primo verrà, in un prossimo futuro, abolito data la scarsa
capacità di memorizzazione dei dischetti magnetici e la loro propensione a smagnetizzarsi
(consiglio: tenete lontani i vostri floppy dal telefono cellulare). La simbologia 'C:' viene invece
utilizzata per indicare il primo hard-disk presente nella macchina. Ad essere precisi, in realtà, 'C:'
indica la prima partizione del primo hard-disk.
Il disco fatto a fette: le partizioni
Una partizione è un spazio ricavato su di un hard-disk. Infatti, ogni hard-disk può essere
'partizionato' in più sezioni (le partizioni, appunto). In generale si partiziona un disco per potervi
installare più sistemi operativi1 oppure per tenere separata l'area in cui si installa il sistema operativo
Anche se è possibile installare sullo stesso disco differenti sistemi operativi, ovviamente, uno solo di essi sarà
caricato all'accensione della macchina. Tale situazione è tipica, ad esempio, di sistemi in cui sono installati sia
Windows che Linux. Un apposito programma consente in fase di partenza (boot) di selezionare il sistema operativo
con il quale si vuole lavorare. Tale situazione prende il nome di dual boot se i sistemi installati sono due; multi boot
più in generale.
1
16 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei dischi ed organizzazione dei contenuti: File e cartelle
da quella in cui si copiano i propri file (risulta più semplice reinstallare il sistema). Le altre lettere
disponibili dalla 'D' in poi vengono assegnate alle varie partizioni dei dischi rigidi presenti nel
sistema. In successione vengono poi assegnate le lettere per gli eventuali lettori CD e/o DVD. Una
eventuale pen-drive così come una macchina fotografica digitale occuperanno (di norma) le prime
lettere disponibili. Una lettera è infine necessaria per ogni dispositivo di memorizzazione di rete che
viene collegato alla macchina in questione (ad esempio un hard disk su di un altra macchina che
condivide con la nostra i propri file).
Nel caso di sistemi Unix il concetto di radici diverse per i vari dispositivi non esiste. Per poter
utilizzare un dispositivo è necessario collegare o, come si dice in gergo 'montare' la radice del
dispositivo al di sotto di una cartella già presente nel file system (solitamente tale cartella si chiama
'mnt'). Dopo la fase di mount quella che sarebbe la radice del dispositivo montato diventa una
semplice sottodirectory del punto di mount.
Tutto è “relativo”: anche i percorsi
Passiamo ora finalmente a parlare di percorsi relativi. L'aggettivo relativo si riferisce alla
posizione (cartella) in cui ci troviamo. Vediamo di capirci meglio. Un concetto molto utilizzato
nella gestione dei file è quello di “directory corrente”. Per capire a fondo tale situazione dobbiamo
inevitabilmente porci nell'ottica del file sul quale stiamo lavorando. Se ci immedesimiamo nel file
in questione ci troveremo fisicamente su di una cartella (la directory corrente) dalla quale potremo
vedere verso l'alto la directory genitrice della directory in cui siamo e guardando verso il basso
eventuali directory discendenti (nodi figli). La directory in cui ci troviamo viene formalmente
indicata con il simbolo “.” (punto), mentre la directory genitrice (dalla quale discende quella in cui
ci troviamo) viene formalmente indicata con la simbologia “..” (si legge punto – punto). Tale
situazione viene di norma utilizzata quando il file in esame deve richiamare un eventuale altro file.
Supponiamo, ad esempio, che che il file in questione debba richiamare un file di nome “prova.txt”
che si trova fisicamente nella directory immediatamente superiore a quella in cui si trova il file che
lo chiama. Il riferimento sarà, banalmente,
“../prova.txt”
Essendo i riferimenti relativi, tali percorsi saranno validi sia negli ambienti Unix che in quelli
Windows. La differenza è, come già detto, data dal fatto che nei primi il simbolo di separazione è
dato da “/” mentre nei secondi da “\”.
La simbologia “.” e “..” è utile anche quando si utilizzano interfacce testuali e si vuole “navigare”
(spostarsi) all'interno delle directory del file system. Un apposito comando “cd” (change directory),
valido su quasi tutti i sistemi operativi, consente tali “passeggiate”. Dando ad esempio il comando
con la sintassi “cd ..” ci spostiamo su di un livello nell'albero. Da notare come tale comando
consenta la sostituzione della simbologia 'relativa' “..” con percorsi specificati in maniera assoluta.
Chiudendo questa breve panoramica sui file system mi preme sottolineare che come di consueto
dietro un mondo se ne nascondo vari altri. Ciò che voglio dire è che quello che vi ho presentato è un
sunto estremamente ridotto degli aspetti e problematiche connesse all'argomento. Solo per voler fare
un esempio di dovrebbe menzionare il fatto che i sistemi operativi minimamente evoluti associano
ad ogni file una serie di permessi che consentono solo ad alcuni utenti si eseguire certe operazioni
con essi (lettura, scrittura, esecuzione, ...) La cosa importante, comunque, è come di consueto
imparare i meccanismi di base e capire come approcciare le varie situazioni immergendoci quasi
fisicamente nei problemi e nelle situazioni stesse.
17 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei dischi ed organizzazione dei contenuti: File e cartelle
Anche le cose più “ostili” guardate dall'interno fanno meno paura e possono arrivare ad essere
addirittura “amichevoli”.
18 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei programmi: mandiamo sotto “processo” le istruzioni
Gestione dei programmi: mandiamo sotto “processo” le istruzioni
A questo punto mi sembra opportuno fare qualche precisazione relativamente a programmi e file. I
file nel loro insieme possono essere divisi in due categorie fondamentali: file eseguibili e file non
eseguibili. Partiamo per semplicità da questi ultimi.
I file NON eseguibili sono tutti quei file che per poter svolgere una qualsiasi azione devono
rivolgersi ad un programma. Essi sono dei semplici contenitori. Per intenderci, un file .doc
contenente una nostra lettera ha bisogno di un programma di videoscrittura per essere visualizzato,
modificato o stampato. Un file .jpg contenete una nostra fotografia scattata ad esempio con una
macchinetta digitale ha bisogna di un programma di grafica per poter essere visualizzata,
modificata o stampata. Analoga situazione per un file sonoro o quant'altro vi viene in mente.
I file eseguibili, al contrario, contengono codificate al loro interno le istruzioni che il cervello del
computer (il microprocessore) può direttamente interpretare ed eseguire (da cui file eseguibili) per
svolgere le azioni per cui il file è stato creato. In ambiente Microsoft (DOS o Windows) i file
eseguibili hanno tipicamente estensioni .com, .exe o .bat. A questo punto viene immediata
l'equazione: “file eseguibile = programma”. In realtà la cosa è vera per metà. Mi spiego: un file
eseguibile può sicuramente essere un programma; più in generale, però, un programma è composto
da più file. Tra i file che costituiscono un programma ne esiste uno particolare, tecnicamente noto
come “file pilota”, che è il primo ad essere eseguito e che gestisce eventuali altri file eseguibili e
non eseguibili.
Un file eseguibile nel momento in cui viene “lanciato” ed è in esecuzione non viene più definito
programma bensì ad esso ci si riferisce con il termine processo. Un processo è dunque un
programma in esecuzione.
E' compito del sistema operativo far si che il processo abbia a disposizione tutte le risorse di cui ha
bisogno per la sua esistenza (memoria, processore, dispositivi di I/O).
Proprio in base al modo in cui un sistema operativo gestisce i processi è possibile proporre una
prima classificazione di massima. Alcuni sistemi operativi, i più datati ed obsoleti come il DOS,
sono in grado di gestire un unico processo per volta: tali sistemi prendono il nome di monotasking
(un solo task, sinonimo di processo, per volta). Al contrario, un sistema operativo come Windows in
grado di gestire l'esecuzione contemporanea di più processi è detto multitasking (potete tenere
aperto il vostro Word mentre scaricate la posta e navigate su Internet).
“Biografia” di un processo
Un processo, come tutte le cose del nostro mondo, ha un suo ciclo di vita. Inizialmente si trova sul
disco pronto per essere caricato in memoria. Una volta “lanciato” viene caricato in memoria e
messo in attesa rispetto alla CPU. Il sistema operativo gli assegna una certa quantità di tempo per
eseguire le sue istruzioni. Terminato tale lasso di tempo (noto come time slice) il processo torna
nello stato di pronto. Infatti, il sistema operativo a turno dovrà eseguire le istruzioni dei vari
processi caricati in memoria. In generale, un sistema è dotato di un'unica CPU la quale si dedica un
po' per volta ai vari processi. Il tutto avviene con grande velocità dando la sensazione di avere più
CPU ognuna per uno specifico processo.
Ovviamente un processo ha di norma necessità di gestire operazioni di input/output. Ad esempio
potrebbe necessitare di accedere ad una stampante o di leggere dei dati dal disco. Sarebbe uno
19 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione dei programmi: mandiamo sotto “processo” le istruzioni
spreco inutile di risorse tenere il processo in esecuzione mentre è in attesa che il dispositivo di I/O
(Input/Output) si liberi. Inoltre tali dispositivi sono normalmente molto lenti rispetto alla CPU. Il
processo viene allora messo in attesa e verrà riportato nello stato di pronto solo nel momento in cui
il dispositivo sarà nuovamente disponibile.
La considerazione relativa alle diverse velocità dei dispositivi di I/O rispetto al processore ha
prodotto una ottimizzazione dell'operatività dei sistemi operativi che va sotto il nome di SPOOL
ovvero Simultaneous Peripheral Operations On-Line (operazioni simultanee delle periferiche in
linea). Questa sigla, sicuramente altisonante, non deve impressionarvi: questa metodologia, nota più
genericamente come spooling, prevede che i dati tipicamente diretti verso i dispositivi di output
come ad esempio una stampante siano interamente generati su di una zona temporanea (buffer) del
disco senza attendere la normale lentezza del dispositivo. In questo modo l'applicazione che ha
richiesto l'operazione può dedicarsi ad altro ed al contempo è possibile rendere condivisibile un
dispositivo come la stampante che è di sua natura utilizzabile in maniera esclusiva da un dato
processo. Infatti, più processi potranno inviare contemporaneamente i propri lavori di stampa alla
stampante. Tali lavori verranno accodati nello spooler dal quale verranno successivamente prelevati
man mano che la stampante si renderà libera.
Per ottimizzare ulteriormente le risorse a disposizione, un processo può essere addirittura “espulso”
dalla RAM e, come si dice in gergo “swappato” sul disco (l'intero procedimento prende il nome di
swapping). Il suo spazio in memoria sarà così temporaneamente occupato da un altro processo.
Tale gestione prende di norma il nome di “memoria virtuale”. Infatti, la memoria centrale è
preziosa e limitata e dunque, per consentire al sistema operativo di “lavorare” differenti processi
alcuni di questi vengono spostati sul disco del sistema sul quale viene simulata (questo spiega il
termine “virtuale”) la memoria RAM. Ovviamente, essendo il disco molto più lento della RAM,
l'efficienza del sistema ne può notevolmente risentire.
Ciclo di vita di un processo
20 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione della memoria
Gestione della memoria
La memoria RAM riveste un ruolo di fondamentale importanza all'interno di un sistema di
elaborazione. E' all'interno di tale memoria che i programmi vengono caricati, prelevati dal disco,
per poter essere eseguiti dalla CPU. Il motivo è dato dal fatto che la CPU non possiede istruzioni in
grado di leggere istruzioni memorizzate direttamente sul disco stesso. Il ruolo del sistema operativo
in relazione alla gestione della memoria è dunque molto delicato. Infatti, nei moderni sistemi
operativi multitasking esso deve consentire a più processi di coesistere all'interno della memoria
senza interferire gli uni con gli altri.
CPU diverse e differenti sistemi operativi gestiscono in vario modo la memoria a disposizione. In
questo contesto cerco di esemplificare i concetti base.
Fondamentalmente la memoria di un elaboratore può essere vista come una
successione di celle in cui immagazzinare i dati. Ogni cella è dotata di un
proprio numero identificativo: l'indirizzo di memoria. Tipicamente una
cella di memoria è grande un byte (otto bit) e, quindi, dati di grandezza
superiore al byte devono occupare più celle.
Le stesse celle di memoria devono consentire il
caricamento di più programmi ed ovviamente del
sistema operativo. Ogni programma deve avere
quindi a disposizione un certo spazio costituito da
un dato numero di celle nel quale poter gestire le
istruzioni dei programmi ed i relativi dati. Come
dicevo è compito del sistema operativo assegnare
con “coscienza” questi spazi.
E' ovvio, infatti, che ogni processo deve avere uno
spazio proprio e che il singolo processo stesso non
La
RAM
di
un
deve occupare aree di memoria a lui non riservate.
elaboratore
E' proprio compito del sistema operativo gestire tali
assegnazioni ed effettuare i relativi controlli. Tali problematiche vanno in
generale sotto il nome di allocazione della memoria.
La
RAM
deve
contenere sia il
Sistema Operativo
che i processi utente
Volendo schematizzare le varie tecniche di allocazione è possibile effettuare una prima suddivisione
tra allocazione contigua ed allocazione non contigua.
Allocazione contigua
Come suggerisce il nome stesso, nel caso di allocazione contigua, l'immagine di un processo viene
collocata in una singola area di memoria costituita da una sequenza, appunto contigua, di celle di
memoria.
In questo contesto, una prima possibilità consiste nell'inserire i vari processi in partizioni fisse
(ovvero di dimensioni prefissate). Il nome di questo approccio non a caso è dato dall'acronimo MFT
(Multiprogramming with Fixed number of Tasks). Tale metodo non è sostanzialmente più in uso ed
ha come problema principale quello di causare un grande spreco di spazio di memoria all'interno
delle singole partizioni nel momento in quanto queste possono risultare di dimensioni anche molto
21 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione della memoria
maggiori rispetto a quelle dei singoli processi che in esse vengono allocati. Si parla in questo caso
di frammentazione interna.
Una variante a questa possibilità consiste nel consentire la gestione di partizioni che siano create in
modo dinamico a seconda della necessità dei singoli processi che si devono essere eseguiti: si tratta
dunque di partizioni multiple variabili nel tempo nelle loro dimensioni (note anche quindi come
partizioni variabili). Il metodo prende infatti il nome di MVT (Multiprogramming with Variable
number of Tasks) .
Quando un processo deve essere eseguito, il sistema operativo cerca all'interno della memoria una
partizione di grandezza sufficiente per contenerlo. Se non è disponibile un'area di tale grandezza il
sistema potrebbe individuare nella coda dei processi in attesa di essere eseguiti un processo con una
richiesta di memoria inferiore ed assegnare a quest'ultimo la CPU sempre in attesa che si liberi una
partizione sufficientemente grande da contenere il processo in attesa. Quando un processo termina
rilascia la memoria che aveva utilizzato creando un buco libero. Questa situazione genera un tipo di
spreco di memoria che va sotto il nome di frammentazione esterna. In buona sostanza si creano
degli spazi di memoria non utilizzati all'esterno delle singole partizioni. Il sistema operativo
periodicamente ricerca in memoria eventuali buchi liberi adiacenti in modo da fonderli in un unico
buco più grande (compattazione) per ospitare processi con richieste di memoria maggiori e
controllare dunque il fenomeno della frammentazione esterna.
Tipologie di allocazione della memoria centrale
Allocazione non contigua
Uno stesso processo può essere allocato in aree non contigue di memoria, ovvero in differenti
partizioni di memoria separate le une dalle altre. In questo contesto esistono sostanzialmente due
metodi di allocazione. Il primo prevede prevede la suddivisione della memoria in spazi con
dimensioni uguali prefissate (paginazione) mentre un secondo metodo che gli spazi siano di
dimensioni variabili (segmentazione) .
Paginazione
L'idea alla base della paginazione consiste nel suddividere lo spazio fisico della memoria centrale in
blocchi di dimensione costante ed abbastanza piccoli (4096 byte sotto Windows) noti con il temine
di frame o pagine. Il processo verrà dunque caricato in differenti frame con l'ovvio beneficio di
22 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Gestione della memoria
evitare la frammentazione esterna. Infatti, non ci saranno più buchi non utilizzabili in quanto il
singolo processo potrà occupare frame liberi anche se non contigui. Inoltre, la frammentazione
interna, cioè lo spazio inutilizzato all'interno dei blocchi è estremamente ridotta a causa del fatto che
i singoli blocchi hanno dimensione molto limitata.
Ovviamente questi benefici hanno come contraltare il fatto che il Sistema Operativo deve gestire un
sovraccarico di operazioni consistenti nel tener traccia per ogni processo della posizione dei singoli
e numerosi blocchi di spazio utilizzati.
Segmentazione
Come già detto la segmentazione prevede che il processo possa essere allocato in memoria in
sezioni non contigue. La differenza sostanziale con il metodo della paginazione consiste nel fatto
che tali sezioni (note appunto con il termine di segmenti) possono avere una dimensione le une
dalle altre.
La cosa interessante da notare è che il processo viene suddiviso in segmenti diversi ognuno
dedicato ad uno scopo specifico. Per semplificare si può pensare al fatto che ci sia un segmento
specifico per le istruzioni del programma ed altri segmenti specifici per contenere specifici tipi di
dati su cui opera il programma (nomi classici di tali segmenti sono heap e stack).
In questa ottica la tecnica di segmentazione può essere paragonata a quella delle partizioni multiple
con al sostanziale differenza per la quale con le partizioni variabili esiste un singolo segmento per
ogni specifico processo mentre nel caso della segmentazione esistono differenti segmenti (come
detto di tipo diverso) per il singolo processo.
Come per le partizioni variabili il problema connesso alla segmentazione è dato dalla
frammentazione esterna della memoria.
Segmentazione paginata
La segmentazione e la paginazione possono essere combinate in un unico approccio in cui lo spazio
risulta segmentato ed ogni singolo segmento prevede al suo interno la tecnica della paginazione.
23 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il sistema operativo DOS
Il sistema operativo DOS
Il DOS, il cui acronimo sta per Disk Operating System, è stato sicuramente il primo sistema
operativo a larga diffusione della storia dell'informatica.
La prima versione fu rilasciata nel lontano 1981. Almeno
inizialmente vennero commercializzate due differenti
versioni: una denominata MS-DOS (Microsoft) ed una
denominata PC-DOS (ad opera dell'IBM). Ciò fu reso
possibile a causa di una serie di accordi commerciali tra
Microsoft e la IBM stessa. Quest'ultima vendeva le
proprie macchine con installato il sistema operativo DOS
prodotto da Microsoft che tuttavia rinominava in PCDOS e che tranne per alcune piccole differenze era
sostanzialmente lo stesso sistema operativo.
In relazione a quel periodo pionieristico dell'informatica
può essere interessante rifarsi al film “I pirati della
Silicon Valley” (anno 1999) che ripercorre le fasi iniziali
della carriera di Bill Gates, il fondatore dell'azienda
Microsoft, che proprio con il DOS conobbe il suo primo
strabiliante successo.
Il DOS era un sistema monotasking con interfaccia
testuale. Era inoltre monoutente. Se paragonato ai
Il film "I pirati della Silicon Valley"
moderni sistemi operativi risulta ovviamente abbastanza
rozzo. Tuttavia, ancora oggi esso riveste una notevole importanza. Da un lato, la sua semplicità
costruttiva lo rende un ottimo candidato come elemento di studio per comprendere i meccanismi ed
i componenti di base di un sistema operativo generico. D'altra parte, esso è ancora in parte presente
nei più moderni sistemi operativi Microsoft.
Esplorerò di seguito entrambi questi aspetti iniziando dalla sua semplicità costruttiva.
I principali file del DOS sono solo cinque: IO.SYS, MSDOS.SYS,
AUTOEXEC.BAT, CONFIG.SYS, COMMAND.COM1.
IO.SYS rappresenta il file di connessione tra il DOS ed il BIOS della
macchina. MSDOS.SYS è “semplicemente” il kernel del DOS.
AUTOEXEC.BAT e CONFIG.SYS sono due file di configurazione:
servono a contenere una serie di istruzioni e direttive che il DOS applica in
Il logo dell'MS-DOS
fase di caricamento del sistema stesso. Infine, il file COMMAND.COM
rappresenta la shell del DOS, ovvero la sua interfaccia utente.
Come dicevo il DOS ha lasciato un segno tanto forte da far si che la sua interfaccia sia ancora
presente all'interno dei sistemi operativi Windows moderni. In realtà si tratta di una presenza
“simulata”: non è disponibile l'intero sistema operativo DOS ma una shell testuale che consente
Nella versione IBM del DOS il file io.sys si chiamava ibmbio.com mentre il file msdos.sys prendeva il nome di
ibmdos.com
1
24 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il sistema operativo DOS
l'uso dei principali comandi DOS oltre a tutta una serie di nuovi comandi utilizzabili per
amministrare e gestire il sistema stesso.
Il file eseguibile relativo a tale shell è cmd.exe. E' così possibile eseguire tale file per avere a
disposizione l'interfaccia testuale del sistema.
La shell testuale DOS di Windows
L'elemento cardine della shell è il cosiddetto prompt dei comandi o, più semplicemente, prompt.
Si tratta della riga di testo che di norma visualizza il percorso assoluto corrente, con un simbolo
terminale (di norma il simbolo di maggiore “>”) che funge da separatore per i comandi che
l'operatore digita tramite tastiera.
Quando si entra per la prima volta all’interno di un nuovo ambiente (non solo virtuale ;) la prima
cosa da individuare è l’uscita. Ebbene, il modo migliore per uscire dall’interfaccia DOS è quello di
utilizzare l’apposito comando “exit” .
Anche se dovrebbe essere scontato, ricordo che per impartire i comandi alla console DOS è
sufficiente scriverne il nome e “battere invio” e che tali nomi di comandi NON sono case sensitive
(è indifferente che li scriviate in minuscolo o maiuscolo).
Come dicevo il prompt dei comandi è di default composto dal percorso corrente e dal simbolo di
maggiore. Qualcosa del tipo “c:\cartella1\cartella2>” In ogni caso il prompt è configurabile e
personalizzabile. Esiste infatti un apposito comando, chiamato appunto PROMPT, che permette tale
“customizzazione” (cioè personalizzazione). L’uso del comando in questione è qualcosa del tipo
seguente:
PROMPT Base Lunare Alpha$g
dove “Base lunare Alpha” è la scritta che vogliamo far apparire come prompt. Si tratta di semplice
testo indicato dopo il comando prompt. La particolarità riguarda la sequenza di caratteri $g.
25 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il sistema operativo DOS
Il simbolo del dollaro seguito da un altro carattere (in questo caso la lettera g) è una codifica
speciale che serve ad indicare una specifica modalità di visualizzazione. Nel caso in esame $g
rappresenta il simbolo di maggiore “>”. Non a caso la “g” sta per “greater”, appunto maggiore. Il
risultato lo potete verificare in figura.
Un prompt dei comandi personalizzato
I codici speciali utilizzabili sono diversi. La combinazione più classica è rappresentata da $p$g.
$p serve a visualizzare il percorso corrente (la “p” sta per path) mentre come detto $g indica il
segno di maggiore. E' intuitivo riconoscere che ricordare tutte le possibili combinazioni di comandi
può essere impresa complessa (ed anche se vogliamo inutile) considerando anche le possibili
variazioni presenti da sistema a sistema. Ma ancora più arduo è ricordare i dettagli relativi alle
decine di altri comandi resi disponibili dalla shell. Per ovviare a tali problematiche ogni shell mette
a disposizione un aiuto in linea integrato. Nel nostro contesto per accedere a tale aiuto è possibile
usare il comando dal nome del tutto intuitivo HELP. Usato da solo elenca i comandi disponibili
mentre usato facendolo seguire dal nome di un comando specifica i dettagli di funzionamento del
comando in oggetto. Ad esempio digitando HELP PROMPT verrà visualizzata la guida di utilizzo
del comando PROMPT.
Sintassi di un comando DOS
Seppure i comandi messi a disposizione della shell sono molteplici il loro modo di utilizzo, ovvero
la loro sintassi, ha caratteristiche standard:
<nome comando> [argomenti] [opzioni]
Il nome del comando, ovviamente obbligatorio, specifica l'azione richiesta. Tale azione necessita
spesso dell'indicazione degli elementi sui quali il comando dovrà agire: questi vengono definiti
argomenti. Ad esempio un comando di copia necessiterà dell'indicazione dei file da copiare.
Infine è spesso utile indicare opzioni particolari che raffinano il funzionamento del comando stesso.
Ad esempio un comando di copia file potrebbe interessare intere sottocartelle piuttosto che file
presenti in una sola cartella. Le opzioni sono di norma indicate con delle lettere precedute dal
simbolo slash “/”.
Per meglio chiarire l'uso generale di un comando seguite l'esempio seguente che copia i file della
cartella PIPPO nella cartella PLUTO (sia PIPPO che PLUTO sono sottocartelle della radice
dell'unita di volume C:).
C:\Documents and Settings\Carlo>xcopy c:\PIPPO\*.* c:\PLUTO\ /s
Nell'esempio la cartella corrente, come indicato dal prompt, è: “C:\Documents and Settings\Carlo”.
26 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il sistema operativo DOS
Ovviamente come argomenti del comando indichiamo le cartelle di origine e di destinazione.
L'opzione “/s” in coda al comando indica, come già detto, che la copia deve essere estesa a tutte le
sottodirectory della directory di origine.
Dunque, questo che vi ho illustrato è un uso di base del comando xcopy. Da sottolineare, a titolo
esemplificativo più generale dell'uso dei vari comandi, come questo possa essere semplificato ed
accorciato. Ad esempio, come nel caso in esame dove l'unità di volume corrente è C: avremmo
potuto ometterla negli argomenti del comando. Inoltre se il percorso corrente fosse stato la cartella
di origine della copia anche quest'ultima potrebbe essere omessa. Dunque potremmo scrivere il
comando nella forma seguente:
C:\PIPPO>xcopy *.* \PLUTO /s
E' al di la dei miei obiettivi fornire un elenco esaustivo dei comandi DOS. Per tale necessità è
sufficiente riferirsi all'Help in linea; in ogni caso, di seguito vi presento un elenco minimale che
dovrebbe essere noto per poter “mettere le mani” su di una console DOS senza creare danni al
sistema ed ottenendo al contempo un minimo di utile operatività sul sistema stesso. In ogni caso
nulla potrà sostituire l'esperienza che dovreste fare sul campo.
Cancellare lo schermo
Spessissimo capiterà di voler fare un po' di pulizia nello schermo per cancellare la console di output
non più interessanti. Niente di più semplice: basterà usare il comando CLS.
Spostarsi all'interno delle cartelle
Per muoversi all'interno del file system è disponibile il comando CD (che sta per Change Directory)
la cui sintassi è la seguente:
CD [percorso]
dove “percorso” può essere tanto un percorso assoluto quanto un percorso relativo.
Ad esempio scrivendo:
cd c:\PIPPO
ci sposteremo nella sottocartella della radice di C: di nome PIPPO indipendentemente dalla
posizione precedente.
Scrivendo invece:
CD ..
ci sposteremo nella cartella genitrice (quella superiore) alla cartella in cui ci troviamo nel moment
in cui diamo il comando.
Gestire le directory
Per creare una nuova cartella è possibile utilizzare il comando MD (Make Directory) mentre per
cancellare una directory è disponibile il comando RD (Remove Directory).
27 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il sistema operativo DOS
Elencare i file
Per visualizzare uno specifico elenco di file e di cartelle è possibile utilizzare il comando DIR.
Questo supporta varie opzioni ed ovviamente spessissimo viene richiamato facendo uso dei
caratteri jolly per elencare solo una specifica tipologia di file. Ad esempio:
DIR *.exe /s /p
elencherà tutti i file con un nome qualsiasi (abbiamo usato il carattere jolly '*') con estensione .exe
all'interno della cartella corrente ed all'interno di tutte le sottocartelle (abbiamo indicato l'opzione /s)
ed abbiamo infine richiesto, con l'opzione /p, che l'elenco sia visualizzato una pagina per volta.
Visualizzare il contenuto di un file
Spesso è utile visualizzare il contenuto di un file. Per tale scopo è disponibile il comando TYPE. Il
seguente comando:
TYPE c:\games\leggimi.txt
visualizzerà il contenuto del file “leggimi.txt” presente nella cartella “games” sottocartella della
radice dell'unità di volume c: . Ovviamente, nel caso in cui la corrente corrente sia proprio la
cartella in cui è presente il file in questione, il comando potrebbe essere più semplicemente:
TYPE c:\games\leggimi.txt
Inutile dire che di norma un comando del genere sortisce un effetto utile solo nel caso in cui i file
siano di tipo testuale.
La redirezione
L'output di un comando è di norma il monitor. Sembra una banalità ma è bene considerare tale
affermazione nella sua giusta luce. Dunque, se scrivo qualcosa del tipo: dir *.* l'output del
comando e quindi l'elenco dei file presenti nella cartella corrente verrà visualizzato a video. Tuttavia
in alcuni casi si potrebbe volere qualcosa di diverso; ad esempio, salvare l'elenco in oggetto in un
file. Per tale scopo sarà necessario trovare un meccanismo per redirigere l'output del comando “dir”
in un luogo diverso (un file) piuttosto che verso il monitor (dispositivo output predefinito).
Tale meccanismo prende il nome di redirezione dell'output ed è una funzionalità già incprporata
nelle shell del DOS (ma anche su altri sistemi). Per utilizzare la redirezione si fa uso del carattere
speciale “>” (il simbolo di maggiore) usato con la seguente sintassi:
comando > nome_file
Ad esempio, volendo “redirezionare” l'elenco dei file di cui sopra in un file di nome “elenco.txt”
potremmo scrivere:
DIR *.* > elenco.txt
Il risultato sarà la creazione di un file di testo di nome “elenco.txt” contenente l'output del comandi
dir. Se il file non esiste verrà creato; se esiste già verrà riscritto con il nuovo contenuto.
28 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Il sistema operativo DOS
Volendo accodare l'output in questione al file “elenco.txt” senza cancellarne il contenuto
preesistente è possibile fare ricorso alla simbologia “>>” (due simboli di maggiore) che
realizzeranno la cosiddetta funzionalità di “append”, cioè, l'accodamento di cui parlavo. Il comando
sarà quindi:
DIR *.* >> elenco.txt
Oltre a quella di output appena vista, esiste anche la possibilità di redirezionare (redirigere) l'input.
Si parla, in questo caso, di redirezione dell'input. Di norma l'input ad un comando proviene dalla
tastiera. E' possibile passare ad un comando l'input prelevato da un file. Il caso più classico di
redirezione dell'input consiste nell'uso del comando SORT che serve per ordinare un determinato
testo. Supponendo di avere un file contenente una serie di nominativi (nomi.txt) possiamo scrivere
il seguente comando:
SORT < nomi.txt
che visualizzerà i nominativi ordinati in senso alfabetico (per dettagli sul comando “sort” è come al
solito possibile utilizzare “HELP SORT”). Volendo è possibile combinare redirezione dell'input e
dell'output in un solo comando, come segue:
SORT < nomi.txt > ordinati.txt
Nell'esempio il file “nomi.txt” verrà ordinato da sort e salvato in redirezione su un nuovo file
(“ordinati.txt”).
nomi.txt
Fabio
Carlo
Matteo
Alberto
Roberta
Camillo
Chiara
Ludovica
Letizia
ordinati.txt
Alberto
Camillo
Carlo
Chiara
Fabio
Letizia
Ludovica
Matteo
Roberta
Un'altra operazione di grande utilità che può essere realizzata con i comando della shell è quella di
accodare più comandi uno dopo l'altro. Tale operazione, nota come “piping” è ottentuta utilizzando
il carattere “|” (la barra verticale nota, appunto, anche come “pipe”).
In questo contesto un altro classico esempio è quello di concatenare l'output di un comando come
DIR verso il comando MORE che pagina appunto un dato flusso di dati:
DIR *.* | MORE
29 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Un pinguino per amico: il sistema operativo Linux
Un pinguino per amico: il sistema operativo Linux
Linux è un sistema operativo che può essere tranquillamente definito sorprendente. Si tratta infatti
di un sistema robusto, veloce ed affidabile e, non ultimo, gratuito.
Il principale artefice e creatore di Linux è senza
ombra di dubbio il finlandese Linus Torvalds il
quale, durante il suo periodo di studi universitari
ad Helsinki, iniziò a sviluppare il kernel di un
nuovo sistema operativo prendendo a modello il
sistema operativo Unix. Più precisamente
Torvalds fu mosso dalla volontà di migliorare un
altro sistema operativo già esistente: Minix.
Quest'ultimo era stato sviluppato, per scopi
didattici, dal noto professore universitario
Andrew Stuart Tanenbaum, americano ma
residente in Olanda. Tanenbaum è molto noto, Linus Torvalds
oltre che per Minix, per i suoi numerosi libri di informatica. Per intenderci, se doveste trovare in
libreria un suo lavoro state pur certi di avere tra le mani quanto di meglio si possa immaginare su
argomenti come reti di computer e sistemi operativi in genere.
Tux: la mascotte di Linux
creata da Larry Ewing nel
1996
Andrew S. Tanenbaum
La versione 1.0 di Linux vede la luce nel 1994. Ma attenzione,
come detto Linux è solo il kernel. L'intero sistema operativo che
usa Linux come kernel dovrebbe chiamarsi in maniera più
formale GNU Linux. Infatti, GNU è un progetto iniziato nel
lontano 1984 per realizzare un sistema operativo di tipo Unix che
fosse software libero: il sistema GNU. Tuttavia seppur sviluppato
in gran parte a GNU mancava un pezzo fondamentale: appunto il
kernel. GNU e Linux sono entrambi software libero e ciò ha reso
possibile la fusione dando vita ad un unico sistema operativo
chiamato per semplicità LINUX.
Oltre che sorprendente, come dicevo nell'apertura del paragrafo, Linux può essere anche definito
come rivoluzionario. Nel momento del suo concepimento sarebbe stato fantascienza (o
“fantainformatica” ;) immaginare che un sistema operativo gratuito sarebbe divenuto una
sostanziale alternativa ad altri prodotti commerciali estremamente costosi. Linux è dunque un pezzo
fondamentale della storia dell'informatica. A dimostrazione di ciò il primo messaggio con il quale
Torvalds ne annunciava la nascita, siamo nell'aprile del 1991, viene ancora ricordato come un
evento epocale. Ve lo riporto di seguito:
“ Hello everybody out there using minix I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for
386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any
feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical
layout of the file-system (due to practical reasons) among other things).
30 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C
Un pinguino per amico: il sistema operativo Linux
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get
something practical within a few months, and I'd like to know what features most people would
want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus ([email protected])
PS. Yes – it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386
task switching etc), and it probably never will support anything other than AT-harddisks, as that's
all I have :-(.
”
E' possibile che queste mie altisonanti affermazioni relativamente all'importanza attualmente
rivestita da Linux possano lasciare perplessi i non “addetti ai lavori”, ovvero coloro i quali hanno un
rapporto con l'informatica di tipo superficiale. Infatti, la maggior parte degli utilizzatori di PC
conosce sicuramente Windows ed i relativi programmi mentre non ha mai avuto un “pinguino” nel
proprio computer. Per intenderci, il pinguino di nome Tux è la mascotte ufficiale di Linux. Ebbene
seppur poco usato sui PC casalinghi il sistema operativo del Pinguino è largamente impiegato sulle
macchine che fanno da server nelle aziende. Un server è un computer con funzionalità critiche che
rende disponibili ai PC che ne fanno richiesta importanti servizi: posta elettronica e siti web solo
per menzionare i più conosciuti.
Oltre ad avere un enorme numero di installazioni server, Linux ha un discreto successo anche per
quanto riguarda i PC casalinghi. Ciò è stato reso possibile dalle cosiddette Distribuzioni Linux (o
più semplicemente Distro).
In effetti, almeno nei primi anni, installare un sistema Linux, configurarlo e scegliere i software
applicativi da utilizzare era un'operazione riservata ad un pubblico di esperti. Successivamente
diverse aziende, sfruttando la licenza di libera distribuzione, hanno creato dei pacchetti di
installazione di Linux semplici da utilizzare e completi di tutto l'occorrente per un utilizzo
immediato.
Queste distribuzioni sono innumerevoli. Solo per citarne le più note vi segnalo: Debian, Fedora,
Gentoo, Knoppix, Mandriva, Slackware, Ubuntu.
31 - Io, Informatico – Carlo A. Mazzone – versione 20100425_C