[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 18.   Introduzione all'uso dell'elaboratore

Questo capitolo serve ad avere un'idea semplice di ciò che si intende essere un elaboratore. I concetti sono volutamente banalizzati.

18.1   Struttura

Per comprendere la struttura di un elaboratore si può immaginare il comportamento di un cuoco nella sua cucina. Il cuoco prepara delle pietanze, o piatti, che gli sono stati ordinati, basandosi sulle indicazioni delle ricette corrispondenti. Le ordinazioni vengono effettuate dai clienti che si rivolgono al cuoco perché hanno appetito.

Cuoco in cucina

microprocessore nell'elaboratore

Il cuoco, per poter lavorare, appoggia tutto quanto, ingredienti e ricetta, sul tavolo di lavoro. Su una parte del tavolo sono incise alcune istruzioni che al cuoco servono sempre; in particolare quelle che il cuoco deve eseguire ogni volta che la cucina viene aperta: pulire il tavolo, controllare tutti gli strumenti (pentole, tegami, coltelli, cucchiai ecc.) e ricevere le ordinazioni assieme alle ricette. Senza queste istruzioni di inizio, il cuoco non saprebbe nemmeno che deve accingersi a ricevere delle ordinazioni.

Come già descritto, il cuoco corrisponde alla CPU; il tavolo di lavoro del cuoco è la memoria centrale (o core) che si suddivide in ROM e RAM. La ROM è quella parte di memoria che non può essere alterata (nell'esempio del cuoco, si tratta delle istruzioni incise sul tavolo); la RAM è il resto della memoria che può essere alterata a piacimento dalla CPU (il resto del tavolo).

L'elaboratore è pertanto una macchina composta da una o più CPU che si avvalgono di una memoria centrale per trasformare l'input (i dati in ingresso) in output (i dati in uscita).

microprocessore e memoria centrale

L'elaboratore, per poter ricevere l'input e per poter produrre all'esterno l'output, ha bisogno di dispositivi: la tastiera e il mouse sono dispositivi di solo input, lo schermo e la stampante sono in grado soltanto di emettere output. Le unità di memorizzazione di massa sono dispositivi che possono operare sia in input, sia in output.

Il cuoco si avvale di dispense per conservare derrate alimentari (pietanze completate, ingredienti, prodotti intermedi) e anche ricette. Ciò perché il tavolo di lavoro ha una dimensione limitata e non si può lasciare nulla sul tavolo quando la cucina viene chiusa, altrimenti si perde tutto quello che c'è sopra (a eccezione di ciò che vi è stato inciso).

Le unità di memorizzazione di massa sono paragonabili alle dispense del cuoco e servono per immagazzinare dati elaborati completamente, dati da elaborare, dati già elaborati parzialmente e i programmi.

Diverse cucine possono essere collegate tra loro in modo da poter condividere o trasmettere ricette, ingredienti,...

Le interfacce di rete e i cavi che le collegano sono il mezzo fisico per connettere insieme diversi elaboratori, allo scopo di poter condividere dati e servizi collegati a essi, ma anche per permettere la comunicazione tra gli utenti dei vari elaboratori connessi.

18.1.1   Sistema operativo

Il sistema operativo di un elaboratore è il programma più importante. È quello che viene attivato al momento dell'accensione dell'elaboratore; esso esegue gli altri programmi. Sarebbe come se il cuoco eseguisse una procedura (il sistema operativo) che gli dà le istruzioni per poter eseguire le ricette con ordine.

Il sistema operativo determina quindi il comportamento dell'elaboratore. Cambiare sistema operativo in un elaboratore è come cambiare il direttore di un ufficio: a seconda della sua professionalità e delle sue doti personali, l'ufficio può funzionare in modo più o meno efficiente rispetto a prima e, pur se non cambia niente altro, per gli impiegati potrebbe tradursi in un modo di lavorare completamente nuovo.

Ci sono sicuramente affinità tra un sistema operativo e l'altro, ma questo vuol sempre dire una marea di dettagli differenti e soprattutto l'impossibilità di fare funzionare lo stesso programma su due sistemi operativi differenti, a meno che ciò sia stato previsto e voluto da chi costruisce i sistemi operativi stessi.

18.1.2   Dispositivi

Come già accennato, i dispositivi sono qualcosa che è separato dall'elaboratore inteso come l'insieme di CPU e memoria centrale. A seconda del tipo e della loro collocazione, questi possono essere interni o periferici, ma tale tipo di distinzione è quasi scomparso nel linguaggio normale, tanto che molti chiamano ancora «periferiche» tutti i dispositivi. Vale la pena di distinguere fra tre tipi di dispositivi fondamentali:

I dispositivi di memorizzazione sono qualunque cosa che sia in grado di conservare dati anche dopo lo spegnimento della macchina. Il supporto di memorizzazione vero e proprio potrebbe essere parte integrante del dispositivo stesso oppure essere rimovibile.

I supporti di memorizzazione possono essere di qualunque tipo, anche se attualmente si è abituati ad avere a che fare prevalentemente con dischi (magnetici, ottici o magneto-ottici) e memorie solide. In passato si è usato di tutto e il primo tipo di supporto di memorizzazione sono state le schede di cartoncino perforate.

Anche i dispositivi per l'interazione con l'utente possono avere qualunque forma possibile e immaginabile. Non è il caso di limitarsi all'idea che debba trattarsi solo di tastiera, schermo e mouse. Soprattutto non è il caso di supporre che un elaboratore possa avere solo uno schermo, oppure che possa avere una sola stazione di lavoro.

Le interfacce di rete sono i dispositivi che consentono la connessione tra diversi elaboratori in modo da permettere la condivisione di risorse e la comunicazione in generale. Anche in questo caso, non si può semplificare e pensare che possa trattarsi esclusivamente di schede di rete: qualunque «porta» verso l'esterno può diventare un'interfaccia di rete.

18.2   Dispositivi per l'interazione tra l'utente e la macchina

Se si lascia da parte il periodo delle schede perforate, si può dire che il primo tipo di strumento per l'interazione tra utente e macchina sia stato la telescrivente: una sorta di macchina da scrivere in grado di ricevere input dalla tastiera e di emettere output attraverso la stampante. In questo modo, l'input umano (da tastiera) era fatto di righe di testo terminate da un codice per il ritorno a capo (interruzione di riga, o new-line) e nello stesso modo era composto l'output che appariva su carta.

Con l'introduzione della telescrivente si sono sviluppati i sistemi operativi interattivi, che consentono l'uso di programmi che interagiscono con l'utente. Questo tipo di funzionamento si contrappone a quello in cui è necessario predisporre prima tutti i dati necessari e solo alla fine dell'elaborazione si ottiene un risultato (qualunque esso sia, comprese le segnalazioni di errore), tipico dei sistemi a schede perforate.

La telescrivente era (ed è) un terminale dell'elaboratore. Ormai, la stampante della telescrivente è stata sostituita da uno schermo, che però spesso si comporta nello stesso modo: emette un flusso di testo dal basso verso l'alto, così come scorre la carta a modulo continuo attraverso una stampante. In questa situazione, la stampante ha preso un suo ruolo indipendente dal terminale originale e serve come mezzo di emissione di output finale, piuttosto che come mezzo per l'interazione.

Il terminale, composto da tastiera e schermo, o comunque da un'unità per ricevere l'input e un'altra per emettere l'output, viene visto normalmente come una cosa sola. Quando si tratta di quello principale, si parla in particolare di console.

18.2.1   Tastiera

La tastiera è una tavoletta composta da un insieme di tasti, ognuno dei quali genera un impulso particolare. È l'elaboratore che si occupa di interpretare e tradurre gli impulsi della tastiera. Questo sistema permette poi di attribuire ai tasti la funzione che si vuole.

Questo significa anche che non esiste uno standard generale di quello che una tastiera deve avere. Di solito si hanno a disposizione tasti che permettono di scrivere le lettere dell'alfabeto inglese, i simboli di punteggiatura consueti e i numeri; tutto il resto è opzionale. Tanto più opzionali sono i tasti a cui si attribuiscono solitamente funzioni particolari. Questa considerazione è importante soprattutto per chi non vuole rimanere relegato a una particolare architettura dell'elaboratore.

18.2.2   Schermo

Il terminale più semplice è composto da una tastiera e uno schermo, ma questa non è l'unica possibilità. Infatti, ci possono essere terminali con più schermi, ognuno per un diverso tipo di output.

Nel tempo, l'uso dello schermo si è evoluto, dalla semplice emissione sequenziale di output come emulazione di una stampante, a una sorta di guida di inserimento di dati attraverso modelli-tipo. Le maschere video sono questi modelli-tipo attraverso cui l'input della tastiera viene guidato da un campo all'altro. L'ultima fase dell'evoluzione degli schermi è quella grafica, nella quale si inserisce anche l'uso di un dispositivo di puntamento, solitamente il mouse, come un'estensione della tastiera.

18.2.3   Stampante

Le stampanti tradizionali sono solo in grado di emettere un flusso di testo, come avveniva con le telescriventi. Più di recente, con l'introduzione delle stampanti ad aghi, si è aggiunta la possibilità di comandare direttamente gli aghi in modo da ottenere una stampa grafica.

Ma quando la stampa diventa grafica, entrano in gioco le caratteristiche particolari della stampante. Per questo, l'ultima fase evolutiva della stampa è stata l'introduzione dei linguaggi di stampa, tra cui il più importante è stato ed è PostScript, come mezzo di definizione della stampa in modo indipendente dalle caratteristiche della stampante stessa. Così, l'output generato e inviato dalle stampanti può essere costruito sempre nello stesso modo, lasciando alle stampanti l'onere di trasformarlo in base alle loro caratteristiche e capacità.

18.3   Dispositivi di memorizzazione

I dispositivi di memorizzazione sono fondamentalmente di due tipi: ad accesso sequenziale e ad accesso diretto. Nel primo caso, i dati possono essere memorizzati e riletti solo in modo sequenziale, senza la possibilità di accedere rapidamente a un punto desiderato, come con i nastri magnetici. Nel secondo caso, i dati vengono registrati e riletti accedendovi direttamente, come avviene con i dischi e le memorie solide.

I dispositivi di memorizzazione ad accesso diretto, per poter gestire effettivamente questa loro caratteristica, richiedono la presenza di un sistema che organizzi lo spazio disponibile al loro interno. Questa organizzazione si chiama file system.

18.3.1   File

In prima approssimazione, il file è un'unità di informazioni che si compone in pratica di una sequenza di codici. I dispositivi di memorizzazione ad accesso diretto, muniti di file system, consentono la gestione di diversi file, mentre quelli ad accesso sequenziale permettono la gestione di un solo file su tutta la loro dimensione.

Quando il file viene visto come una semplice sequenza di codici corrispondenti a testo normale, lo si può immaginare come un testo dattiloscritto: la sequenza di caratteri viene interrotta alla fine di ogni riga da un codice invisibile che fa riprendere il testo all'inizio di una riga successiva. Questo codice di interruzione di riga, spesso identificato con il termine new-line, cambia a seconda della piattaforma utilizzata.

18.3.2   File system

Il file system è il sistema che organizza i file all'interno dei dispositivi di memorizzazione ad accesso diretto. Questo significa che tutto ciò che è contenuto in un file system è in forma di file.

Il modo più semplice per immaginare un file system è quello di un elenco di nomi di file abbinati all'indicazione della posizione in cui questi possono essere trovati. Questo sistema elementare può forse essere utile in presenza di dispositivi di memorizzazione particolarmente piccoli dal punto di vista della loro capacità.

Generalmente, si utilizzano elenchi strutturati, per cui da un elenco si viene rimandati a un altro elenco più dettagliato che può contenere l'indicazione di ciò che si cerca o il rinvio a un altro elenco ancora. Questi elenchi sono chiamati directory (o cartelle in alcuni sistemi) e sono file con questa funzione speciale.

Per questo motivo, la struttura di un file system assume quasi sempre una forma a stella (o ad albero), nella quale c'è un'origine da cui si diramano tutti i file. Le diramazioni possono svilupparsi in modo più o meno esteso, a seconda delle esigenze.

Data l'esistenza di questo tipo di organizzazione, si utilizza una notazione particolare per indicare un file all'interno di un file system. Precisamente si rappresenta il percorso necessario a raggiungerlo:

Per esempio, /uno/due/tre rappresenta il file (o la directory) tre che discende da due, che discende da uno, che a sua volta discende dall'origine.(1)

Il tipo di file system determina le regole a cui devono sottostare i nomi dei file. Per esempio, ci possono essere situazioni in cui sono consentiti simboli speciali, come il carattere spazio, e altre in cui questo non è possibile. Nello stesso modo, la lunghezza massima dei nomi è sottoposta a un limite.

Oltre a questo, il file system permette di annotare delle informazioni accessorie che servono a qualificare i file, per esempio per poter distinguere tra directory e file contenenti dati normali.

Tradizionalmente si utilizzano due nomi convenzionali per poter fare riferimento alla directory in cui ci si trova e a quella precedente (nel senso di quella che la contiene):

18.4   Sistema operativo

Il sistema operativo è ciò che regola il funzionamento di tutto l'insieme di queste cose, secondo quelle che sono definite politiche di gestione, creando un'astrazione della macchina reale.

L'astrazione che viene messa in atto dal sistema operativo crea quella che si può definire macchina virtuale, la quale, se il sistema operativo è predisposto per farlo, può disporre di una memoria virtuale maggiore rispetto alla memoria centrale reale e può gestire più processi elaborativi in modo apparentemente simultaneo, anche se nella realtà il microprocessore è unico.

La gestione simultanea di più processi elaborativi richiede al sistema operativo la capacità di gestire la memoria (virtuale) in modo da isolare le aree concesse a ognuno di loro; in pratica, la memoria usata da un processo non deve interferire con quella di un altro (a parte i casi in cui la condivisione di un'area di memoria avviene volutamente per scambiare delle informazioni). Un sistema operativo che consente l'esecuzione di un solo programma alla volta viene detto monoprogrammato o uniprogrammato, mentre un sistema in grado di mettere in funzione più programmi è multiprogrammato.

L'esecuzione di più programmi simultaneamente con un microprocessore singolo avviene solo in apparenza, secondo l'astrazione creata dal sistema operativo, perché nella realtà si tratta dell'esecuzione sequenziale di piccole porzioni di ogni programma, a turno. Quando una risorsa viene impiegata secondo dei turni per porzioni di tempo ben individuate, questo fatto viene definito in inglese come time sharing, dove le porzioni di tempo elementari sono definite come time slice.

È molto importante che un sistema operativo funzioni in multiprogrammazione, perché nell'elaboratore fisico si creano facilmente dei colli di bottiglia che costringono il microprocessore a rimanere in attesa di eventi esterni alla sua responsabilità diretta. Pertanto, con la multiprogrammazione, i processi elaborativi che utilizzano in pratica porzioni fisiche non impegnate possono ancora sfruttare il microprocessore che altrimenti resterebbe bloccato inutilmente.

In un sistema operativo multiprogrammato, i processi elaborativi devono avere una priorità di esecuzione, che consenta al sistema di fare delle preferenze nell'assegnare loro le porzioni di tempo (time slice) del microprocessore. Le priorità di esecuzione dei processi elaborativi servono principalmente a garantire che il sistema nel suo complesso funzioni correttamente, anche quanto le richieste da parte dei programmi raggiungono livelli insostenibili.

Un sistema operativo multiprogrammato può, eventualmente, essere predisposto per la gestione di più utenze simultaneamente. Si parla in questi casi si sistemi operativi multiutente, mentre nel caso contrario i sistemi sono monoutente. Un sistema operativo multiutente deve disporre di meccanismi in grado di distinguere gli utenti e di assegnare loro privilegi differenti.

Tra i componenti che costituiscono un sistema operativo comune, sono molto importanti:

18.4.1   Kernel

Il kernel (nocciolo) è il nucleo del sistema operativo. Idealmente, è una sorta di astrazione nei confronti delle caratteristiche fisiche della macchina ed è il livello a cui i programmi si rivolgono per qualunque operazione. Ciò significa, per esempio, che i programmi non devono (non dovrebbero) accedere direttamente ai dispositivi fisici, ma possono utilizzare dispositivi logici definiti dal kernel. Questa è la base su cui si fonda la portabilità di un sistema operativo su piattaforme fisiche differenti.

Figura 18.4. Il kernel avvolge idealmente l'elaboratore e i suoi dispositivi fisici, ovvero tutto l'hardware, occupandosi di interagire con i programmi che ignorano l'elaboratore fisico.

hardware e kernel

La portabilità è quindi la possibilità di trasferire dei programmi su piattaforme differenti, ciò attuato normalmente in presenza di kernel che forniscono funzionalità compatibili.

Naturalmente esistono sistemi operativi che non forniscono kernel tanto sofisticati e lasciano ai programmi l'onere di accedere direttamente alle unità fisiche dell'elaboratore. Si tratta però di sistemi inferiori, anche se la loro nascita è derivata da necessità evidenti causate dalle limitazioni di risorse degli elaboratori per i quali venivano progettati.

18.4.2   Shell

Il kernel offre i suoi servizi e l'accesso ai dispositivi attraverso chiamate di sistema. Però, mentre i programmi accedono direttamente a questi, perché l'utente possa accedere ai servizi del sistema occorre un programma particolare che si ponga come intermediario tra l'utente (attraverso il terminale) e il kernel. Questo tipo di programma è detto shell. Come suggerisce il nome (conchiglia), si tratta di qualcosa che avvolge il kernel, come se questo fosse una perla.

Figura 18.5. La shell è il programma che consente all'utente di accedere al sistema. I terminali attraverso cui si interagisce con la shell sono comunque parte dell'hardware controllato dal kernel.

shell

Un programma shell può essere qualunque cosa, purché in grado di permettere all'utente di avviare e possibilmente di controllare i programmi. La forma più semplice, che è anche la più vecchia, è la riga di comando presentata da un invito, o prompt. Questo modo di interagire ha il vantaggio di poter essere utilizzato in qualunque tipo di terminale, compresa la telescrivente. Una shell, nella sua forma più evoluta, può arrivare a un sistema grafico di icone o di oggetti grafici simili, oppure ancora a un sistema di riconoscimento di comandi in forma vocale.

18.4.3   Programmi di servizio

I programmi di servizio sono un insieme di piccole applicazioni utili per la gestione del sistema operativo. Teoricamente, tutte le funzionalità amministrative per la gestione del sistema operativo potrebbero essere incorporate in una shell; in pratica, di solito questo non si fa. Dal momento che le shell tradizionali incorporano alcuni comandi di uso frequente, spesso si perde la cognizione della differenza che c'è tra le funzionalità fornite dalla shell e i programmi di servizio.

18.5   Programmi applicativi

L'elaboratore non può essere una macchina fine a se stessa, ma deve servire a qualcosa, al limite anche solo a giocare. È importante ricordare che tutto nasce da un bisogno da soddisfare. I programmi applicativi sono quelli che (finalmente) servono a soddisfare i bisogni e quindi rappresentano l'unica motivazione per l'esistenza degli elaboratori.

18.6   Unità di misura

Nell'ambito informatico ha preso piede un'abitudine poco scientifica di utilizzare unità di misura e prefissi moltiplicatori che non sono conformi allo standard internazionale, definito dal SI, ovvero il Sistema internazionale di unità (BIPM: Bureau international des poids et mesures, <http://www.bipm.fr/>).

È importante che chi si avvicina all'uso dell'elaboratore non faccia confusione: i prefissi moltiplicatori sono quelli che sono riassunti nella tabella 18.6.

I moltiplicatori riferiti alle unità di misura hanno un significato e un valore ben preciso. È un errore l'uso dei termini «kilo», «mega», «giga» e «tera», per rappresentare moltiplicatori pari a 210, 220, 230 e 240, come si fa abitualmente per misurare grandezze riferite a bit o a byte.

Tabella 18.6. Prefissi del Sistema internazionale di unità (SI).

Nome Simbolo Valore Note
yotta Y 1024
zetta Z 1021
exa E 1018
peta P 1015
tera T 1012
giga G 109
mega M 106
kilo k 103 Lettera «k» minuscola.
hecto, etto h 102
deca da 10
1 Nessun moltiplicatore.
deci d 10-1
centi c 10-2
milli m 10-3
micro µ 10-6
nano n 10-9
pico p 10-12
femto f 10-15
atto a 10-18
zepto z 10-21
yocto y 10-24

Lo standard IEC 60027-2 introduce un gruppo nuovo di prefissi da utilizzare in alternativa a quelli del SI, per risolvere il problema dell'ambiguità causata dall'uso improprio dei prefissi del SI in ambito informatico. A questo proposito, una discussione particolareggiata su questo argomento si può trovare nel documento Standardized units for use in information technology, di Markus Kuhn, <http://www.cl.cam.ac.uk/~mgk25/information-units.txt>. La tabella 18.7 riporta l'elenco di questi prefissi speciali.

Tabella 18.7. Prefissi IEC 60027-2.

Origine Nome Simbolo Valore Note
kilobinary kibi Ki 210 Si usa la «K» maiuscola.
megabinary mebi Mi 220
gigabinary gibi Gi 230
terabinary tebi Ti 240
petabinary pebi Pi 250
exabinary exbi Ei 260
zettabinary zebi Zi 270
yottabinary yobi Yi 280

La sezione 423.5 contiene una descrizione più dettagliata a proposito del modo corretto di rappresentare le grandezze e le unità di misura.

18.7   Riferimenti


1) Il tipo di barra obliqua che si utilizza dipende dal sistema operativo. La barra obliqua normale corrisponde al sistema tradizionale.


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome introduzione_all_x0027_uso_dell_x0027_elaboratore.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory