Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
di Reggio Calabria
Facolt di Ingegneria
------------------
Premessa
Ad esclusivo supporto delle lezioni svolte nel corso di Fondamenti dInformatica I sono state scritte
queste note di elementi di informatica di base con lobiettivo di fornire ai corsi di laurea che non
prevedono la possibilit di approfondire tematiche legate allhardware, alla telematica ed ai
sistemi operativi, un livello di conoscenza di base relativo a queste tematiche.
Per la complessit dellargomento e le necessarie semplificazioni introdotte, queste note intendono
essere unicamente un supporto alle lezioni svolte sullargomento, senza avere la pretesa di
surrogarle.
Per chi fosse interessato ad approfondire queste tematiche potr far riferimento ai testi consigliati
nel programma del corso.
Lautore
Indice
Premessa........................................................................................................................................2
Indice.............................................................................................................................................3
1. Introduzione ..............................................................................................................................4
2. Tassonomia degli Elaboratori Elettronici .................................................................................4
3. Rappresentazione Binaria .........................................................................................................5
4. Hardware e Software.................................................................................................................5
5. Schema di Von Neumann .........................................................................................................6
6. Lorganizzazione dei sistemi di elaborazione...........................................................................7
7. Bus ............................................................................................................................................8
8. La memoria ..............................................................................................................................9
9. Memorie secondarie..................................................................................................................10
10. I terminali................................................................................................................................11
11. Reti di computer......................................................................................................................12
12. Protocolli e livelli....................................................................................................................13
13. Trasmissione del segnale ........................................................................................................14
14. Mezzi trasmessivi....................................................................................................................15
15. Sistema telefonico ...................................................................................................................15
16. Collegamento a Internet ..........................................................................................................15
17. Il Sistema Operativo................................................................................................................15
18. Struttura dei S.O......................................................................................................................16
19. I processi .................................................................................................................................16
20. Lo scheduling dei processi......................................................................................................18
21. Gestione della memoria ..........................................................................................................19
22. Memoria virtuale.....................................................................................................................20
23. La segmentazione....................................................................................................................22
24. I File System ...........................................................................................................................22
Bibliografia ...................................................................................................................................25
1. Introduzione
Lidea di costruire una macchina che eseguisse automaticamente dei calcoli matematici, sollevando
luomo da questincombenza, non unidea recente.
La prima realizzazione degna di nota pu essere fatta risalire a Blaise Pascal (1642), con la
costruzione di una calcolatrice che eseguiva esclusivamente le operazioni di somma e sottrazione.
Successivamente, si ricordano la macchina per effettuare le quattro operazioni di Von Leibniz
(1646-1716), la macchina analitica di Babbage (1792-1871), seguite poi da molte altre. Tutte queste
macchine calcolatrici erano esclusivamente meccaniche e ovviamente limitate.
Linformatica moderna, come oggi la si conosce, resa possibile dallelettronica e dalla possibilit
che questa offre di implementare efficacemente ed efficientemente la logica binaria. Da sottolineare
che la struttura logica del calcolatore moderno stata ipotizzata prima della nascita del primo
componente elettronico.
2. Tassonomia degli Elaboratori Elettronici
Supercalcolatori
Mainframe
Minicalcolatori
Workstation
Personal computer
Network computer
Sistemi diskless poco potenti, si appoggiano alla rete per ottenere le risorse di
cui sono privi. Sono la versione moderna dei terminali stupidi, delegano ad
un mainframe remoto tutte le capacit di archiviazione e di elaborazione.
3. Rappresentazione Binaria
Ogni informazione allinterno del computer trattata come una sequenza di bit (BIT da BInary
digiT). Un bit consente di rappresentare in maniera non ambigua due sole informazioni,
convenzionalmente indicate dalle cifre 0 e 1.
Un alfabeto binario, composto solo da due simboli, un alfabeto completo in quanto per suo tramite
possibile rappresentare qualsiasi tipo dinformazione mediante sequenze finite dei due simboli 0
ed 1. Il passaggio da un alfabeto completo ad un altro modifica esclusivamente la rappresentazione
dellinformazione e non influisce sulla capacit di rappresentarla.
Quanto detto vale anche per laritmetica dove la nostra usuale base 10, data dallutilizzo di 10 cifre
(dallo 0 al 9), pu essere sostituita da altre basi e in particolare per quanto ci riguarda da quella in
base 2. Ad esempio, il numero 9 pu essere rappresentato in varie basi come: 910, 10012, 214, 118,
916, ma indica sempre 9 unit.
Esempio:
rappresentazione in base 10:
1966=1*103+9*102+6*101+6*100=1000+900+60+6=1966
10111=1*24+0*23+1*22+1*21+1*20=16+0+4+2+1=23
23/211/25/22/21/2
1
10111
Tb
1
-----------
Gb
Mb
Kb
byte
bit
1024 1.048.576 1.073.741.824 1.099.511.627.776 8.796.093.022.208
1
1024
1.048.576
1.073.741.824
8.589.934.592
--1
1024
1.048.576
8.388.608
----1
1024
8192
------1
8
--------1
4. Hardware e Software
Lhardware costituito dai circuiti elettronici, la memoria, i dispositivi di input ed output, etc.,
mentre il software costituito dagli algoritmi e dalla loro rappresentazione in forma utilizzabile dal
computer. Esiste anche il firmware che una via di mezzo tra software ed hardware, poich
implementa del software in hardware (built-in) per motivi di efficienza. Hardware e software sono
logicamente equivalenti. Chi programma usa le istruzione software come se fossero realizzate in
hardware.
Lelaboratore a livello fisico differisce da quello che conosciamo e a cui chiediamo di effettuare
determinate operazioni tramite appositi comandi. Potremmo asserire che questultimo una
macchina virtuale che realmente non esiste. Infatti, ci che realmente esiste un insieme di
componenti elettronici che effettuano o non effettuano determinate operazioni in relazione alla
presenza o meno di corrente che li attraversi in un determinato istante.
5
Questa macchina detta macchina di livello 0 o della logica digitale ed capace di eseguire un
certo insieme di istruzioni dette microprogramma. Unistruzione a questo livello una sequenza di
bit, in cui ogni bit ha un determinato significato (ricordando che al valore 1 in genere corrisponde la
presenza di una tensione positiva di 35 V e al valore 0 una tensione di 0 V) che interpretato
elettricamente. Linsieme di istruzioni a questo livello di base il pi semplice possibile per
consentire di avere lhardware il pi semplice possibile.
A livello di microprogramma linsieme delle istruzioni, ossia il linguaggio disponibile, presenta tra
le varie macchine esistenti pi similitudini che differenze (vi sono circa 40100 istruzioni al
massimo).
La programmazione a questo livello molto complicata e difficile. Per semplificarla conveniente
pensare ad una o pi macchine dotate di un linguaggio meno difficile collegate in cascata dalla pi
semplice fino alla pi complessa. Le istruzioni espresse in questo linguaggio vengono poi
interpretate o tradotte per la macchina di livello inferiore.
Linterpretazione si ha quando la traduzione da un livello allaltro viene effettuata al momento
dellesecuzione, se invece viene effettuata in un istante precedente si ha la compilazione che
svolta da programmi chiamati compilatori.
Per agevolare gli utenti si costruita una gerarchia di macchine virtuali e di relativi linguaggi la cui
struttura assicura che un programma scritto per la macchina Mn sar eseguito dalla macchina M0.
Livello 5
Livello 4
Livello 3
Livello 2
Livello 1
Livello 0
ALU
Unit di
controllo
ACCUM.
Input
Output
Registri di memoria
Registri di input
dellALU
ALU
Esegue un set di
operazioni semplici
Registri di output
dellALU
F(A,B)
Allinterno della CPU contenuta lALU (Arithmetic Logic Unit) che esegue operazioni di tipo
aritmetico-logico quali somme, confronti, etc.. La CPU contiene anche una certa quantit di
memoria veloce (registri) per immagazzinare i risultati temporanei e le informazioni di controllo.
Tra i registri pi importanti vi sono: il contatore di programma Program Counter (PC), che indica la
prossima istruzione da eseguire; il registro delle istruzioni (IR), che contiene via via le istruzioni da
eseguire; il registro di stato (PS), che descrive lo stato corrente dellesecuzione e segnala eventuali
errori; il registro di indirizzo di memoria (RIM), che contiene lindirizzo della cella di memoria da
cui leggere o in cui scrivere uninformazione; il registro dati di memoria (RDM), che contiene
linformazione letta o quella da scrivere in una determinata cella di memoria.
7
Si dice che un elaboratore dotato di una pipeline di elaborazione, quando in grado di operare su
pi istruzioni contemporaneamente. In breve, se si ritorna alla sequenza di esecuzione di una CPU,
si pu notare che la CPU esegue effettivamente listruzione solo al passo 6, per tutto il resto del
tempo in attesa che vengano svolti gli altri necessari passi. Se si dota lelaboratore di una struttura
a pi livelli, la pipeline, in cui ogni livello opera su di unistruzione diversa si pu immaginare che
mentre la CPU stia eseguendo unistruzione, contemporaneamente il livello della pipeline pi
vicino alla CPU prelevi gi i dati nei registri interni della CPU relativi allistruzione successiva a
quella corrente, il livello precedente nello stesso istante prelever i dati in memoria relativamente
allistruzione ancora successiva e cos via. Il tutto opera come una catena di montaggio in maniera
che la CPU abbia sempre unistruzione gi pronta da eseguire, eliminando cos i tempi morti nel suo
utilizzo.
Gli elaboratori si possono dividere in tre categorie:
1. SISD Flusso di istruzioni unico. Flusso di dati unico
2. SIMD Flusso di istruzioni unico. Flusso di dati multiplo (array processor o comp. vettoriali)
3. MIMD Flusso di istruzioni multiplo. Flusso di dati multiplo (la memoria il collo di bottiglia)
La categoria MSMD - flusso di istruzioni unico, flusso di dati multiplo solo teorica.
7. Bus
Il bus in un elaboratore non altro che un canale di comunicazione tra i vari componenti/dispositivi
(CPU, memoria, dispositivi di Input/Output, etc.). Nei personal computer presente un solo bus e
tutti i componenti/dispositivi sono in concorrenza per usarlo, ovviamente luso esclusivo e finch
un componente/dispositivo usa il bus ne preclude luso a tutti gli altri componenti/dispositivi.
Si pu immaginare il bus come un fascio di fili elettrici che collega tutti i dispositivi.
Nei mainframe sono presenti pi bus specializzati, in genere sono tre: uno per laccesso diretto alla
memoria da parte della CPU; uno per laccesso diretto da parte dei dispositivi di Input/Output e uno
di collegamento tra tutti i dispositivi.
Ogni dispositivo costituito da due parti: una che contiene lelettronica di controllo (controllore) ed
una che il dispositivo vero e proprio. Il compito del controllore controllare il suo dispositivo e
consentire laccesso al canale di I/O. Un controllore che legge/scrive in memoria attraverso il bus
senza lintervento della CPU, si dice che esegue un accesso diretto alla memoria (DMA). In caso di
accessi contemporanei, vi sono arbitri del bus o meccanismi basati su una priorit assegnata ai vari
dispositivi.
Generalmente i dispositivi hanno la priorit sulla CPU, si dice in tal caso che si ha un furto di cicli
ai danni della CPU (p.es., i dati richiesti ad un disco rigido sono disponibili solo quando questi si
presentano sotto la testina di lettura; se esiste un solo bus e in quel momento usato dalla CPU, non
essendoci in genere la possibilit di attendere che la CPU finisca ci in cui impegnata, si obbliga
la CPU a sospendere temporaneamente la sua attivit, affinch si possa lasciare luso del bus al
dispositivo per trasferire i dati in memoria).
Il bus risiede sulla piastra madre; se la piastra madre non ha componenti attivi, come nei personal
computer basati su processori Intel compatibili, ma supporta solo il bus e della componentistica
minore, come nei personal computer basati su processori Motorola (Apple), la scheda madre prende
il nome di backplane.
Esistono pi tipi di bus ed ognuno ha un proprio standard di comunicazione e funzionamento.
Usualmente ogni standard legato ad una particolare famiglia di processori.
8. La memoria
Lelemento base della memoria il bit (che come detto pu rappresentare solo due diverse
informazioni, convenzionalmente contraddistinte dai valori 0 e 1), essendo tale scelta coerente con
la capacit dellelettronica di distinguere efficacemente, cio non ambiguamente, due stati (corrente
e assenza di corrente).
La memoria costituita da un insieme di celle, ognuna capace di immagazzinare un elemento di
informazione. La cella di memoria lunit indirizzabile pi piccola e si misura in byte. Un byte
formato da 8 bit. Ogni elaboratore ha la sua parola caratteristica (word) che rappresentata dal
numero di byte che possono essere letti/scritti/usati dalla CPU con un unico accesso alla memoria;
pi grande la parola e pi potente lelaboratore.
Il numero della cella di memoria costituisce il suo indirizzo. Le celle sono numerate in sequenza e
per accedere ad una cella di memoria necessario specificare il suo indirizzo. E possibile
indirizzare ogni cella direttamente (Random Access Memory RAM).
Ogni elaboratore ha un proprio spazio di indirizzamento caratteristico, ossia lintervallo in cui
possibile specificare un indirizzo.
Allinterno della parola i bit possono essere ordinati numerandoli da sinistra verso destra (p.es.
0123), detto anche a finale grande, o viceversa (p.es. 3210), detto anche a finale piccolo (i termini
finale grande e finale piccolo sono ispirati al libro I viaggi di Gulliver).
Una prima distinzione tra le memorie si ha tra memoria principale e memoria secondaria. La prima
volatile, ossia quando si spegne lelaboratore il contenuto si perde; la seconda permanente. La
memoria principale pi costosa e pi veloce, la seconda meno costosa, ma pi lenta.
In linea teorica maggiore la quantit di memoria principale (veloce), migliori saranno le
prestazioni dellelaboratore, poich acceder un numero minore di volte alla memoria secondaria,
che pi lenta, per richiedere informazioni.
Per migliorare ulteriormente le prestazioni si affianca unulteriore piccola e velocissima memoria,
detta cache, dove memorizzare i dati di pi recente accesso; la cache spesso organizzata in due
livelli detti L1 e L2, la prima inglobata sulla stessa basetta di silicio della CPU e perci alla sua
stessa velocit, la seconda posta sulla piastra base e funzionante alla velocit del bus. La prima non
si pu ampliare, la seconda spesso si pu ampliare, basta ricordare che la memoria pi veloce pi
costa.
La cache non rallenta lesecuzione solo a patto che linformazione da prelevare sia presente nella
cache; se cosi non fosse, per prelevare linformazione dalla cache la CPU dovrebbe aspettare che la
stessa vi venga trasferita dalla memoria principale, mentre nellipotesi di assenza della memoria
cache, la CPU potrebbe prelevare linformazione direttamente dalla memoria principale. Perci, per
mantenere lefficienza deve risultare che il pi delle volte linformazione sia gi presente nella
memoria cache, altrimenti questa rappresenterebbe uno strato intermedio sostanzialmente dannoso.
Per fortuna, se durante lesecuzione di un programma si osservasse la sequenza degli accessi in
memoria, si costaterebbe che la maggior parte delle volte ad ogni accesso in memoria richiesto un
indirizzo situato a poca distanza da quello precedentemente richiesto. Pertanto statisticamente
parlando risulta che se uninformazione stata trovata nella memoria cache, vi un alta probabilit
che linformazione richiesta successivamente sia vicina e quindi gi nella cache. Quando ci non
si verifica bisogna scaricare la cache e caricare una nuova porzione di memoria, in questo caso si ha
una penalizzazione in termini di tempo (vedi anche paginazione).
La memoria principale del tipo RAM (Random Access Memory), ossia possibile accedere
(indirizzare) ogni locazione di memoria; infatti, quando si richiede la lettura/scrittura di una
particolare locazione di memoria si asserisce (richiede) loperazione di lettura/scrittura, si pone sul
bus indirizzi la locazione della cella di memoria interessata e la memoria, dopo un tempo
9
sufficiente, risponde ponendo sul bus dati linformazione contenuta in quellindirizzo o prelevando
dal bus dati linformazione da scrivere in quellindirizzo.
Negli elaboratori presente anche un altro tipo di memoria quella ROM (Read Only Memoria) o
memoria a sola lettura ed usata allavvio per fornire le istruzioni di inizializzazione alla CPU, ci
poich allavvio la memoria principale vuota. In particolare, questa ROM detta BIOS (Basic
Input/Output System) ed ha il compito di identificare il processore installato, la quantit e il
funzionamento della memoria Ram, individuare le periferiche, leggere la traccia zero del disco fisso
dov lindirizzo, sempre sul disco fisso, dellinizio del Sistema Operativo, etc..
9. Memorie secondarie
Nastri magnetici
Dischi fissi
costituito da uno o pi piattelli metallici, sulle cui facce cui viene applicato
per sublimazione uno strato di ossidi magnetici. Per ogni faccia vi una o pi
testine magnetiche che leggono le informazioni. Tutte le testine magnetiche
sono solidali ad un unico braccio (arm). La velocit di rotazione va dai 5400
giri/minuto in su ed per tale motivo che le testine non toccano la superficie,
come nei nastri magnetici o nei floppy disk, ma galleggiano sfruttando un
effetto aerodinamico provocato dallalta velocit di rotazione dei piattelli. Le
tracce di un disco fisso sono concentriche e sono divise in settori, ogni disco
ha lo stesso numero di tracce, le tracce omologhe sui piattelli formano i
cosiddetti cilindri. Ogni settore formato da pi blocchi e le operazioni di
lettura e scrittura avvengono solo per blocchi. Quando si richiede
uninformazione, lelettronica (controller) individua la traccia e il settore in
cui depositata linformazione, dopodich il braccio con la testina si sposta
sulla traccia in questione (tempo di spostamento) e aspetta che il settore che
contiene linformazione cercata passi sotto la testina (tempo di latenza, che
dipende dalla velocit di rotazione e dal posizionamento della traccia). Alcuni
dischi rigidi per ottimizzare le prestazioni dispongono di una memoria
temporanea dove immagazzinare velocemente le informazioni. Tutte le
informazioni sulla dislocazione dei dati sono contenute nella FAT (File
Allocation Table) Laccesso ai dati casuale.
Floppy disk
CD/DVD
10. I terminali
Schermo
Tastiera
Mouse
Porte
Modem
11
Stampanti
TCP/IP
Application
___________
Transport
Internet
Host to Network
___________
13
ISO/OSI
Livello Fisico
Livello Network
Livello Transport
Livello Session
Livello Presentation si occupa della sintassi e della semantica dei dati da trasferire, tipo convertire
i dati in un formato accettato dal destinatario;
Livello Application
dove risiedono tutti i protocolli necessari per fornire i vari servizi agli utenti.
Internet
Transport
Livello Application
dove risiedono tutti i protocolli necessari per fornire i vari servizi agli utenti,
non vengono impiegati i livelli Session e Presentation in quanto non ritenuti
necessari.
Teorema di Nyquist
Teorema di Shannon
14
Cavo coassiale
Fibre ottiche
Onde radio
Microonde
Raggi infrarossi
Luce visibile
Raggi ultravioletti
macchina e si occupa di gestire unallocazione ordinata delle risorse ai vari programmi che
competono per usarle tenendo traccia di chi le usa, di accettare e soddisfare le richieste, di evitare
e/o risolvere i conflitti.
Levoluzione dei S.O. ha seguito un percorso pressoch parallelo a quello degli elaboratori. I primi
elaboratori erano privi di un S.O. ed ogni programma aveva luso esclusivo dellelaboratore, il che
implicava lautosufficienza per gestire tutte le risorse di cui necessitava, comportando ulteriori
complicazioni a livello di programmazione; oggi un moderno S.O. in grado di coordinare
lesecuzione contemporanea di numerosi programmi e fornire loro tutti i servizi di cui necessitano,
come la gestione dei dispositivi di Input/Output. Di seguito riportata una sintetica cronistoria dei
S.O.
1.
2.
3.
4.
5.
19. I processi
La CPU ad ogni istante pu eseguire un solo programma, ma osservando il funzionamento di un
elaboratore si penserebbe che pi programmi siano in esecuzione contemporaneamente; per
esempio, un browser pu caricare una pagina http collegandosi tramite Internet con un sito e
nellattesa ci si diverte con un videogioco e sempre contemporaneamente, un documento viene
inviato alla stampante tramite un programma videoscrittura. Ma riferendosi ad elaboratori
monoprocessori, ossia dotati di una sola CPU, potr essere in esecuzione un solo programma alla
volta. Ci si domanda allora come pu succedere che pi programmi siano in esecuzione
contemporaneamente. Vedremo nel seguito del paragrafo come ci sia possibile.
Una definizione pi precisa di ci che per semplicit si chiamato programma, quella di
processo, dove per processo si intende un programma in esecuzione, ossia: il programma
16
eseguibile, il program counter, lo stack pointer (un indice della posizione corrente nella memoria
detta stack) ed altri registri e variabili di stato (vedi anche par. 6).
Per ovviare alla disponibilit di una sola CPU, che perci pu eseguire un solo programma alla
volta, si usa il trucco di dividere il tempo della CPU in tanti intervalli (detti quanti o slice) e
ad ogni processo si assegna ciclicamente luso della CPU per uno o pi quanti. Cos nellarco di un
secondo possono girare diversi processi in una sorta di pseudoparalellismo, ma realmente il tutto
funziona in maniera sequenziale con un processo in esecuzione alla volta. Il tempo di ogni quanto
pu essere di qualche decina di millisecondi fino a qualche centinaio. La dimensione dellintervallo
in cui un processo pu essere eseguito dipende anche dal tipo e dal numero di processi in memoria.
Quando un processo consuma lintervallo di tempo a sua disposizione, i suoi dati e lo stato corrente
vengono salvati, affinch possano essere ricaricati quando quel processo andr di nuovo in
esecuzione, e vengono caricati quelli del nuovo processo. Questa operazione prende il nome di
cambio di contesto e la modalit di esecuzione prende il nome di multiprogrammazione (per
comodit si ipotizza comunque che ogni processo abbia un microprocessore dedicato, anche se il
microprocessore ovviamente virtuale essendo unico quello reale. Differentemente, nei primi
calcolatori poteva essere eseguito un solo programma alla volta con un uso esclusivo e continuativo
dellelaboratore, si parla in tal caso di monoprogrammazione). Nei processi interattivi, che cio
interagiscono direttamente con lutente importante che la dimensione degli slice sia tale da dare
una sensazione di fluidit.
Il S.O. mantiene traccia dei processi in esecuzione attraverso una tabella dei processi dove ogni riga
corrisponde ad un processo e contiene informazioni sullo stato del processo, lo stack pointer,
lallocazione di memoria, lo stato dei file aperti, informazioni utili a quantificare i costi, lo
scheduling e qualsiasi cosa sia necessario salvare quando un processo non ha pi la disponibilit del
microprocessore, con la sola esclusione del contenuto della porzione di memoria utilizzata dal
processo. Pertanto il S.O. quando gestisce i cambi di contesto fa riferimento alla tabella dei processi
per salvare tutte le informazioni relative al processo che sta per essere scaricato e per prelevare, se il
processo era gi stato schedulato, tutte le informazioni relative al processo da caricare.
Un cambio di contesto pu anche avvenire perch in un determinato istante della sua esecuzione il
processo richiede un dato che deve essere reperito in memoria, in tal caso aspettare che il dato sia
recuperato comporta unoziosa attesa della CPU e risulta pertanto pi produttivo mandare in
esecuzione un altro processo. Si pu affermare che quando un processo si blocca lo fa perch da un
punto di vista logico non pu continuare lesecuzione (in genere perch manca un dato, oppure la
CPU stata allocata ad un altro processo). I processi si possono quindi distinguere nei seguenti
stati:
1. in esecuzione
2. pronto un processo eseguibile se solo avesse la disponibilit del microprocessore.
3. bloccato un processo nellattesa di dati o di qualche risorsa e ovviamente non ha luso
del microprocessore.
Esistono diversi tipi deventi che possono provocare la sospensione di un processo in esecuzione,
quali il completamento di unoperazione di I/O, una divisione per zero, un accesso in memoria non
valido, una richiesta al S.O.. Ognuno di questi eventi causa dellinvio di un segnale alla CPU,
segnale che prende il nome di interrupt. Linterrupt provoca la sospensione del processo in
esecuzione e il passaggio dalla modalit di funzionamento utente a quella Kernel. In modalit
Kernel il S.O. avvia idonei processi atti a gestire il problema che ha causato linterrupt. In altre
parole, viene realizzato il salvataggio dei registri e delle variabili di stato sullo stack, quindi
unapposita procedura salva i dati relativi al processo corrente e in ultimo avviata la routine di
servizio idonea per quel dato interrupt.
Un processo pu creare uno o pi processi figli o anche una gerarchia di processi che, in relazione
al tipo di S.O., possono essere sia attivi contemporaneamente che comportare la sospensione del
17
processo padre fino alla conclusione del/dei processi figli. I S.O. devono disporre di qualche
meccanismo per gestire i processi, le principali chiamate di sistema riguardano la loro creazione e
terminazione.
E utile anche far presente un problema che riguarda i processi obbligati a condividere la memoria
in lettura e scrittura, in cui si possono verificare le race-conditions o corse critiche. In breve, il
problema delle corse critiche collegato ai cambi di contesti e si verifica quando un processo legge
una locazione di memoria condivisa, immagazzina il dato, ma prima che lo possa utilizzare vi un
cambio di contesto. Il processo che segue utilizza la stessa locazione di memoria (in genere perch
usata per una qualche forma di comunicazione con laltro processo) legge il dato, che in questo caso
era lo stesso letto dallaltro processo, e modifica il valore della locazione di memoria. Al successivo
cambio di contesto il primo processo torna in esecuzione, ma non rilegger pi la locazione di
memoria, avendola gia letta precedentemente, e user quel valore che ora purtroppo sbagliato;
tutto ci pu anche causare il blocco di entrambi i processi. Esistono comunque diverse tecniche di
programmazione per evitare il verificarsi di questi problemi.
18
Code multiple - I processi sono suddivisi in classi ed ogni classe ha durata doppia di quella
inferiore. I processi arrivano nella classe superiore ogni volta che consumano tutto il quanto
a disposizione, oppure ogni volta che viene battuto un tasto supponendo ci indicativo del
fatto che il processo stia per diventare interattivo.
Garantita - Utile nei sistemi real-time, dove si manda in esecuzione il processo che ha il
rapporto pi basso tra il tempo usato e quello che gli spettava.
A due livelli - Uno schedulatore manda in esecuzione i processi tra quelli in memoria ed un
altro decide quale caricare e scaricare dalla memoria. Tra i criteri si segnalano: il tempo
passato dal precedente scarico; il tempo pi recente di utilizzo della CPU; la grandezza del
processo; la priorit del processo.
migliore quella di esprimere gli indirizzi dei programmi come indirizzi relativi ed ogni volta che
un processo viene assegnato ad una partizione, lindirizzo reale sar ottenuto sommando lindirizzo
relativo del processo con quello corrispondente alla prima locazione di memoria della partizione. In
questo modo facile cambiare la partizione assegnata ai processi. Loperazione di carico e scarico
dei processi dalla memoria detta di swapping.
Un'altra tecnica di multiprogrammazione quella realizzata con partizioni variabili sia in numero
che in dimensione. Questa tecnica ha il pregio di sfruttare meglio la memoria rispetto alle partizioni
fisse, per contro ha il difetto di creare buchi nella memoria in corrispondenza dei processi
scaricati. Buchi adiacenti possono essere raggruppati in un'unica area di memoria, inoltre se il
processo cresce dopo lallocazione, per esempio perch genera una serie di dati intermedi che deve
provvisoriamente salvare, i processi anzich essere spostati o terminati (detti anche uccisi)
possono sfruttare eventuali buchi nella memoria adiacenti allarea in cui allocato il processo. La
gestione della memoria pu essere effettuata attraverso bitmap o attraverso liste. Ognuna di queste
tecniche ha vantaggi e svantaggi. Con le bitmap ogni bit rappresenta una piccola porzione di
memoria; se il bit posto pari ad 0 indica che quella porzione di memoria libera, ma per contenere
il processo si dovr trovare una sequenza di bit sufficientemente lunga; le liste sono gi organizzate
per dimensioni e quindi il gestore deve cercare solo quella di dimensioni sufficienti a contenere il
processo, ma avr lo svantaggio di frequenti riorganizzazioni dei dati. Con la tecnica delle liste
possono essere utilizzate le strategie:
1.
2.
3.
4.
5.
Lallocazione dello spazio di swap quando si scaricano i processi sul disco fisso comporta luso
delle stesse strategie con lunica differenza che in questo caso i processi devono occupare un
multiplo dellunita base di memorizzazione del disco fisso (blocco).
Se si cerca un indirizzo appartenente ad una pagina virtuale non presente in memoria si ha un fault
di pagina, si scaricher allora dalla memoria al disco fisso una pagina poco usata e si caricher dal
disco fisso alla memoria la pagina che contiene lindirizzo cercato e quindi si aggiorner la tabella
delle pagine virtuali.
La dimensione delle pagine sempre un multiplo di 2, cos possibile suddividere un indirizzo in
due parti, il numero della pagina e un indirizzo di una locazione di memoria interna alla pagina,
detto anche offset o spiazzamento.
Indirizzo pi grande della memoria virtuale
Indirizzo pi grande della memoria fisica
Dimensione della pagina di 16 bit
Parola di 32 bit
Indirizzo interno alla pagina
Numero della pagina
Nella tabella delle pagine lelemento relativo alla pagina virtuale viene ricavato dal numero di
pagina fisica da collegare alloffset per avere lindirizzo da mandare in memoria. La tabella delle
pagine virtuali mappa le pagine virtuali alle pagine fisiche, le pagine virtuali sono ovviamente molte
di pi delle pagine fisiche e la tabella pu risultare molto grande, ma la traduzione deve essere fatta
velocemente se non si vogliono pregiudicare le prestazioni del sistema. A titolo desempio con
indirizzi da 32 bit e pagine da 4 Kb si hanno pi di un milione di pagine e in unistruzione
potrebbero esserci anche tre riferimenti in memoria. Le soluzioni per effettuare una traduzione
efficiente sono quelle di avere dellhardware specializzato costituito da registri veloci, uno per ogni
pagina virtuale; in alternativa la tabella pu essere a sua volta tenuta direttamente in memoria, ma
questa soluzione pi lenta della prima.
Per evitare la presenza in memoria di tabelle delle pagine molto grandi si pu usare la paginazione a
pi livelli, alcuni sistemi arrivano fino a quattro livelli. In memoria si terr perci solo ci che
necessario
La ricerca della presenza in memoria fisica di una data pagina virtuale rallenta il sistema, per
velocizzarlo si fa uso di una piccola memoria associativa che contiene informazioni relative alle
pagine presenti in memoria fisica oggetto dei pi recenti accessi. La memoria associativa rende
possibile effettuare una ricerca in parallelo su tutti i dati per verificare la presenza in memoria fisica
della pagina cercata e in caso di successo anche la corrispondenza tra pagina di memoria fisica e
virtuale. Questo sistema statisticamente ha una buona efficienza.
Si individuano tre casi:
1. Se presente in memoria la pagina e non si viola un bit di protezione (che indica il tipo di
accesso consentito) viene presa la pagina
2. Se presente in memoria la pagina e si viola un bit di protezione si ha un fault di pagina
3. Se non presente in memoria la pagina si cerca nella tabella delle pagine, si scarica un
elemento dalla memoria associativa e lo si rimpiazza con la nuova pagina.
Se la pagina scaricata era stata modificata la si salva in memoria. Questa informazione data da un
bit che viene modificato con la prima operazione di scrittura effettuata sulla pagina. Quando c un
21
23. La segmentazione
Dopo la paginazione si cercato di ottenere ancora pi spazio indirizzabile, ma i limiti sono
comunque individuati dalla dimensione dellindirizzo. Si trovata la soluzione nel dotare uno stesso
processo di pi spazi di indirizzamento lineari completamente indipendenti chiamati segmenti, che
possono avere la stessa dimensione oppure no.
Per potere indirizzare il segmento bisogna strutturare diversamente lindirizzo di memoria in
numero di segmento ed indirizzo interno al segmento, ma niente vieta che si usi
contemporaneamente anche la paginazione (strutturando un indirizzo virtuale in numero di
segmento, numero di pagina e indirizzo interno alla pagina).
I segmenti consentono anche il linking delle singole procedure separatamente, ognuna dotata del
proprio segmento, oppure consentono di caricare ogni libreria in un segmento separato. Inoltre,
mentre nella paginazione il contenuto della pagina sconosciuto al programmatore perch il
funzionamento nei suoi confronti trasparente, nella segmentazione il programmatore che decide
se ci deve essere e cosa deve contenere ogni segmento e pertanto volendo pu anche proteggere e
dare diritti differenti ad ogni segmento.
contenuto va perso, inoltre non accessibile se non al proprietario dello spazio di indirizzamento e
ci rende difficile scambiarsi le informazioni.
Perci serve:
1. memorizzare le informazioni permanentemente alla fine del processo
2. memorizzare grosse quantit di informazioni
3. consentire a pi processi laccesso alle informazioni.
Un file su supporti esterni risolve questo problema, ma bisogna definire che cosa un file e pertanto
la struttura del File System, i nomi dei file, le modalit di accesso e protezione, sono le principali
tematiche che tratteremo in questo paragrafo.
I file sono un meccanismo di astrazione che consentono in maniera trasparente per lutente di
memorizzare e ritrovare una informazione prescindendo dalla reale implementazione. Quando un
processo crea un file gli da un nome e, quando il processo termina, attraverso quel nome altri
processi potranno usare il file. Il nome spesso diviso in due o pi parti il cosiddetto nome vero e
proprio e nessuna o una o pi estensioni.
Le tre pi comuni modalit di strutturazione dei file sono:
1. sequenza non strutturata di byte
2. sequenza di record
3. ad albero
In 1) un qualsiasi significato pu essere attribuito a livello di programma utente; il S.O. non aiuta,
ma non interferisce. In 2) si usa una struttura a sequenza di record a lunghezza fissa, ognuno con
una sua struttura interna. Ogni lettura restituisce un record ed ogni scrittura scrive un record. In 3) si
usa un albero di record, non necessariamente della stessa lunghezza, lalbero ordinato rispetto ad
un campo del record detto Key.
I tipi di file possono essere
1. File regolari contengono le informazioni degli utenti
2. File directory file di sistema che conservano la struttura del file system
3. File speciali a caratteri modellano lInput/Output di unit speciali (stampanti, terminali,
reti)
4. File speciali a blocchi modellano i dischi
I file regolari possono essere scritti in ASCII, ossia formati da linee di tipo testo (per ogni linea i
sistemi operativi in genere inseriscono un carattere di fine linea), oppure possono essere in binario e
se letti risultano non comprensibili, in genere i file binari hanno una struttura interna. I file regolari
ASCII si possono stampare ed facile collegare Output e Input di programmi diversi. I programmi
sono essi stessi file eseguibili ed un sistema operativo deve perlomeno riconoscere il proprio file
eseguibile.
Il tipo di accesso ai file pu essere di tipo sequenziale a tutti i byte (o record) del file, oppure ad
accesso casuale in cui i byte o record possono essere letti in un qualsivoglia ordine, a partire
dallinizio del file o dalla posizione corrente.
Ogni Sistema Operativo associa ad ogni file delle informazioni tra cui potrebbero esserci:
Protezione
Proprietario
Flag di sistema
Flag binario
Flag di lock
Tempo di creazione
Dimensione massima
Password
Flag di sola lettura
Flag darchivio
Flag daccesso casuale
Lunghezza dei record
Tempo dellultimo accesso
23
Creatore
Flag di file nascosto
Flag ASCII
Flag di file temporaneo
Posizione chiave
Dimensione attuale
24
Bibliografia
Informatica di base D.P. Curtin et al. McGraw-Hill
I moderni sistemi operativi A. S. Tanenbaum Prentic Hall International
Architettura dei Computer A. S. Tanenbaum Prentic Hall International
Reti di Computer A. S. Tanenbaum Prentic Hall International
25