ISTITUTO SUPERIORE “E.FERMI” Tecnico Settore Tecnologico e Liceo Scientifico delle Scienze Applicate Strada Spolverina, 5 – 46100 MANTOVA Tel. 0376 262675 Fax 0376 262015 www.fermimn.gov.it e-mail: [email protected] Sistemi Operativi Argomenti: • Sistemi Operativi • File System Descrizione e funzioni dei Sistemi Operativi Il Sistema Operativo (SO; OS=Operating System), detto anche software di base, è un insieme di programmi destinati alla gestione dei dispositivi che costituiscono un computer (detti risorse o risorse fisiche). Il SO serve all’utente ed al programmatore di applicazioni, offrendo ad entrambi un’interfaccia con i componenti hardware. Tutti i computer, dai PC ai grandi elaboratori militari, hanno il sistema operativo: comandi e interfacce possono cambiare, ma le funzioni sono le stesse. Chi si occupa di sistemi operativi è generalmente uno specialista, che non si occupa di software applicativo; analogamente, altri specialisti si occupano di scrivere i driver, programmi presenti su dispositivi esterni (stampanti, switch, router, telefoni VOIP,…), destinati a comunicare con il sistema operativo dei computer cui verranno collegati. Entrambe queste figure professionali, quasi sempre specialisti di hardware, sono spesso confuse con i programmatori applicativi, che invece scrivono software destinato a risolvere problemi di varia umanità, e generalmente sono specialisti di software, non di hardware. Il diagramma a fianco riassume ciò che collega l’utente all’hardware, ma, essendo solo una schematizzazione, non va preso troppo alla lettera. Ad esempio, il sistema operativo è posizionato ai livelli bassi, ma l’utente è in grado di attivarne tutte le funzioni direttamente; analogamente, ci sono utenti che usano solo il middleware (software per produrre altro software, usato dai programmatori), ed altri che usano i programmi applicativi scritti tramite il middleware. Sarà quindi Informatica a strati facile trovare, su testi o su siti didattici, diagrammi simili, ma con lievi differenze: ad esempio, si potrebbero trovare due livelli del sistema operativo anziché uno, o i driver subito sopra l’hardware, o il livello del middleware mancante. Sono dettagli dovuti alle preferenze di chi predispone il diagramma, ma non modificano il quadro generale. Ad un amministratore di sistema (un tempo detto sistemista) si richiede la conoscenza delle funzioni del sistema operativo, la sua organizzazione interna, le tecniche di gestione dei dispositivi e dei dati; nella pratica, dovrebbe essere in grado di eseguire le operazioni di installazione, configurazione, manutenzione, aggiornamento del SO, oltre che saper analizzare (e possibilmente risolvere) i problemi più frequenti. Il sistema operativo, come intermediario tra utente e computer, è responsabile da una parte del controllo e della gestione delle componenti hardware, e dall’altra di garantire all’utente la possibilità di eseguire programmi in modo efficiente1. Si può quindi riassumerne in questo modo: • Dal punto di vista interno (macchina), il SO è un gestore che dispone di tutte le risorse del computer, fisiche (dispositivi) e logiche (dati). • Dal punto di vista esterno (utente), il SO è un’interfaccia per l’uso delle risorse, col fine ultimo di risolvere i problemi dell’utente. Il SO, e in particolare la sua componente fondamentale, il kernel2, è l’unico programma che è sempre in esecuzione sul calcolatore. Viene caricato all’accensione della macchina e continua a funzionare fino allo spegnimento. Esso si occupa di gestire: • • • • • Stavvi Minos orribilmente, e ringhia; essamina le colpe ne l’intrata; giudica e manda secondo ch’avvinghia. i processi (programmi in esecuzione); la memoria centrale (dove sono presenti i processi); la memoria di massa (dove sono memorizzate le informazioni); i sistemi di Input/Output (I/O) con tutte le periferiche (per lo scambio delle informazioni). l’interfaccia utente (attraverso la quale si manovra il computer); 1 Aggettivi come “efficiente”, “sicuro”, “veloce” non vanno considerati in modo assoluto: si tratta degli obiettivi del sistema operativo, non necessariamente del loro raggiungimento. Anche se un sistema operativo è “peggiore” o “meno efficiente” di altri (cose spesso soggettive), le operazioni che svolge sono le stesse. In questo corso i differenti sistemi operativi sul mercato non vengono giudicati. 2 kernel (=nucleo): software che fornisce ai processi in esecuzione un accesso sicuro e controllato all'hardware Evoluzione e classificazione dei S.O. I primi computer (anni ’40) prendevano in input singoli programmi (detti job) attraverso cablaggi tra componenti dell’unità centrale: il programma era inserito assieme ai suoi dati e veniva eseguito usando tutte le risorse di calcolo disponibili, per poi stampare l’output al termine delle operazioni. Non si può nemmeno parlare di SO, perché il computer funzionava con collegamenti elettrici ed elettronici diretti, effettuati manualmente, da operatrici dette computer (nella foto a fianco, Gloria Ruth Gordon e Esther Gerston, passeggiando all’interno dell’hardware con i cavi sottobraccio, definiscono i dati da elaborare). Pagate meno dei colleghi maschi, erano comunque scienziate di prim’ordine3. Pochi più tardi (anni ’50) comparvero lettori di schede e di nastri. Le schede, essenzialmente dei cartoncini perforati, consentivano di mantenere una copia delle istruzioni, e quindi di non dover modificare i cablaggi per ogni nuovo programma; inoltre, una volta trasferite le istruzioni su nastri magnetici, i programmi potevano essere mandati in esecuzione a lotti, anziché singolarmente. I job di un lotto venivano comunque eseguiti sequenzialmente e senza interruzioni: ciascuno rimaneva in coda fino al termine di quello precedente. Al termine del lotto tutti i risultati venivano portati ad un sistema secondario che consentiva di stampare i risultati. Questo modo di eseguire i programmi viene detto elaborazione batch4. Le schede sarebbero state usate fino agli anni ’70, anche dopo altre evoluzioni dei sistemi operativi. Con questo modo di operare, programmatori e utenti erano fisicamente lontani dal computer: i programmi, composti da mazzi di schede a volte alti come scatole di scarpe, venivano consegnati alle operatrici (anche qui, generalmente si trattava di donne), che avevano l’unica funzione di introdurre le schede nel lettore e riconsegnarli ai proprietari, assieme agli stampati, dopo l’elaborazione. L’era delle schede perforate Con l’introduzione dei dischi (1956) venne adottata una tecnica detta spooling (Simultaneous Peripheral Operation On Line), una registrazione temporanea di dati in memoria per velocizzare le operazioni di input: • • • • • le schede sono lette ed il loro contenuto (dati compresi) memorizzato su disco; l’input del job in esecuzione avviene dal disco; l’output è riversato sul disco; dall’output su disco vengono stampati i risultati; i dati su disco vengono cancellati (in quanto le memorie sono limitate in capacità). Lo spooling sarebbe stato in seguito adottato anche per la gestione dell’output. La quasi totalità dei risultati veniva stampata su moduli continui; a volte, per i disegni, si usavano dei plotter, dispositivi a penna ormai obsoleti (ma con un discreto mercato di appassionati dell’usato). Macchine simili ai plotter, ma dotate di lame, vengono tuttora usate per il taglio del vetro o di altri materiali, come metalli e plastica. 3 Queste giovani, fondamentali per il funzionamento dei computer militari, rischiarono di sparire dalla storia, come spesso accadeva alle donne. La loro vicenda fu scoperta nel 1985 da Kathy Kleiman, programmatrice e avvocato specializzato in informatica. Il gruppo originale delle sei “computer” era composto da: Frances Bilas Spence, Jean Jennings Bartik, Ruth Lichterman Teitelbaum, Kathleen McNulty Mauchly Antonelli, Frances “Betty” Snyder Holberton, Marlyn Wescoff Meltzer. 4 Batch = “a lotti”: termine mutuato dai panettieri, indica l’infornata di un gruppo di coppie di pane per la cottura Evoluzione La presenza dell’unità disco (anni ’60) permise anche di eseguire più job (a quel punto denominati task), caricati contemporaneamente in memoria (multitasking): la RAM inizia ad essere vista come un grande contenitore per i programmi in esecuzione, che, nel caso la CPU necessiti di spazio per i calcoli o i risultati parziali, possono essere trasferiti su disco e sospesi per il tempo necessario: la memoria logica (quella che ogni programma “pensa” di avere a disposizione) diventa un’estensione della memoria fisica (quella effettivamente presente nell’unità centrale). In questo modo il programmatore inizia a liberarsi dal compito di dover predisporre la memoria a sua disposizione, anche se spesso era costretto a suddividere il task in blocchi indipendenti, che potevano essere scambiati tra di loro in RAM (una tecnica ormai non più conosciuta, anche perché già predisposta all’interno dei moderni sistemi operativi, chiamata overlay). I task vengono mandati in esecuzione da un programma detto scheduler; il controllo della CPU viene assegnato ad un dato task dal programma dispatcher (o CPU scheduler). In questo periodo nasce il bisogno di migliorare l’efficienza nello sfruttamento della CPU, il cui uso è solitamente a pagamento. A questo scopo si escogita il meccanismo delle interruzioni (interrupt), attivato quando un task necessita di un’operazione di I/O: dal momento che le periferiche hanno tempi elevati rispetto alla CPU (millesimi di secondo contro milionesimi), sospendere l’operazione del task fino al reperimento dei dati rende possibile assegnare l’unità centrale ad un altro task, riducendo così i tempi morti (nei quali la CPU viene detta idle). Questo meccanismo nasce quando non esistono ancora applicazioni interattive. Questo è il successivo sviluppo della multiutenza; la multiprogrammazione viene estesa con il meccanismo del time sharing (condivisione di tempo). Nei nuovi sistemi, anche il tempo di uso delle risorse viene suddiviso tra i task: in particolare, il tempo della CPU è gestito mediante un timer che scatta periodicamente, assegnando l’unità centrale a turno5. La gestione del timer si aggiunge a quella delle interruzioni, con l’obiettivo è di provvedere risposte immediate ad un utente che istruisce direttamente il computer o un programma. I programmi che non necessitano di interazione né di risposte immediate, e che magari consumano molto tempo della CPU, possono essere eseguiti in background, uno stato particolare, a bassa priorità, nel quale si cercano gli intervalli in cui la CPU è libera, interferendo il meno possibile con i processi principali. Il time sharing nasce con la l’obiettivo di minimizzare i tempi di risposta alle operazioni dell’utente interattivo, che deve essere in grado di lavorare come se avesse il sistema a sua completa disposizione. Se i tempi di risposta del computer si mantengono nell’ordine dei secondi, risultano corrispondenti alla velocità di interazione dell’utente, che riesce quindi a lavorare in modo continuativo, senza troppe attese. Mentre le unità a nastro venivano gestite sequenzialmente, per le memorie di massa (hard disk) il SO dovette occuparsi anche della gestione del file system, l’organizzazione del contenuto di un disco (che verrà esaminata in seguito). Questo si aggiunge alle notevoli esigenze che la multiutenza comporta: controllo dell’uso della CPU, sincronizzazione dei task, gestione delle risorse, il tutto con l’obiettivo di rendere più efficiente e continuo il funzionamento del sistema, evitando le situazioni di deadlock (blocco). In breve nascono anche sistemi operativi real-time, in cui è necessario Hard disk da 16 Mb, anni ‘60 ottenere una risposta immediata in situazioni rischiose o di alta precisione. Sistemi real-time governano le centraline di auto o moto, molti processi industriali, e dispositivi medici come pacemaker o alimentatori automatici. Questi sistemi, detti dedicati, non sono oggetto di questo corso. Nei sistemi operativi attuali, le attività, che siano dell’utente o del SO, sono dette processi (l’evoluzione della terminologia consente di distinguere i periodi storici). Spesso i processi sono suddivisi in unità più piccole, dette thread: diversi thread contenuti nello stesso processo possono condividere alcune risorse (solitamente la memoria centrale del computer). Questa tecnica, detta multithreading, attua il principio detto divide et impera, consentendo di migliorare l’efficienza nella gestione delle risorse tramite la sovrapposizione di operazioni distinte. Per fare un esempio molto semplice, capita spesso di visualizzare un filmato da una pagina Web intanto che parte del contenuto non è ancora completamente caricata. 5 Il meccanismo di turnazione viene detto round robin, espressione usata anche per descrivere quei campionati sportivi dove ogni partecipante incontra tutti gli altri. Gestione dei processi Un processo è un programma in esecuzione, che necessita di un insieme di risorse (tempo di calcolo, memoria centrale, memoria di massa, connessioni di rete, periferiche, ecc.) per svolgere la propria attività. Il SO assegna dinamicamente al processo le risorse che questo richiede e inoltre mantiene informazioni su tutti i processi presenti in memoria. Tra le informazioni contenute nel descrittore di processo (PCB, Process Control Block6), che il sistema mantiene per ogni processo attivo, ci sono: • l’identificatore del processo; • lo stato del processo; • informazioni sull’esecuzione: a che punto il processo è arrivato, quali sono i suoi dati parziali; • informazioni relative alle risorse assegnate (tra cui, per esempio, i file aperti dal processo). Lo stato del processo cambia durante il suo ciclo di esecuzione: • • • il processo viene creato e lo stato è nuovo (new); viene quindi ammesso nella lista dei processi che possono entrare in esecuzione (ready); il processo cui viene assegnato l’uso della CPU va in esecuzione (running) e resta in tale stato finché non avviene un evento tra i seguenti: o interruzione per gestione dati (I/O): il processo entra in uno stato di attesa (waiting) per la risposta dalla periferica consultata; una volta terminata l’operazione, il processo tornerà nello stato di ready. Per soddisfare richieste contemporanee da più processi, ogni periferica li inserisce in una coda gestita dal proprio driver, lasciando libero il sistema operativo per altre operazioni. o interruzione per termine dello slot di tempo a disposizione del processo7: il processo torna nello stato di ready, in attesa di una nuova attivazione da parte dello scheduler, dopo di che riprenderà l’esecuzione dal punto in cui era stato interrotto; o il processo esegue una istruzione di “fine lavoro”, o incontra un errore irreversibile8: passa allo stato di terminated, e lo spazio da esso occupato in RAM verrà rimesso a disposizione (riallocato). Un altro tipo di interruzione avviene quando un processo effettua una richiesta d’uso di parti di memoria o di dati non presenti in RAM, ma in memoria virtuale. Questa è una situazione molto comune quando la memoria centrale ha dimensioni ridotte, ed è detta page fault. Capita, per esempio, quando si riprende l’esecuzione di un programma lasciato a lungo inattivo, o si naviga all’interno di documenti molto grandi, che il software di gestione suddivide in blocchi, lasciando in RAM solo quelli in elaborazione, per non occupare troppo spazio. Ad ogni interruzione viene anche salvato il contesto d’esecuzione, ovvero lo stato dei registri al momento dell’interruzione, che dovrà essere ripristinato quando il processo tornerà running. In entrambe le situazioni, l’operazione viene detta context switch (cambio di contesto). Considerazioni analoghe si hanno anche quando i processi sono suddivisi in thread. 6 7 8 Prima era detto TCB (Task Control Block) Alcuni manuali chiamano questa situazione timed waiting. La gestione delle situazioni di errore viene detta error trapping; quando l’errore non viene intercettato correttamente, il processo va in “crash”, o, come si diceva in tempi ormai trascorsi, in “abend” (abnormal end). Può essere errore irreversibile una divisione per zero, se un programma non ha previsto possibilità alternative di elaborazione. Sistemi Operativi per PC Il concetto di sistema operativo nasce negli anni ’50. Il primo del quale si ha nome e traccia potrebbe essere stato GM-NAA I/O, sviluppato nel 1956 da Robert Patrick (General Motors) e Owen Mock (North American Aviation) per gestire i sistemi batch IBM delle rispettive ditte. Nel 1959 nasce una versione perfezionata chiamata SHARE (o anche SOS), poi distribuita dalla IBM con il nome di IBSYS. Siamo ancora nell’era dei tecnici in camice bianco, gli unici che avevano la possibilità di toccare il computer, sempre in ambienti asettici ed a temperatura costante (21°). Alla fine degli anni ’60 la AT&T (allora la maggior compagnia telefonica USA) sviluppa UNIX, un sistema operativo con interfaccia testuale ed interazione tramite riga di comando, nato per i computer delle serie PDP costruiti dalla DEC9. A questo SO si ispirarono quelli destinati ai Personal Computer: in particolare, il CP/M (Control Program for Microcomputers10) ed il successivo MS-DOS11. Sui PC sono comparsi brevemente altri sistemi operativi, tutti soppiantati dal DOS (1981), e da Windows (circa 1995). Anche un sistema successivo UNIX: Thompson, Ritchie, Kernighan (OS/2) fece la stessa fine. L’interfaccia grafica con mouse (GUI: Graphical User Interface) compare nel computer Xerox Alto (1973). Tutte le altre GUI sono ispirate12 a questa, comprese quelle che alcuni sostengono essere originali. Al momento, i sistemi operativi per PC sono di due categorie: sistemi Windows (proprietari) e sistemi UNIXlike (anche se sono tutti derivati da UNIX). Tra questi ultimi ci sono quelli open-source, come, ad esempio, MINIX, XENIX, GNO/Linux13), e uno proprietario che funziona in ambiente Apple, chiamato Mac OS X14. Sistemi operativi Microsoft Sono da sempre i più diffusi nelle piattaforme ad uso personale, con buona pace dei loro detrattori. La ragione storica di questo sta nell’uscita, nel 1981, del Personal Computer IBM. Al momento la IBM (soprannominata Big Blue) era l’azienda dominante, quella che stabiliva il mercato, per cui l’introduzione del PC diede uno standard che cancellò di fatto tutti gli “esperimenti” precedenti, compreso l’unico definibile come “standard” (il CP/M). Avendo la IBM scelto il sistema operativo DOS di William “Bill” Gates, questo diventò lo standard di fatto. Il ben noto (per molti, famigerato) Windows nasce come applicazione DOS, per offrire un’interfaccia grafica alle operazioni di sistema (questo fino alla versione 3.11). Negli anni si sono succedute, più o meno regolarmente, varie versioni: Windows 95, 98, 2000, Millennium, XP, Vista, 7, 8, e 9. GNU/Linux Gli amanti del software libero e dell’open source preferiscono affidarsi a una delle svariate distribuzioni del sistema operativo GNU/Linux (impropriamente chiamato Linux), derivato, come tutti del resto, dallo storico UNIX. La sigla GNU è un gioco di sigle che significa GNU’s Not Unix, ed è stato scritto quasi in prima persona dall’americano Richard Stallman. Linux, sviluppato a partire dal 1991 dal finlandese Linus Torvalds, è “solamente” (per modo di dire: in realtà è un ottimo prodotto) un kernel che è stato inserito nel resto del sistema GNU. A leggere le interviste, pare di intuire che Stallman e Torvalds non siano in termini esattamente amichevoli. Stallman non sembra del tutto felice che il sistema operativo sia attribuito a Torvalds; Torvalds, da parte sua, non sembra approvare la dedizione maniacale di Stallman alla libera circolazione del software. 9 Ora estinti, sono entrati comunque nella storia come i primi computer a “portata di uomo” (e non di tecnico-sacerdote in camice bianco). 10 Negli anni ’70 erano usati i termini minicomputer (per i piccoli sistemi multiutente) e microcomputer (più tardi personal computer). 11 Esistevano molti sistemi analoghi, come PC-DOS, DR-DOS, FreeDOS, Novell DOS, ed altri. 12 Anticamente si diceva “copiate”. 13 Linux NON è un sistema operativo completo: è un kernel per il sistema GNU. 14 In realtà si tratta di una versione glorificata di UNIX, rivestita con un‘interfaccia grafica e spacciata come geniale. Installazione Rispetto ai primi anni ’90, abbiamo assistito ad una notevole evoluzione dei sistemi operativi; siamo passati da sistemi con shell testuali (di cui rimane traccia nel “Prompt dei comandi” di Windows, e anche in certi oscuri comandi in GNU/Linux) a sistemi con interfacce grafiche sempre più intuitive con utility che permettono di svolgere ogni tipo di operazione, dalla formattazione di un disco alla gestione dei programmi TV. Di conseguenza, i programmi di installazione che prima erano distribuiti su floppy disk ora sono distribuiti in DVD o con altre modalità15. Quando acquistiamo un personal computer possiamo richiedere una versione OEM (Original Equipment Manufacturer) del sistema operativo, che viene solitamente preinstallata sull’hard disk, e talvolta, alla prima accensione, richiede le informazioni per la configurazione del sistema. È possibile poi registrare dei CD o DVD di ripristino per poter reinstallare o modificare una o più componenti del sistema. Un sistema operativo può essere installato usando diversi dispositivi e tecniche: • • • • supporti ottici come CD e DVD, generalmente compatibili con tutti i sistemi, anche se non con i net-PC; un sistema lento ma efficace; memorie a stato solido USB (pen-drive) o dischi removibili; un sistema veloce ed affidabile, però non tutti i sistemi supportano questa operazione; rete (Network-based): rispetto ai precedenti dà la possibilità di eseguire più installazioni in parallelo; anche se molto lenta, è una soluzione comunemente usata dove è presente una LAN di medie/grandi dimensioni con decine di computer da predisporre. installazioni ibride (CD+rete), in certi sistemi GNU/Linux (Debian, Fedora) • clonazione: dopo avere installato il SO su un singolo computer, opportuni software consentono di replicare l’installazione su altri; questo per evitare di ripetere la stessa procedura molte volte. Ogni sistema operativo ha requisiti minimi che possono variare da sistema a sistema e che possono dipendere anche dal tipo di installazione che si vuole effettuare. Generalmente si parla di configurazione hardware minima e configurazione consigliata: per configurazione minima si intende quella che permette al sistema operativo di andare in esecuzione. Se uno dei requisiti minimi non è soddisfatto il sistema operativo in questione non può essere installato e bisogna procedere ad un aggiornamento dell’hardware (o cambiare computer). Per configurazione hardware consigliata, invece, si intende quella ottimale che permette al sistema di andare in esecuzione fornendo delle buone prestazioni. In realtà la configurazione minima non è solitamente in grado di funzionare in modo soddisfacente (e talvolta non funziona proprio). Per quanto riguarda l’eventuale aggiornamento dell’hardware, è una situazione impraticabile: ci sarebbero quasi certamente componenti obsoleti, incompatibili con quelli disponibili sul mercato. Convivenza Sullo stesso PC è possibile installare più sistemi operativi. Se si sceglie di installarli su partizioni fisiche separate (che verranno esaminate più avanti), potrà poi operare solamente un sistema alla volta; una soluzione più flessibile è quella di usare macchine virtuali, per consentire a tutti i sistemi di operare contemporaneamente, anche se sotto il comando di quello effettivamente funzionante. Se i sistemi da installare sono tutti Microsoft (ad esempio: XP, Vista, 7), l’ordine d’installazione deve essere dal sistema più vecchio al sistema più recente, per motivi di compatibilità. Se i sistemi sono GNU/Linux si può procedere con una qualsiasi sequenza purché all’ultima installazione il computer venga configurato per avviare tutti i sistemi. Se invece sullo stesso PC si vogliono installare entrambi i tipi di sistemi, si consiglia di installare prima i sistemi Microsoft e poi quelli GNU/Linux (più versatili). 15 Anche perché i floppy disk da 1.44 Mb sono stati abbandonati da parecchi anni. PROCESSO DI AVVIO DI UN SISTEMA OPERATIVO Il processo di avvio di un sistema operativo viene chiamato, per lunga tradizione, boot, abbreviazione di bootloading, a sua volta abbreviazione di bootstrap loading. Le bootstrap sono le strisce di cuoio cucite agli stivali per facilitarne la calzata16. In tempi ormai andati (quelli dei camici bianchi) si usava la sigla IPL17 (Initial Program Load). BIOS e MBR Il BIOS (Basic Input-Output System18) è il primo programma che viene eseguito all’avvio del PC. Il BIOS risiede in una memoria permanente di tipo EEPROM (ROM19 programmabile) che conserva le informazioni anche quando il PC è spento. Il BIOS mantiene parecchie informazioni, tra cui la boot sequence (sequenza di boot), l’elenco dei dispositivi dai quali caricare il sistema operativo, che vengono esaminati nell’ordine, fino a quando non se ne incontra uno funzionante20. Una tipica boot sequence è: hard disk, CD, USB. Dal dispositivo di boot il BIOS estrae il MBR (Master Boot Record) che contiene i dati necessari per il boot del sistema. Detto anche settore di avvio, occupa la zona iniziale dell’hard disk. Il BIOS svolge le seguenti funzioni: • • La fase POST (Power-On Self Test) esegue una serie di test diagnostici sull’hardware per verificare il corretto funzionamento dei principali dispositivi (CPU, RAM, scheda video, memorie di massa, mouse e tastiera): nel caso vengano rilevati errori questi vengono segnalati tramite un codice sonoro (una sequenza di beep che indica qual è il dispositivo guasto); La fase di bootstrap in cui, seguendo la sequenza di boot, viene individuato il dispositivo da cui leggere le informazioni per il boot, viene letto il MBR e si procede con l’avvio del sistema operativo. Avvio nei sistemi Windows 1. POST (Power-On Self Test): controllo del corretto funzionamento dei principali dispositivi hardware; 2. il BIOS individua ed esamina il MBR, poi avvia il bootloader21 che legge il file di configurazione22; in caso di multi-boot, l’utente sceglie il sistema operativo; 3. Caricamento del kernel; 4. Caricamento dei driver; 5. Avvio dei programmi residenti (quelli che restano sempre in memoria centrale: in Windows sono detti servizi; in altri sistemi daemon); 6. Login (autenticazione); 7. Avvio: vengono caricati desktop, icone e programmi in “avvio automatico” (quelli che l’utente ritiene di usare sempre, risparmiandosi così la necessità di attivarli). Le versioni di Windows dalla 7 in poi hanno sostituito il file di configurazione con dati detti BCD (Binary Configuration Data), modificabili con i programmi chiamati MSCONFIG e BCEDIT. In precedenza venivano usati dei file di testo (boot.ini) contenenti le descrizioni delle modalità di boot, la cui complessità sempre crescente ha reso consigliabile la ricerca di formati più flessibili e veloci da consultare, analoghi a quelli del registry. Per gli amanti del rischio c’è anche un’opzione del Pannello di Controllo, chiamata Configurazione di Sistema. 16 L’espressione deriva da “to pull oneself up by one’s bootstraps”, storpiatura di una delle incredibili avventure del Barone di Munchhausen (R.E.Raspe, 1781). 17 Dalla sigla IPL certi manuali in italiano ricavavano la dubbia indicazione di “ipiellare la macchina” 18 Si chiama Input-Output perché nei primi sistemi Windows conteneva anche i driver per le periferiche 19 ROM = Read Only Memory 20 In mancanza di un dispositivo funzionante, di solito sono guai 21 bootmgr.exe in Windows (ntldr.exe in Windows XP); GRUB o LILO in GNU/Linux; BootX in Mac 22 BCD data in Windows (boot.ini in Windows XP); lilo.conf o grub.conf in GNU/Linux. Patch e service pack Le patch e i service pack sono aggiornamenti che il produttore del sistema operativo mette a disposizione per correggere i problemi (bug). La differenza sta nell’entità dell’intervento: un patch serve a correggere un determinato bug, un service pack di solito è molto più consistente, e, oltre a raggruppare tutti i patch rilasciati fino a quel momento, talvolta aggiunge nuove funzionalità al sistema operativo. Durante l’installazione degli aggiornamenti il sistema effettua un backup dei file modificati in modo da poter disinstallare il patch o il service pack (operazione detta rollback). Lo strumento che permette di verificare gli aggiornamenti nei sistemi Microsoft è “Windows Update”, attivabile dal menu Start o anche da Internet Explorer (menu Strumenti). Il programma viene avviato in una finestra di Internet Explorer, ma è forse consigliabile scaricare l’aggiornamento ed eseguirlo direttamente dall’hard disk. Il controllo può essere: • Rapido: effettua la verifica solo degli aggiornamenti critici • Personalizzato: effettua la verifica di tutti gli aggiornamenti disponibili permettendo all’utente di scegliere quali aggiornamenti installare. Nella parte destra viene indicato se sono attivi o meno gli aggiornamenti automatici. Aprendo ogni voce è possibile vedere in dettaglio gli aggiornamenti possibili; dopo aver selezionato quali aggiornamenti installare viene mostrato l’elenco nella parte destra della finestra. Ogni aggiornamento è rappresentato da un titolo e un codice Microsoft (di solito ha il suffisso KB e una sequenza di numeri); è possibile visualizzare i dettagli ed effettuare ulteriori selezioni. Anche i sistemi non Windows hanno le loro patch: Oltre ai sistemi operativi, è comune trovare patch anche per applicazioni varie: File System ystem Introduzione Il file system (FS) è una componente fondamentale del sistema di calcolo, dato che definisce e controlla l’accesso alla memoria di massa da parte di utenti e applicazioni. Senza di esso, le informazioni su un disco sarebbero un insieme indefinito di dati, senza modo di riconoscerli e distinguerli. I dati sono memorizzati sui dischi in sezioni separate, individuate da un nome, dette file. Il termine è lo stesso che viene usato per gli armadi metallici usati nelle aziende per archiviare pratiche e schede. Anche il termine cartella, che indica un contenitore secondario dove si possono raggruppare più file, viene dal mondo del lavoro d’ufficio. Nel passato, le cartelle venivano chiamate directory, termine che indica un qualsiasi elenco, ed in particolare quello telefonico. Con file system non si indicano solo i file (intesi come blocchi di informazioni indipendenti), ma anche la struttura e le regole usate File, cartella, directory per gestirli. Ci sono molti file system diversi, ciascuno con la propria struttura e la propria logica: cambiano, ad esempio, velocità, flessibilità, misure di sicurezza, dimensioni. In alcuni casi, i FS sono stati progettati per unità specifiche (come è avvenuto, ad esempio, per i CD e poi per i DVD). Esistono diversi dispositivi di memoria, ciascuno con il suo tipo di supporto. Quello più usato è il disco fisso (hard disk, hard drive), un piatto di metallo con superficie magnetizzata, sulla quale i bit dei dati sono registrati con impulsi elettrici che attivano una testina magnetica di lettura/scrittura. I dischi fissi risalgono agli anni ’50, ed erano inizialmente chiamati “Winchester”. Nelle memorie a nastro DAT (Digital Audio Tape, eredi delle prime memorie di massa) i principi fisici della registrazione sono ancora magnetici. Nei dischi ottici (CD e DVD) i byte sono rappresentati da indentazioni nella superficie di plastica. Nelle memorie flash (come i pen-drive e le schedine delle macchine fotografiche), i dati sono registrati su dispositivi elettronici tramite un procedimento chiamato Fowler-Nordheim tunneling, che ha le sue basi nella meccanica quantistica. A volte anche la RAM del computer può essere usata per contenere un file system temporaneo (disco virtuale), con le stesse convenzioni usate per i dischi: l’unica differenza sarà nel nome (o la lettera) che verrà assegnato alla zona usata. Le cartelle sono raggruppamenti separati di file, presumibilmente associati tra loro. Mentre nelle prime unità di memoria la struttura del file system era flat (piatta), ora è possibile strutturare un sistema gerarchico di cartelle con un’organizzazione detta tree. Gli alberi informatici sono rovesciati, con la cartella principale, detta radice (root) in alto: ogni cartella può contenere file o altre cartelle. Gli elementi della struttura sono detti nodi, e quelli terminali sono detti foglie. Rispetto ad una sottocartella, quella che la contiene viene detta parent folder; a sua volta, quella subordinata viene detta child folder. Le parentele si fermano lì (non ci sono nonni, né cugini, né nipoti). I file sono identificati, oltre che dal loro nome, dall’unità e dalla cartella nelle quali risiedono. Nei sistemi Windows, il nome dell’unità è tradizionalmente una lettera. Dato che la struttura ad albero indica quali cartelle si incontrano per definire la posizione di un elemento, il nome completo di un file è detto pathname (path=cammino), dove, proseguento l’analogia botanica, incontriamo: cartella, stem (stelo), estensione. C:\storage\data\inventory.jpg L’estensione indica il tipo di file e l’uso a cui è destinato. Ad esempio, exe viene usato per programmi e applicazioni, jpg per immagini, mp3 per clip audio, e così via per migliaia di casi diversi. Ogni file system prevede convenzioni per i nomi dei file: ad esempio, la lunghezza massima in caratteri del nome e dell’estensione, i caratteri ammessi, il numero di livelli di sottocartelle, se le lettere maiuscole e minuscole sono significative. A dispetto di tutte le possibilità offerte, sono generalmente sconsigliati caratteri “strani” (non alfanumerici, tranne trattini o underscore), e anche gli spazi, per possibili incompatibilità tra file system diversi. Cosa contiene il file system Dal punto di vista dell’utente, il file system è un’organizzazione che rende disponibili: • • I file (=archivi), zone di spazio su disco collegate tra loro e associate da un nome comune, in cui sono contenute le informazioni di interesse per gli utenti (programmi oppure dati). Il sistema gerarchico di gestione dei file che consente a utenti e applicazioni di organizzare i propri dati. Un disco (ormai divenuto un nome generico anche per altre memorie di massa, come i pen-drive) può essere usato interamente per un file system, oppure può essere diviso in partizioni, ciascuna delle quali può ospitare un file system diverso (anche se questa situazione è abbastanza inconsueta). Tutte le informazioni relative alle partizioni sono contenute in una struttura dati gerarchica, anticamente detta directory (elenco), oppure indice. Il nome ora usato è folder (cartella), che descrive quegli elementi del file system che contengono i nomi di file o di altre cartelle. Ci sono alcune cartelle privilegiate, tra le quali: • home folder: contiene i file personali di un utente specifico; • root folder: la cartella principale del FS, quella che contiene file e altre cartelle; • system folder: contiene i file del sistema operativo; • program folder: contiene programmi di utilità e middleware. Nei sistemi Windows, il file system è organizzato in unità logiche indicate con le lettere dell’alfabeto. Le lettere A: e B: sono storicamente riservate per le unità floppy, ora non più un uso (esistono solo come unità esterne USB). L’unità C: è il disco di sistema (contenente il sistema operativo) All’interno della partizione di sistema sono presenti, tra le altre, le seguenti cartelle: • Utenti (in XP, Documents and Settings): contiene tutti i profili degli utenti. Di default oltre alla directory relativa all’utente “Administrator” sono presenti le directory “All Users” e “Default User": la prima contiene informazioni valide per tutti gli utenti, la seconda è una matrice per i nuovi profili utente. • Programmi (a volte, con versioni in inglese, “Program Files”): contiene varie cartelle con programmi e applicazioni installati nel sistema. È possibile installare applicazioni in altre cartelle, ma per ragioni organizzative è generalmente sconsigliato. • Windows: contiene i principali file del sistema • Recycler: cartella di sistema nascosta (cestino); • System Volume Information: cartella di sistema nascosta che viene usata dallo strumento “Ripristino configurazione di sistema” per memorizzare le informazioni e i punti di ripristino. La cartella utenti contiene una sottocartella per ogni utente; detta profilo utente e avente per nome lo stesso username, contiene, tra le altre, queste informazioni: • Dati applicazioni: contiene alcune impostazioni specifiche dei programmi installati determinate dal produttore del software. • Impostazioni locali: contiene i dati come la cronologia e i file temporanei. • Desktop: file e le cartelle presenti nel desktop dell’utente; • Documenti, musica, video che l’utente ha salvato; • Preferiti: collegamenti ai siti web preferiti memorizzati dall’utente. Nel sistema operativo Windows tutte le configurazioni (hardware, sistema, utente, dati) sono memorizzate nel registry (registro di sistema). Anch’esso è organizzato come una cartella, ed è modificabile con un programma chiamato regedit (da usare con cautela). Partizioni Una partizione è sostanzialmente una parte di un disco (o di più dischi) che il sistema operativo rende indipendente dal punto di vista logico e a cui assegna un apposito file system. Molto frequentemente su unità disco fisiche sono definite più partizioni (ovvero più unità disco logiche) come mostrato nella prima immagine sottostante. A volte, al contrario, sono usati più dischi per creare un’unica partizione, come mostrato nella seconda immagine: Per usare una partizione bisogna assegnare predisporre la superficie fisica del disco e il file system. Questa operazione si chiama formattazione, e può essere di due tipi: • ad alto livello (rapida), che cancella i riferimenti ai file, ma lascia inalterata la superficie del disco. • a basso livello (completa), che cancella sia le informazioni del file system sia il disco. N.B.: un disco usato, anche se formattato, può essere comunque letto, anche se solo in parte, e da utenti molto esperti. L’unico modo per impedire l’accesso alle informazioni con assoluta sicurezza è la distruzione del disco. Esistono due tipi di partizioni: primarie ed estese. Una partizione estesa è una partizione che può contenere una o più sottopartizioni, chiamate dischi logici (o partizioni logiche). Una partizione primaria invece non può contenere sottopartizioni ma può essere usata per contenere ed avviare il sistema operativo. Una sola delle partizioni primarie può essere attiva in un certo momento e solo da quella partizione può essere avviato il sistema operativo. Un disco di base [vedere sotto] può contenere fino a 4 partizioni primarie, o tre partizioni primarie ed una estesa, all’interno della quale è possibile creare fino a 60 partizioni logiche. Le partizioni, normalmente, sono statiche ed associate ad un singolo disco. Per superare questo vincolo, in ambiente Windows (ed anche in Linux) sono stati creati particolari metodi di allocazione dello spazio disco, volumi di base e volumi dinamici. In un volume di base, le partizioni si possono estendere solo all’interno del disco fisico, mentre in un volume dinamico si possono estendere anche ad altri dischi fisici. La gestione dei volumi avviene attraverso il comando DiskPart ed è possibile solo per il file system NTFS (si tratta di operazioni delicate, che si consiglia lasciare agli utenti esperti). Memorizzazione dei dati Per ottimizzare le operazioni di lettura e scrittura, il file system non alloca la memoria del disco settore per settore, ma in unità costituite da un insieme contiguo di settori (cluster). Il cluster è quindi l’unità di allocazione su disco (la più piccola quantità di memoria disco che possa essere allocata). La struttura del disco, diviso in tracce (A), settori (B), e cluster (C) è mostrata nella figura a destra (può esserci anche uno sviluppo verticale, nel caso l’hard disk sia composti da più “piatti”: il disco a sinistra ha 4 piatti e 8 testine di lettura/scrittura). Per esempio, in un disco che usa 512 byte per settore, un cluster di 512 byte contiene 1 settore, mentre uno di 4 Kb contiene 8 settori. Essendo il cluster l’unità minima di allocazione, se sono troppo grandi potrebbe verificarsi un forte spreco di memoria su disco. Per esempio, per memorizzare un file di 5 Kb su un file system con cluster di 4 Kb sono necessari 2 cluster, per un totale di 8 Kb ed uno spreco di 3 Kb. In questo caso si parla di frammentazione interna, poiché la memoria disco risulta allocata ma non disponibile. La frammentazione esterna, invece, avviene quando tra due file si viene a creare uno spazio vuoto troppo piccolo per memorizzare i cluster di nuovi file in modo contiguo (tipicamente, questo avviene cancellando file il cui spazio è compreso tra zone del disco già occupate). Il nuovo file verrà pertanto frammentato su più cluster non contigui. In questo caso, più piccolo è il cluster e maggiore è la frammentazione. Nell’immagine a fianco, i file sono rappresentati da papere di diverso colore. Si pu trovare (con alcune interessanti spiegazioni) presso: http://electronics.howstuffworks.com/how-to-tech/how-to-defrag-hard-drive2.htm Interna o esterna, la frammentazione è la causa principale del rallentamento del tempo di accesso al disco, dato che aumenta il tempo di latenza medio per il reperimento dei cluster. La testina di lettura deve essere ruotata sul proprio perno per raggiungere la traccia, inoltre la rotazione del disco deve portare il settore in corrispondenza della testina. Queste due azioni determinano il tempo di latenza per il reperimento dei cluster: appare chiaro che quando i dati sono sparsi per tutto il disco, il tempo di overhead23 aumenta in modo insostenibile. Quindi la scelta della dimensione del cluster (né troppo grande, né troppo piccolo) deve essere effettuata molto accuratamente, tenendo in considerazione il file system da usare e la dimensione media dei file che dovrà contenere. Ad esempio, se un utente ha a che fare con file molto grandi (come film e animazioni) dovrà aumentare la dimensione dei cluster, per tentare di ridurre l’overhead. L’immagine seguente esemplifica due possibili situazioni (frammentata e riorganizzata, anche se non perfettamente). La seguente immagine è tratta da http://bucarotechelp.com: Più avanti verrà esaminata la procedura per la deframmentazione. 23 Si definisce così il tempo sottratto all’elaborazione per svolgere operazioni di manutenzione. Metodi di allocazione I file system si differenziano nel modo in cui allocano i cluster di un file. Il primo metodo usato è stato quello detto allocazione contigua, nel quale, come dice il nome, si usavano sempre cluster contigui: fu presto abbandonato per le scarse prestazioni dovute ai tempi di latenza della testina di lettura/scrittura, e sostituito progressivamente dai seguenti: • Allocazione concatenata (FAT24): i cluster di un file sono organizzati come lista, memorizzando in ogni cluster il riferimento a quello successivo • Allocazione indicizzata (prima HPFS25, poi NTFS26): il file è memorizzato in un insieme di cluster elencato in un cluster indice, consentendo così un accesso più veloce, perché non c’è bisogno di inseguire i collegamenti tra un cluster e l’altro. • UDF27, creato dalla OSTA (Optical Storage Technology Association), per le memorie ottiche (prima CD e poi DVD), al fine di ottimizzare la gestione di file di grandi dimensioni e per minimizzare la necessità di cambiamenti quando un file deve essere aggiunto o cancellato (operazioni lente sulle memorie di questo tipo). Cache del disco Quando si effettua una lettura da disco, l’unità individua il settore richiesto dalla memoria di massa, per caricarlo in memoria centrale (spesso ne servono più di uno per contenere i dati necessari), ma estrae anche quelli nelle immediate vicinanze, copiandoli dentro una zona chiamata cache del disco. Questa memoria di passaggio (una volta definita buffer=tampone) è in un’area privilegiata del disco fisso, ad accesso veloce. Nel caso (abbastanza probabile) che i dati della richiesta successiva siano già nella cache, si minimizza il loro tempo di estrazione; c’è poi un altro effetto secondario nella riduzione l’usura del disco, perché la testina di lettura/scrittura necessita di meno spostamenti. Ovviamente, prima o poi si dovrà di nuovo accedere al disco, ma presumibilmente con meno frequenza). E’ possibile usare la cache solo in lettura oppure anche in scrittura. In quest’ultimo caso le modifiche dei dati vengono effettuati prima nella cache e, in un secondo momento, anche nel disco. Se vi è un interruzione di corrente prima che i dati della cache siano stati scritti sul disco, le modifiche vengono perse (questo spiega la presenza della rimozione sicura). I sistemi operativi possono usano anche parte della memoria centrale (anticamente chiamata HSB: High Speed Buffer) come cache, migliorando ulteriormente le prestazioni di accesso al disco. Per la gestione della cache esistono diverse possibilità, sia dal Pannello di Controllo (con Strumenti di Amministrazione / Gestione Computer / Gestione Periferiche), sia dal Prompt dei comandi, con il programma devmgmt.msc. Immagine tratta da http://www.maran.com/dictionary/c/cachedi: 24 File Allocation Table High Performance File System 26 New Technology File System 27 Universal Disk Format 25 Gestione dei dischi I dischi sono unità fondamentali, in quanto deposito dei dati utente. Questi vanno protetti e controllati in ogni modo possibile, essendo un patrimonio di informazioni spesso di vitale importanza per un’attività o una persona28. Le situazioni da evitare si possono suddividere in questo modo: • • perdita di dati; danneggiamento dell’unità disco (che, ovviamente, comporta anch’esso una perdita di dati). I dati vengono persi molto più spesso per propria imperizia che per interventi malevoli da parte di pirati informatici. Può anche mettersi di mezzo la malasorte, quando uno spegnimento improvviso del computer avviene prima che tutti i dati siano stati salvati: la protezione maggiore, tuttavia, è quella contro sé stessi: manovre avventate o frettolose si traducono spesso nella sovrascrittura o nella cancellazione di dati importanti, molto più frequentemente degli “interventi” esterni. A volte può avvenire un danno fisico ad un disco, che, ovviamente, comporta anch’esso la perdita di tutti i suoi dati; anche in questo caso ha poca importanza se si tratta di un sabotaggio o del semplice fatto che ogni dispositivo è soggetto a guasti. Il sistema operativo e i programmi sono generalmente recuperabili, ripetendo le procedure di installazione; i dati, invece, sono responsabilità dell’utente. Per quanti strumenti possano essere adottati (backup automatici e RAID29 su tutti) è sempre consigliato fare delle copie su unità rimovibili, da conservare in luogo sicuro o su un altro computer; hard disk esterni, CD e DVD sono comunemente usati per queste operazioni. Una volta che i propri dati sono al sicuro, sarà possibile lavorare con più tranquillità, riguardo sia a nostre azioni inconsulte, sia a tutti i possibili guasti e danni che possono capitare. Esistono specialisti e strumenti in grado di recuperare dati, anche da dischi danneggiati, ma non è garantito che venga ripristinato tutto quanto è andato perso, perciò la copia preventiva rimane sempre e comunque l’unica vera protezione. Permessi L’accesso ai dati, legittimo o no, può essere regolato con i permessi di accesso, Introdotti con il file system NTFS, possono essere attribuiti con diverse opzioni, che possono riguardare singoli utenti o interi gruppi, singoli file o intere cartelle. La gestione dei permessi viene attivata selezionando le proprietà del file o della cartella interessati. I permessi possono riguardare varie operazioni: Lettura, Modifica, Scrittura, Esecuzione, Elenco. Esistono anche permessi più avanzati, che di solito vengono lasciati agli specialisti. I permessi sono gestiti da due categorie di utenti: • l’utente proprietario di un oggetto; • l’amministratore del sistema operativo. Sono detti utenti privilegiati quelli che hanno a disposizione tutti gli accessi; normalmente si tratta di esperti, meno propensi a commettere errori o a danneggiare il contenuto o il funzionamento del file system. Salvataggio automatico Questa operazione (detta backup) può facilitare nella manutenzione dell’integrità dei dati. Può essere effettuata in modo logico (copia di file) o fisico (duplicazione di un intero disco); oltre ai sistemi operativi, anche molti software permettono di pianificare i salvataggi. Journaling Questa tecnologia è usata in molti file system moderni: ogni transazione effettuata su disco genera un log30 in un apposito registro, dove vengono memorizzati i dettagli dell’operazione, compresi tipo, data e ora, utente responsabile. Questo permette di rintracciare le registrazioni fatte, per tentare di ricostruire dei dati in seguito danneggiati o, più spesso, per individuare i responsabili di azioni dannose o criminose. 28 29 I video porno di solito non rientrano nella categoria dei dati importanti. Redundant Array of Independent Devices: si tratta di dischi aggiuntivi dove i dati vengono copiati, o con operazioni periodiche o con duplicazioni complete dei dischi di lavoro. 30 Captain’s log è il giornale di bordo in marina. Manutenzione dei dischi I dischi dei computer sono dispositivi soggetti ad errori, data la loro struttura complessa e il numero elevato di operazioni che vengono eseguite su di essi. A questo si aggiungono possibili guasti di natura esterna, solitamente dovuti a bruschi spegnimenti del sistema o ad altri incidenti fisici. I principali sistemi operativi mettono a disposizione delle utility che permettono di controllare in modo accurato il file system e la consistenza della sua struttura, per correggere gli errori e rimediare alle situazioni di frammentazione. Un’altra operazione che può risultare utile è l’eliminazione dei file temporanei che molte applicazioni lasciano sparsi per il disco, sia in fase di installazione sia in fase di uso. A seconda del tipo di disco che si vuole controllare questi strumenti possono essere eseguiti senza interrompere le normali attività oppure, come ad esempio quando si vuole analizzare il file system in cui è installato il sistema operativo, richiedono il riavvio del sistema per effettuare la verifica in fase di boot, quando ancora nessun servizio è stato avviato. In Windows esistono due utility che correggono (o tentano di farlo) gli errori dovuti a perdita di informazioni sui file, per perdita di collegamenti o danneggiamento a settori: scandisk chkdsk da Accessori (pulizia disco/controllo superficie del disco) da Prompt dei comandi (comando legacy residuo del DOS) Un’altra utility riorganizza il contenuto del disco per ridurre il fenomeno della frammentazione, e consentire così migliori prestazioni nelle successive operazioni di accesso alla memoria di massa, compattando le informazioni associate in aree contigue del disco. defrag da Accessori o da Prompt dei comandi Questo programma (e tutti quelli commerciali ad esso simili) visualizzano una mappa dei settori del disco prima e dopo la cura: va detto che difficilmente si riesce a riorganizzare completamente il contenuto, ma generalmente la situazione finale è molto meno critica. Queste utility consentono anche la sola analisi del contenuto del disco, senza procedere agli aggiornamenti, per progettare e pianificare meglio l’azione effettiva: si tratta infatti di operazioni complesse, che non devono essere interrotte, altrimenti si corre il rischio di ritrovarsi una situazione incompleta, con perdita di dati. Nei sistemi GNU/Linux la contiguità dei file è un problema minore, soprattutto nei file system più recenti. Questo perché hanno a disposizione sofisticati algoritmi che permettono di ottimizzare al massimo la disposizione dei file sull’hard disk, in particolare delle procedure di garbage collection, che hanno lo scopo di unire in un unico blocco il maggior numero di aree libere. Il problema in questi sistemi è che, al momento in cui si giunge al bisogno della deframmentazione, generalmente il disco è quasi pieno, e non ha più lo spazio sufficiente per effettuarla (è anche vero che questo avviene dopo anni di uso, ed a quel punto il disco è probabilmente da sostituire). Pulizia dei dischi Eliminazione dei dati inutili Spesso le unità a disco subiscono un degrado delle prestazioni per l’uso generalizzato di file temporanei, che possono essere residui di installazioni, dati provvisori di svariati programmi applicativi, o, più spesso, per mantenere traccia delle proprie frequentazioni Web. Per evitare che numero e dimensioni di questi file cresca a dismisura può essere utile sapere dove questi file vengono comunemente memorizzati e come usare strumenti che ci aiutano ad eliminarli, almeno periodicamente. Nei sistemi Windows è possibile rimuovere questi dati: • tracce della navigazione nell’Internet; • dati del Cestino; • file temporanei di Windows; • componenti facoltativi di Windows. • punti di ripristino della configurazione del sistema (ad eccezione, possibilmente, di quello più recente). Anche il Cestino, nonostante le apparenze, è una cartella del disco di sistema. Ci sono anche alcuni che lo usano come tale, per contenere dati di servizio, ma non è un’abitudine consigliabile: potrebbe essere impostato lo svuotamento automatico del cestino, che ne cancella definitivamente il contenuto. Un file eliminato con il Prompt dei Comandi, invece, è comunque perso per sempre. Eliminazione dei programmi inutili Nel pannello di controllo, alla voce “Programmi e funzionalità” , è possibile consultare l’elenco di tutti i programmi installati. Spesso capita di scaricare versioni dimostrative di programmi, o di provare nuove applicazioni: in questa sede possono essere selezionati e disinstallati i programmi che non si usano. Eliminazione delle barre di strumenti inutili Tutti gli interventi descritti sono indubbiamente da fare, almeno periodicamente. Vanno però integrati con la rimozione periodica di tutto il ciarpame che viene installato inavvertitamente quando si scaricano utility dall’Internet. Un vero flagello sono le barre di ricerca, che spesso accompagnano i programmi scaricati, usando a tradimento spunte di consenso ben nascoste: prestando un po’ di attenzione è possibile non installarle, ma talvolta, per la fretta o per la distrazione, ci si ritrova il computer intasato, con visibili rallentamenti e schermi occupati dalle barre anziché dai dati che servono. Alcune di queste oscenità possono essere rimosse da “Programmi e funzionalità”, altre vanno disattivate delle impostazioni dei “Componenti aggiuntivi” dei browser. Ad esempio, la barra di ricerca della “Transport for London” (l’azienda dei trasporti di Londra) non riesce a trovare un treno che sia uno, in compenso rallenta tragicamente il computer e occupa, nella sua trionfante inutilità, un bel po’ di spazio sullo schermo31: Esistono alcuni software che permettono di controllare ed eliminare le barre di ricerca, effettuando il cosiddetto cleanup: 31 Indicato con il termine real estate, usato per le proprietà immobiliari.. Come si organizzano i programmi Il desktop è una cartella Molti hanno la pessima abitudine di salvare tutto quanto è possibile sul proprio desktop. Il problema è che, contrariamente a quanto sembra, il desktop non è un luogo privilegiato, ma una cartella come tutte le altre, all’interno della cartella Utenti. Il nome completo di tale cartella è piuttosto complesso; nell’esempio sottostante è: C:\Users\Docente (a scuola)\Desktop N.B. Nella versione italiana di Windows, sullo schermo si legge Utenti, ma in realtà il nome è quello della versione originale, Users. Nell’uso di alcuni programmi di sviluppo (come i compilatori dei linguaggi di programmazione) è una pessima abitudine quella di usare il desktop come contenitore. Per prima cosa, questi programmi hanno difficoltà a distinguere i propri file all’interno di cartelle con nomi complessi, comprendenti per di più degli spazi; la difficoltà è ancora maggiore per chi sviluppa, quando si tratta di unire parti di programma memorizzate in sottocartelle diverse. I maestri insegnano ad usare sottocartelle del disco fisso con nomi semplici e significativi, senza passare per un intricato percorso che porta dal disco all’utente, dall’utente al desktop, dal desktop ad altre sottocartelle. Nell’esempio sottostante, ad ogni cartella corrisponde un’applicazione o un elenco di file associati. Non ci sono complicazioni, né nomi dalla difficile gestione: Due delle applicazioni presenti sul disco sono nelle seguenti cartelle: C:\circe C:\eclipse Il consiglio dei maestri rimane fondamentale: usate le cartelle nel disco, disco non nel desktop