Informatica Approfondimenti - Liceo delle Scienze Applicate Classe seconda - Atletica Carpenedolo
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
10/09/2018 Liceo delle Scienze Applicate Informatica Classe seconda Approfondimenti Argomenti: Sistemi Operativi File System Reti di Computer Aspetti legali del Software
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
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
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.
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.
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.
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.
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.
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