Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo

Pagina creata da Benedetta Nigro
 
CONTINUA A LEGGERE
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
10/09/2018

Liceo delle Scienze Applicate

Informatica
      Classe seconda
   Approfondimenti
       Argomenti:
        Sistemi Operativi
        File System
        Reti di Computer
        Aspetti legali del Software
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
Argomenti   File System
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
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, offrendo ad entrambi un’interfaccia con i componenti hardware. Tutti i
computer, dai PC ai grandi elaboratori internazionali, 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 non scrivono sistemi operativi.
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 è comunque in grado
di interagire con esso; 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 facile trovare, su     Informatica a strati
testi o su siti didattici, diagrammi simili, ma con lievi differenze nel numero e
nella disposizione dei livelli: sono dettagli dovuti alle preferenze di chi predispone il diagramma, ma non
modificano il quadro generale.
Ad un amministratore di sistema1 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 efficiente2.
Si può quindi riassumerne le funzioni 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 kernel3, è
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;
   l’uso della CPU da parte dei processi (programmi in esecuzione);                    giudica e manda secondo ch’avvinghia.
   lo spazio in 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
  Un tempo erano una o più persone (detti anche sistemisti) residenti in azienda: ora solo i computer più complessi sono
seguiti in questo modo, mentre gli amministratori dei nostri PC siamo noi stessi o professionisti free-lance.
2
  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.
3
  kernel (=nucleo): software che fornisce ai processi in esecuzione un accesso sicuro e controllato all'hardware
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
Evoluzione e classificazione dei SO
I primi computer (anni ’40) erano in grado di eseguire solo singoli
programmi (detti job), predisposti 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
                          diretti, effettuati manualmente, da operatrici dette computer (nella foto a destra,
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’ordine4.
Pochi anni 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 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 batch5.
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 (seconda metà degli anni ‘50) venne adottata una tecnica detta spooling
(Simultaneous Peripheral Operation On Line), una registrazione temporanea di dati in memoria per
velocizzare le operazioni di I/O:
   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 (spool di stampa).

4
  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.
5
  Batch = “a lotti”: termine mutuato dai panettieri, indica l’infornata di un gruppo di coppie di pane per la cottura
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
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 viene ora considerata come un grande
contenitore per i programmi in esecuzione, che vengono caricati o dalla memoria di massa o da lettori di
schede. Il concetto di base della multiprogrammazione è la presenza di più programmi in memoria, in
competizione tra loro per il controllo della CPU, attraverso la quale vengono eseguite le istruzioni di
ciascuno. Essendo il componente più costoso, la CPU è ancora una sola: alcune strategie consentono, tramite
un’alternanza bilanciata tra i programmi, di ridurre i tempi morti (nei quali la CPU viene detta idle).

            Tutti vogliono la CPU                                     Bisogna fare a turno

La presenza delle memorie a disco consente un ulteriore innovazione, detta memoria virtuale, che permette
di espandere le dimensioni della RAM o, nel caso ne sorga la necessità, di aumentare lo spazio disponibile
per calcoli o risultati parziali. In realtà, come si intuisce dal termine “virtuale”, si tratta di un’illusione, dato
che lo spazio aggiunto risiede sul disco, che è molto più lento della memoria centrale: è comunque un modo
per accomodare un maggior numero di programmi attivi. L’inganno consiste nel trasferire su disco intere
sezioni della RAM (dette pagine), che vengono sospese intanto che la CPU si occupa di altro: in questo
modo la memoria logica (quella che ogni programma “pensa” di avere a disposizione) diventa un’estensione
della memoria fisica (quella effettivamente presente nell’unità centrale).

,

La memoria virtuale permise di progettare programmi sempre più grandi, non più limitati dalla memoria
fisica disponibile. In presenza di programmi particolarmente massicci, tuttavia, il programmatore era talora
costretto a suddividere il task in blocchi indipendenti, che potevano essere scambiati tra di loro in RAM,
tramite la memoria virtuale o altre zone riservate su disco fisso. Questa tecnica, chiamata overlay, è ormai
un ricordo, perché già predisposta all’interno dei moderni sistemi operativi, che oltretutto dispongono di
memorie molto più capienti. Con un vero e proprio lavoro da sartoria, si dovevano preparare i segmenti di
overlay, istruendo il sistema operativo su quali dovevano rimanere in RAM (codice residente) e quali
potevano andare e venire dal disco. Tutto questo, evidentemente, rendeva più complessa la struttura dei
programmi e ne provocava problemi di prestazioni dovuti allo scambio dei segmenti tra memoria e disco.
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
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. Ad ogni task viene assegnata una priorità, che l’amministratore di sistema può
modificare a seconda delle necessità o dall’importanza dei tempi di risposta.
Il meccanismo delle interruzioni (1961) 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). Con questa tecnica (1964), 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 turno6. 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,             Il PDP-6, uno dei primi
interferendo il meno possibile con i processi principali. Il time sharing nasce           sistemi time-sharing.
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 disposizione7. 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)8.
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, tra le quali,
principalmente, la memoria centrale. 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. Ad esempio, capita spesso di visualizzare un
                                                 filmato da una pagina Web intanto che parte del contenuto non è
                                                 ancora completamente caricata. Processi e thread sono ora
                                                 accomunati dal nome generico (riciclato) di task.
                                                Un acuto specialista del settore, David Whittaker (da San Diego,
                                                California), fa notare, tramite la sua “teoria dei cuccioli”, come
                                                qualche volta il meccanismo non sia proprio perfetto.

6
  Il meccanismo di turnazione viene detto round robin, espressione usata anche per descrivere quei campionati sportivi
dove ogni partecipante incontra tutti gli altri.
7
  Questa era la formula, ora un po’ antiquata, che veniva usata come caratteristica del time sharing.
8
  Ad esempio, il processo A attende una certa azione da parte del processo B, mentre B attende lo stesso da A.
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
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 Block9), 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 (stato ready);
    il processo cui viene assegnato l’uso della CPU va in esecuzione (stato running) e resta in tale stato
     finché non avviene un evento tra i seguenti:
      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.
      interruzione per termine dello slot di tempo a disposizione del processo (timed waiting o pre-
          empting): 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;
      il processo esegue una istruzione di “fine lavoro”, o viene interrotto da un operatore, o incontra un
          errore irreversibile10: passa allo stato di terminated, lo spazio da esso occupato in RAM verrà
          rimesso a disposizione (riallocato), e le risorse da esso impegnate verranno liberate.

Un particolare tipo di interruzione I/O non dipende dalle richieste del programma: esso 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 è fondamentale salvare 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.

9
  In tempi precedenti, seguendo la terminologia di allora, era detto TCB (Task Control Block)
10
   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 remoti, in “abend” (abnormal end). Spesso questi errori sono
causati da calcoli non definiti, come una divisione per zero o una radice quadrata di numero negativo.
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
Già negli anni ’60 nasce l’idea di sistemi con più CPU, che possano consentire prestazioni
             migliori suddividendo il carico di lavoro tra i vari processori. Dovranno passare però una ventina
             d’anni per avere la cosiddetta “Connection Machine”, un enorme supercomputer in grado di
             usare migliaia di processori (fino a 65536, non a caso 216). Il progetto era collegato
             a studi sull’intelligenza artificiale, ed era frutto del lavoro congiunto di due
ricercatori del MIT, Danny Hillis e Sheryl Handler, fondatori della “Thinking Machines
Corporation”. Quei computer avevano un aspetto fantascientifico, con le unità distribuite in
grandi cubi neri cosparsi di centinaia di LED che si illuminavano man mano che i corrispondenti
processori entravano in funzione. La coordinatrice dei progettisti dei primi modelli (CM-1 e CM-2) era
l’artista Tamiko Thiel, non solo designer ma anche ingegnere meccanico. Alcune “Connection Machine” del
modello CM-5, disegnato dalla scultrice Maya Lin, erano presenti nella sala di controllo dell’isola del film
Jurassic Park (1993), anche se in realtà facevano solo scena, erano solo scatole non funzionanti.

Questo tipo di macchine ha dato origine al cosiddetto “calcolo parallelo” (parallel computing), uno sviluppo
della programmazione che abbina la soluzione dei problemi con la suddivisione dei compiti tra i processori
disponibili. Esistono due soluzioni alternative:
1. In alcune applicazioni scientifiche (il supercalcolo e la grafica avanzata) i processori si dividono le
   elaborazioni da un unico flusso di dati (SIMD: Single Instruction stream, Multiple Data);
2. La soluzione più diffusa (e anche più economica), invece, prevede che i processori operino in parallelo,
   ciascuno con elaborazioni distinte (MIMD: Multiple Instruction stream, Multiple Data).

Nel mondo dei Personal Computer (nato intorno al 1980) si è seguita inizialmente la strada del
potenziamento dei singoli processori. Si è tuttavia giunti ad un punto in cui l’incremento della frequenza dei
clock delle CPU avrebbe implicato un eccessivo surriscaldamento dei componenti, con la conseguente
necessità di dotare i processori di costosi impianti di raffreddamento. Si decise quindi di adottare la tecnica
ormai collaudata dell’architettura multiprocessore, introducendo i primi dual-core nel 2005.
Un’ulteriore spinta a queste tecnologie è stata data dallo sviluppo degli smartphone, le cui funzionalità sono
sempre più simili a quelle dei computer: nel 2017 sono in commercio processori eight-core alla portata di
tutti, mentre esistono già macchine più complesse (e costose) con 18 o più core.
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
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 autorizzati a 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 DEC11. A questo SO si ispirarono quelli
destinati ai Personal Computer: in particolare, il CP/M (Control Program for
Microcomputers12) ed il successivo MS-DOS13. Sui PC sono comparsi brevemente
altri sistemi operativi, tutti soppiantati dal DOS (1981) e poi da Windows (circa
1995). Anche un sistema successivo (OS/2) fece la stessa fine.                      KenThompson, DennisRitchie

         L’interfaccia grafica con mouse (GUI: Graphical User Interface) compare nel computer Xerox
         Alto (1973). Tutte le altre GUI sono ispirate14 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 UNIX-
like (anche se sono tutti derivati da UNIX). Tra questi ultimi ci sono quelli open-source, come, ad esempio,
MINIX, XENIX, GNU/Linux15), e uno proprietario che funziona in ambiente Mac, chiamato Mac OS X16.
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 10. Dov’è finita la
versione 9? Secondo alcuni osservatori, è stato saltato un numero per la scarsa popolarità della versione 8.
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.

11
   Programmed Data Processor, Digital Equipment Corporation. Ora estinti, sono entrati comunque nella storia come i
primi computer a “portata di uomo” (e non di tecnico in camice bianco).
12
    Negli anni ’70 erano usati i termini minicomputer (per i piccoli sistemi multiutente) e microcomputer (più tardi
personal computer).
13
   Esistevano molti sistemi analoghi, come PC-DOS, DR-DOS, FreeDOS, Novell DOS, ed altri.
14
   Anticamente si diceva “copiate”.
15
   Linux NON è un sistema operativo completo: è un kernel per il sistema GNU.
16
   In realtà si tratta di una versione glorificata di UNIX, rivestita con un‘interfaccia grafica e spacciata come geniale.
Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
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 calzata17. In tempi
ormai andati (quelli dei camici bianchi) si usava la sigla IPL18 (Initial Program Load).
BIOS e MBR
Il BIOS (Basic Input-Output System19) è il primo programma che viene eseguito all’avvio del PC. Il BIOS
risiede in una memoria permanente di tipo EEPROM (ROM20 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 funzionante21. 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 bootloader22 che legge il file di configurazione23; in
    caso di multi-boot, l’utente sceglie il sistema operativo;
3. caricamento software di servizio:
     Caricamento del kernel;
     Caricamento dei driver;
     Avvio dei programmi residenti (quelli che restano sempre in memoria centrale: in Windows sono
         detti servizi; in altri sistemi daemon);
4. Login (autenticazione);
5. Avvio attività: vengono caricati desktop, icone e programmi in “avvio automatico” (quelli che l’utente
    ritiene di usare sempre, risparmiandosi così il lavoro 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.

17
   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).
18
   Dalla sigla IPL certi manuali in italiano ricavavano la dubbia indicazione di “ipiellare la macchina”.
19
   Si chiama Input-Output perché nei primi sistemi Windows conteneva anche i driver per le periferiche.
20
   ROM = Read Only Memory.
21
   In mancanza di un dispositivo funzionante, di solito sono guai.
22
   bootmgr.exe in Windows (ntldr.exe in Windows XP); GRUB o LILO in GNU/Linux; BootX in Mac.
23
   BCD in Windows (boot.ini in Windows XP); lilo.conf o grub.conf in GNU/Linux.
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:
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à24.
                                  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, 8,
10), 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).

24
     Anche perché i floppy disk da 1.44 Mb sono stati abbandonati da parecchi anni.
Note storiche e terminologiche
          Periodo        Tecniche                    Caratteristiche                         Nome
      1   1945-1950      Programmi singoli                                                   JOB
      2   1951-1960      Elaborazione batch          Unità a nastro/unità a schede
      3   1961-          Multiprogrammazione         Unità a disco                           TASK
                                                     Memoria virtuale/overlay
                                                     Meccanismo delle interruzioni
      4   1964-          Time sharing                Meccanismo degli slot temporali
      5   1981                                       Nascita del PC                          PROCESS
      6   1985-          Multiprocessing
      7   2005-          PC Multiprocessing                                                  TASK
Il primo computer multiprogrammato commerciale pare sia stato Leo III, nel 1961. La LEO Computers Ltd.
fu fondata dalla Lyons nel 1954 dopo l’esperimento del primo computer aziendale, il LEO I. La LEO e la
Ferranti Computers (produttrice del primo computer commerciale) furono poi assorbite da una compagnia
chiamata ICL, che operò tra il 1968 e il 2002. Il resto della Ferranti chiuse per sempre nel 1993. Esiste un
sito Web della categoria “nostalgic”, dedicato a tutti gli ex dipendenti e collaboratori della LEO, a chiunque
abbia usato un LEO, e agli storici dell’informatica:
                                 http://www.leo-computers.org.uk
Il time sharing è complementare alla multiprogrammazione. L’idea è nata con le applicazioni interattive,
quando venne presto osservato che gli utenti alternano brevi periodi di input con pause molto più lunghe. I
primi esperimenti vennero effettuati al MIT, mentre il primo sistema commerciale su larga scala è quello del
DTSS (Dartmouth Time Sharing System), sviluppato in una delle più antiche università americane. Il DTSS
è stato sviluppato anche sui moderni PC:
                                      http://www.dtss.org/dtss

                                              TERMINOLOGIA
    Single jobs                 Computer da programmare ad ogni            Il termine batch (partita, lotto,
                                cambio di dati                             informata) è stato preso a
    Batch programming           Un programma alla volta                    prestito dal gergo dei panettieri

    Multiprogramming            Più programmi presenti
                                contemporaneamente in RAM, pronti
                                all’esecuzione
    Multiprocessing             Uso di più unità di elaborazione (CPU)
    Multithreading              Suddivisione di processi in parti
                                indipendenti
    Multitasking                MP / TS / MT

Come si può notare, il termine task, in altri tempi usato per un singolo programma, è rimasto in uso, riciclato
per indicare genericamente processi e thread.

Un paio di cose che vengono a volte insegnate scorrettamente:
1) Non esiste una “dualità” tra multiprogrammazione e time sharing: il TS necessita di un ambiente
multiprogrammato, ed è un’aggiunta dovuta alla nascita delle applicazioni interattive;
2) MP e TS sono separate da 3 anni circa: negli anni ’60 significa che erano praticamente contemporanei.
Sistemi Operativi   Reti
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. In tutti i sistemi ci sono alcune cartelle privilegiate,
tra le quali:
   root folder: la cartella principale del FS;
   home folder: contiene i file personali di un utente (ogni utente ha la sua);
   system folder: contiene i file del sistema operativo;
   program folder: contiene programmi di utilità e middleware;
   trash folder: contiene i file cancellati (non ancora definitivamente).
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). Normalmente, l’unità C: è il disco di sistema. All’interno della partizione di sistema sono
presenti, tra le altre, le seguenti cartelle:
   Utenti (home folders): contiene tutti i profili degli utenti. Oltre al profilo dell’utente Administrator
    sono presenti le cartelle All Users e Default User: la prima contiene informazioni valide per tutti gli
    utenti, la seconda è una matrice per i nuovi profili utente. Ogni profilo utente è una cartella il cui nome
    coincide con lo username, e contiene queste sottocartelle:
     o Dati applicazioni: contiene alcune impostazioni specifiche dei programmi installati;
     o Impostazioni locali: contiene i dati come la cronologia e i file temporanei;
     o Desktop: file e le cartelle presenti nel desktop dell’utente;
     o Documenti, musica, video che l’utente ha salvato;
     o Preferiti: collegamenti ai siti web preferiti memorizzati dall’utente;
   Windows (system folder): contiene i principali file del sistema;
   Programmi (program folder): contiene varie cartelle con programmi e applicazioni installati nel
    sistema. È possibile installare applicazioni in altre cartelle, ma per ragioni organizzative è generalmente
    sconsigliato. Il nome originale di questa cartella è Program Files;
   Recycler (trash folder): cartella di sistema nascosta;
   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.
Nel sistema operativo Windows tutte le configurazioni (hardware, sistema, utente, dati) sono memorizzate
nel registry (registro di sistema). Anch’esso è una cartella, ed è modificabile con un programma chiamato
regedit (da usare solo se si sa quello che si sta facendo, o lasciarlo usare agli esperti).
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 tracks (A), geometrical sectors (B), sectors (C) e clusters (D) è
                           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. Una
                                track proiettata in altezza genera un cylinder..
La dimensione dei cluster influenza lo stato del file system. 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 overhead25 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 (tempo di servizio).
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.

25
     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 (FAT26): i cluster di un file sono organizzati
     come lista, memorizzando in ogni cluster il riferimento a quello
     successivo
    Allocazione indicizzata (prima HPFS27, poi NTFS28): 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.
    UDF29, 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).

                                                                             Collegamenti in un
                                                                              file frammentato

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
(un tempo 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.
L’immagine è tratta da http://www.maran.com/dictionary/c/cachedi.

26
   File Allocation Table
27
   High Performance File System
28
   New Technology File System
29
   Universal Disk Format
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
persona30. 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 RAID31 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 log32 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.

30
     I video porno di solito non rientrano nella categoria dei dati importanti.
31
   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.
32
   Captain’s log è il giornale di bordo in marina.
Puoi anche leggere