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