INFORMATICA Sommario Breve storia dell`informatica La preistoria

Università degli Studi di Cagliari
Corso di Laurea in Biotecnologie Industriali
Sommario
INFORMATICA
http://www.diee.unica.it/~marcialis/Informatica
A.A. 2016/2017
Docente: Gian Luca Marcialis
ARCHITETTURA DEI CALCOLATORI
SISTEMI OPERATIVI
Breve storia dell’informatica e dei calcolatori elettronici
Calcolatori elettronici come esecutori di algoritmi
Architettura di Von Neumann
la memoria centrale
l’unità centrale di elaborazione (CPU)
i dispositivi di ingresso e uscita
il bus di sistema
estensioni dell’architettura di Von Neumann
Il Sistema Operativo: cenni
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Breve storia dell’informatica
La storia dell’informatica non inizia con quella del suo
strumento principale (il calcolatore), nel XX secolo, ma
ha radici in discipline molto antiche come l’aritmetica
Si può considerare la sua evoluzione da tre punti di vista
metodi e modelli teorici alla base della disciplina
strumenti hardware (calcolatori, reti,...) e software (sistemi operativi,
linguaggi di programmazione,...)
applicazioni
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
La preistoria (metodi e modelli teorici)
Informatica: disciplina dell’elaborazione
rigorosa dell’informazione
Primi elementi di informatica si trovano in:
precisa
e
Euclide, 300 a.C. circa (es.: algoritmo per il calcolo del MCD)
Aristotele , 384-322 a.C. (es.: sillogismi, codifica rigorosa di alcuni
sistemi di ragionamento umano)
XX sec.: assiomatizzazione dell’aritmetica (G. Peano) e definizione di
Algebra Booleana (G. Boole)
anni ’30 (XX sec.): sviluppo della teoria degli algoritmi e della loro
esecuzione automatica (Church, Gödel, Turing)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
La preistoria (i primi strumenti
meccanici)
Primi calcolatori meccanici: XVII sec.
Pascal (1642): addizione e sottrazione
Leibniz (1700): le 4 operazioni fondamentali
Nuove idee solo 150 anni più tardi!
Babbage (1834): “motore analitico” (a vapore), un calcolatore programmabile,
capace di eseguire istruzioni elementari per risolvere diversi problemi
XX sec.: inizia l’era calcolatori general purpose
uno stesso calcolatore può essere programmato per svolgere compiti
diversi (es. elaborazione testo, calcoli scientifici, posta elettronica, ecc.)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Gli anni ’60 e ’70: dal salone alla
scrivania
Anni ’60
nuovi metodi di progettazione del software
(Ingegneria del Software)
tecnologia dei semiconduttori (minori
dimensioni dei calcolatori, maggiore
affidabilità)
sviluppo dei primi Sistemi Operativi e sistemi
di gestione di basi di dati
Anni ’70
rapido sviluppo dell’hardware (maggiore
potenza di calcolo, riduzione di costi e
dimensioni): primi personal computer
linguaggio C, sistema operativo Unix
applicazioni diverse da quelle scientifiche
Gli anni ’30 - ’50: l’era dei Colossi
Anni ’30 - ’40
1936: primo calcolatore elettromeccanico
(funzionante con relé)
1943: primo calcolatore elettronico (valvole
termoioniche): il Colosso Mark I, progettato
per la decifratura del codice Lorenz
1946: ENIAC - J. Von Neumann per
applicazioni militari (calcoli balistici): è
considerato il primo calcolatore moderno
Anni ’50
applicazione principale: calcoli numerici per
elaborazioni scientifiche
limitazioni fisiche: tecnologia delle valvole
elettroniche
sviluppo dei linguaggi Assembler e dei primi
linguaggi di alto livello
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Gli anni ’80 e ’90: dalla scrivania alla
tasca
Anni ’80
strumenti di sviluppo per harware e
software
elaborazione distribuita
− interazione
tra
tecnologia
informatica e telecomunicazioni:
nascita della telematica
nuove applicazioni: controllo dei
processi
industriali,
calcolatori
embedded (centraline elettroniche per
auto, elettrodomestici ecc.)
Anni ’90
reti di calcolatori, Internet
rapida obsolescenza dei
hardware e software
prodotti
Finalmente il 2000…
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Definizione di algoritmo
Algoritmi e programmi
Sequenza precisa (comprensibile) di passi elementari
che consentono di realizzare un compito
passi elementari: eseguibili dall’esecutore dell’algoritmo
es.: istruzioni di montaggio di un mobile, prelevamento di denaro da un
terminale Bancomat, calcolo del massimo comun divisore di due
numeri naturali...
Compito principale di un calcolatore:
esecuzione di un algoritmo espresso sotto forma di programma
programma: sequenza di operazioni elementari (direttamente eseguibili
dal calcolatore) su dati codificati in forma binaria
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Ogni calcolatore mette a disposizione un certo numero
(finito) di operazioni elementari su dati rappresentati in
codifica binaria
Qualsiasi algoritmo deve essere espresso come
sequenza di operazioni elementari effettivamente
eseguibili dal calcolatore (programma)
es.: molti calcolatori non forniscono l’operazione di estrazione della
radice quadrata, ma solo le operazioni di somma e prodotto;
l’estrazione della radice quadrata deve essere espressa come
sequenza di somme e prodotti
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Architettura di un calcolatore
Architettura di Von Neumann
Con il termine “architettura” di un calcolatore
intenderemo l’insieme delle parti e delle loro
interconnessioni che consentono determinate
funzionalità “visibili” al programmatore
Es. un calcolatore mette a disposizione un’operazione per fare la
somma di due numeri. Questa operazione fa parte dell’architettura del
calcolatore e potrà essere usata dal programmatore
L’architettura
astrazione
può
essere
vista
a
vari
livelli
di
Livello puramente “fisico”: unità centrale, tastiera, monitor, disco
Livello “logico” (nel senso “non fisico”) o delle istruzioni: architettura di
Von Neumann
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Bus di sistema
CPU
Memoria
centrale
Periferica1
(I/O)
Periferica2
(I/O)
...
Dispositivi di ingresso e uscita (I/O)
Componenti dell’architettura di Von
Neumann
Memoria centrale
contiene i programmi in esecuzione e i dati su cui operano
Unità di elaborazione (Central Processing Unit, CPU)
contiene i dispositivi elettronici in grado di eseguire le istruzioni
(operazioni elementari) del programma, e di coordinare il
funzionamento dell’intero calcolatore
Periferiche
dispositivi che permettono l’ingresso e l’uscita (I/O) delle informazioni
(dati e programmi). Es.: tastiera, monitor, stampante, ecc.
Schema di funzionamento della
macchina di Von Neumann
I programmi sono composti da istruzioni codificate in binario:
istruzioni di elaborazione (ad es. operazioni numeriche)
istruzioni di trasferimento di dati tra due componenti della macchina
Il funzionamento della macchina di Von Neumann è un ciclo
continuo:
la CPU estrae le istruzioni e i dati dalla memoria principale...
...le decodifica (determina l’operazione da eseguire e i gli operandi)...
...e le esegue
Bus di sistema
collega i diversi componenti dell’architettura
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Il modulo di memoria
Quattro livelli:
Registri, capaci di memorizzare parole singole
− Tipicamente dati “in transito” relativi ad un particolare dato o
istruzione in esecuzione
Memoria cache
− Area di memoria ad accesso rapido finalizzata a contenere
istruzioni e dati usati più frequentemente
Memoria centrale o primaria
− Contiene istruzioni e dati del programma in esecuzione
Memoria secondaria
− Fa parte dei moduli periferici
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
La memoria centrale
Conserva le istruzioni e i dati dei programmi in esecuzione
Dati memorizzati in bit (binary digit): ogni unità elementare di memoria
contiene un’informazione di tipo binario: 1 oppure 0
realizzazione mediante dispositivi fisici a due stati (transistor a semiconduttori, due
livelli di tensione)
E’ organizzata come sequenza di celle o parole:
Parola: insieme di più byte (una potenza di 2: tipicamente 1, 2, 4, 8)
Byte: insieme di 8 bit
Ogni cella è individuata da un indirizzo:
numero che indica la posizione relativa rispetto alla prima cella, che ha indirizzo 0
Parallelo tra:
− Indirizzo == numero di collocazione in una biblioteca
− Cella == scaffale corrispondente alla collocazione
− Contenuto (Dato) == libro
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Struttura della memoria centrale
Può essere pensata come una tabella:
ogni riga corrisponde ad una “word”
il numero di colonne è pari al numero di bit componenti la “word”
Es.: memoria con parole da un byte (8 bit)
Indirizzo delle celle
000 (0)
001 (1)
010 (2)
011 (3)
100 (4)
...
bit
7
6
5
4
3
2
1
Con un registro indirizzi di k bit, si possono indirizzare 2k
parole di memoria: gli indirizzi vanno da 0 a 2k-1
es.: k=10: 210 = 1024 celle (una kilo-parola)
k=20: 220 = 1048576 celle (una mega-parola)
La capacità della memoria si misura sempre in byte
(non si esprime in “parole”, che, a seconda della
memoria, possono avere dimensioni differenti)
es.: k=10, parole di 2 byte: 2⋅210=211=2048 byte (2 kilo-byte)
k=20, parole di 4 byte: 4⋅220=22⋅220=222=4194304 byte (4 mega-byte)
0
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Caratteristiche della memoria centrale
Velocità di accesso elevata: decine di ns (10-9 sec)
Tempo di accesso indipendente dalla posizione del dato
nella memoria
RAM: Random Access Memory
si contrappongono alle memorie ad accesso sequenziale, come i nastri
magnetici
Dimensione limitata: oggi alcuni GB
230 byte = 1073741824 byte ≅ 109 byte (un giga-byte)
L’informazione viene persa se
l’alimentazione elettrica (volatilità)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Capacità della memoria
si
interrompe
Memorie RAM e ROM
Un valore può essere memorizzato/recuperato dalla
memoria specificando l’indirizzo
il tempo di accesso è indipendente dall’indirizzo (ecco perché il nome
di RAM)
Memorie ROM (Read Only Memory)
sono memorie di sola lettura, pre-impostate dal fabbricante
sono di fatto memorie RAM (ROM e RAM non sono termini
contrapposti!) ma non sono volatili
tipicamente contengono le istruzioni per l’avvio del calcolatore
(firmware)
sono usate anche in auto, elettrodomestici, ecc.
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Il processore
Il Processore (CPU, Central Processing Unit) contiene tre elementi
funzionali:
Unità di controllo:
−
−
−
−
recupera le istruzioni dalla memoria centrale
decodifica le istruzioni
preleva i dati necessari e li trasferisce alle unità coinvolte nell’esecuzione
invia i segnali di controllo alle unità coinvolte nell’esecuzione
Unità Aritmetico-Logica (ALU, Arithmetic and Logic Unit)
− Modulo capace di eseguire un certo insieme di operazioni aritmetiche e
logiche
Orologio (clock) di sistema
− sincronizza le operazioni di tutto il sistema
− la frequenza di clock vincola il numero di istruzioni che possono essere
eseguite dal calcolatore
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Esecuzione di un programma:
funzionamento elementare
Insieme di istruzioni di una CPU
Istruzioni di calcolo
operazioni aritmetiche (somma, sottrazione, prodotto, divisione ecc.)
operazioni logiche (algebra booleana)
L’elaborazione dei dati avviene nella ALU
Una ALU è in grado di eseguire un insieme di operazioni predefinito (in fase di progetto) su dati
codificati in binario
Istruzioni di prelievo dati dalla memoria o dalle periferiche
Istruzioni di trasferimento dati su memoria o su periferiche
I programmi eseguibili dal calcolatore sono espressi come sequenza di
istruzioni codificate in binario, ognuna corrispondente ad una delle
operazioni precedenti
linguaggio macchina
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Dispositivi di ingresso e uscita (I/O)
Si carica in memoria centrale il programma in codice
binario
Sono anche detti unità periferiche per sottolineare il loro
ruolo di completamento delle funzioni di base della CPU
il programma occupa una sequenza contigua di “word” di
memoria
unità di memorizzazione secondaria, non volatile (dischi,
nastri)
unità per l’ingresso dei dati (tastiera, mouse, schede di
acquisizione dati, microfono, telecamera, ecc.)
unità per l’uscita (video, stampante, plotter, dispositivi
audio, ecc.)
unità per il collegamento ad altri calcolatori (scheda di
rete, modem, ecc.)
Ogni istruzione è sottoposta, sequenzialmente, a un
“ciclo di esecuzione”
L’ultima istruzione indica esplicitamente il termine
delle operazioni (“halt”)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Esempio: l’hard disk
Unità di memorizzazione secondaria
Servono per archiviare in modo permanente programmi e dati
(su supporti non volatili)
dischi magnetici, ottici (CD-ROM) e magneto-ottici
nastri magnetici
Rispetto alla memoria principale: elevata capacità di
memorizzazione, bassa velocità di accesso, basso costo
E’ un piatto circolare di
metallo, o di plastica, ricoperto
con materiale magnetico.
Il
meccanismo
di
lettura/scrittura è una spira
conduttrice detta testina.
Durante
un’operazione
di
lettura/scrittura la testina è
ferma sopra il piatto che ruota.
l’accesso avviene per mezzo di organi meccanici
tempo di accesso a un disco dell’ordine dei ms (10-3 sec.), tempo d’accesso
alla memoria centrale dell’ordine dei ns! (10-9 sec.)
il tempo d’accesso varia a seconda della posizione del dato nel dispositivo di
memorizzazione: non sono RAM!
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Interfacce interne
Interfacciamento di unità periferiche
Le periferiche hanno caratteristiche molto diverse tra loro
EIDE o SCSI (collegamento con “flat cable”)
Hard Disk / CDROM / DVD
velocità di trasferimento
− es.: un monitor richiede una quantità di dati molto maggiore rispetto
ad una stampante, nell’unità di tempo
operazioni di I/O eseguibili
Il trasferimento di dati e istruzioni fra CPU e periferiche
avviene per mezzo di elementi circuitali detti interfacce
fanno parte del calcolatore, non della periferica
contengono registri (insiemi di bit per memorizzazione temporanea di
informazioni) per inviare comandi alla periferica, scambiare dati e controllare lo
stato della periferica
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Connettore floppy (“flat cable”)
Floppy Disk
Slot PCI (Peripheral Component Interconnect)
Schede varie (rete, audio, modem interno, grafica)
Slot AGP (Accelerated Graphic Port)
Scheda grafica 3D
Interfacce esterne
Il bus di sistema
Insieme di connessioni elementari (linee) lungo le quali viene
trasferita l’informazione
ogni linea trasporta un bit
Collega il processore, la memoria e le interfacce di I/O
In ogni istante di tempo (intervallo di clock) il bus è dedicato a
collegare due unità: una trasmette, l’altra riceve
Di norma è sotto il controllo del processore (master), che
seleziona le unità di elaborazione (slave) da collegare
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Il bus di sistema (cont.)
Tre insiemi di linee funzionalmente distinte:
Bus dati: l’insieme di linee impiegate per trasmettere i dati tra due
unità; il numero di linee è di norma pari al numero di bit di una parola di
memoria (ad es. 32, 64 bit)
Bus indirizzi: l’insieme di linee impiegate per trasmettere l’indirizzo del
dato che si deve trasferire (ad es. l’indirizzo della cella di memoria che
contiene l’istruzione da trasferire al processore, ecc.); l’ampiezza è pari
a quella del registro indirizzi del processore
Bus controlli: l’insieme di linee impiegate per trasmettere i codici di
controllo della trasmissione (ad es. i segnali di controllo della CPU per
l’esecuzione delle operazioni della ALU, ecc.)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Limiti dell’architettura di von Neumann
Limite principale: stretta sequenzialità delle operazioni
Esecuzione delle istruzioni
tre fasi salienti (in realtà cinque): prelievo, decodifica, esecuzione; ma durante
la decodifica l’unità preposta al prelievo resta inattiva, e durante l’esecuzione
resta inattiva anche quella preposta alla decodifica...
Esecuzione dei programmi
le istruzioni vengono eseguite una alla volta, ma potrebbero esserci gruppi di
istruzioni che potrebbero essere eseguite in parallelo da processori diversi
…oppure gruppi di istruzioni che si ripetono frequentemente
Dialogo con le periferiche
sono di norma molto più lente del processore, che resta a lungo inattivo
durante il trasferimento di dati...
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Estensioni dell’architettura di Von
Neumann
Negli anni sono state introdotte diverse modifiche all’architettura, per
sfruttare varie forme di parallelismo
Ciclo di esecuzione delle istruzioni condotto in parallelo (pipelining): architetture CISC
e RISC
Aggiunta di unità dedicate
− calcoli aritmetici ad alta precisione: in virgola mobile (Floating Point Unit,
FPU, all’interno della ALU) o per la grafica su video (schede grafiche)
− per operazioni di I/O (interfacce intelligenti)
• es.: Direct Memory Access (DMA): l’interfaccia trasferisce i dati direttamente in
memoria principale anzichè al processore
Architetture multiprocessore
− Intel QuadCore, Core 2 Duo, Core 2 Quad, AMD Phenom
Uso di gerarchie di memoria
− memorie caratterizzate da costi e prestazioni crescenti (e quindi
dimensioni decrescenti); ad es. disco, memoria centrale, cache
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Sistema operativo come gestore delle
risorse
Gestione corretta, efficiente e sicura delle risorse
correttezza: l'accesso a qualsiasi risorsa hardware è permesso solo al
SO; ad es., si evitano errori nelle routine di gestione dell'hardware (non
è necessario per i programmatori conoscere i dettagli del
funzionamento delle periferiche, ecc.)
efficienza: le risorse (ad es. memoria, CPU, stampanti) sono limitate, e
devono essere condivise tra diversi utenti e programmi
sicurezza: gli utenti non hanno il controllo diretto dell'hardware; il SO
utilizza meccanismi di protezione per evitare "interferenze" tra utenti
diversi e tra utenti e lo stesso SO
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Il Sistema Operativo (SO)
Insieme di programmi (software) con le seguenti funzioni
gestire le risorse (hardware) del calcolatore in modo corretto,
efficiente e sicuro
fornire agli utenti e ai programmatori un'interfaccia semplificata con
l'hardware
Risorse del calcolatore
tutti i componenti hardware necessari per l'esecuzione dei programmi:
− memoria centrale, processore, periferiche, ecc.
Interfaccia utente\hardware
insieme di funzionalità software che "nascondono" agli utenti i dettagli
dell'hardware (ad es., I\O su memoria secondaria)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Architettura a livelli del SO
Un moderno SO è organizzato a livelli (progettazione
modulare)
Ogni livello si occupa di gestire una parte dell'hardware
Ogni livello realizza una macchina virtuale
maschera le caratteristiche dell'hardware sottostante, e offre ai livelli
superiori un insieme ben definito di funzionalità software
nei sistemi multiutente, offre a ciascun utente l'illusione di una macchina
dedicata: ogni utente è isolato dagli altri
I diversi livelli sono indipendenti tra loro
se un livello viene modificato ma mantiene le stesse funzionalità,
l'interfaccia verso i livelli superiori non cambia: questi livelli non devono
essere modificati
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Schema dell'architettura a livelli del SO
Gli utenti possono interagire solo con la shell del SO
ad es.: lanciare un programma, visualizzare il contenuto di una
directory, ecc.
Applicazioni e programmi utente
Interprete dei comandi (shell)
Gestore del File System (memoria secondaria)
Gestore delle periferiche (I\O)
Gestore della memoria principale
Gestore dei processi
Hardware
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Architettura a livelli del SO
Gestore dei processi (programmi in esecuzione)
condivisione della CPU tra i vari processi (concorrenza)
gestione delle fasi di attesa per operazioni di I\O
Gestore della memoria principale
allocazione della memoria tra i diversi processi
Gestore delle periferiche
insieme di programmi (driver) che gestiscono le operazioni di I\O con le
periferiche
Anch’esse risultano come macchine “dedicate”
I dettagli HW-SW sono mascherati agli utenti, che si trovano a
comunicare con esse attraverso primitive ad alto livello (leggi/scrivi)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Gestione dei processi
Architettura a livelli del SO (cont.)
Gestore del file system
organizza la memoria di massa (secondaria) gerarchicamente in file e
directory
gestisce le operazioni sui file (creazione, scrittura, lettura, ecc.)
Interprete dei comandi (shell)
è l'interfaccia tra il calcolatore e gli utenti (a linea di comando o grafica)
mette a disposizione un insieme di comandi, consentendo ad es. di
lanciare l'esecuzione di programmi, "navigare" nel file system, ecc.
Nei Sistemi Operativi è realizzato attraverso interfacce grafiche
(Graphic User Interface, GUI), con le quali si semplifica il concetto
dell’operazione da svolgere
− Es. spostare un file nel cestino equivale a scrivere e far eseguire
da riga di comando un’istruzione del tipo “cancella il file”
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Processo: programma in esecuzione (entità dinamica)
programma (entità statica)
contenuto della memoria centrale e dei registri della CPU (in particolare
PC), e stato del processo (entità dinamiche)
Ad un programma possono essere associati più processi
− Es. Word: mentre scriviamo un documento (processo principale)
ne facciamo stampare un altro (processo secondario) senza
interrompere la scrittura
Stati di un processo
in esecuzione: la CPU sta eseguendo le istruzioni del programma
associato (un solo processo in esecuzione in ogni istante su una CPU)
in attesa: attendono il verificarsi di un evento "esterno" (I\O)
pronti: possono passare in esecuzione quando la CPU si libera
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Diagramma dei processi: un esempio
Politiche di gestione della CPU
Reimmissione nella lista pronti in caso di
«quanto» insufficiente
L'obiettivo del gestore dei processi è rendere efficiente
l'uso della CPU condivisa da più processi:
Coda di processi pronti
(con priorità per alcuni)
Selettore
CPU
(processo in esecuzione)
Processo
servito/terminato
mantenere occupata la CPU per il maggior tempo possibile
minimizzare tempi di attesa e di esecuzione dei processi
Questi obiettivi sono in contrasto tra loro...
Es. se la CPU esegue un processo alla volta, riduciamo il tempo di
esecuzione del processo, ma aumenta il tempo d'attesa e di
esecuzione degli altri...
Eventuale messa in coda di attesa di evento
interno/esterno (interrupt) prima di
reimmissione nella coda dei processi pronti
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Deadlock o stallo (mi si è piantato il
PC!)
Molte risorse possono essere utilizzate da un solo processo
alla volta
CPU, stampanti, CD, scanner, ecc.: risorse esclusive
Alcune di queste sono non “prerilasciabili”
es.: la CPU sì, un masterizzatore di CD no!
Spesso i processi hanno la necessità di utilizzare più di una
risorsa
es.: registrare su CD un documento acquisito da uno scanner
Il deadlock si verifica quando si verifica un’attesa circolare:
un insieme di processi è in attesa di un insieme di risorse esclusive non
prerilasciabili, tutte assegnate ad altri processi dell'insieme
es. il processo A è in attesa del CD assegnato al processo B; il processo B è
in attesa dello scanner, già assegnato al processo A...
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
...è quindi necessario un compromesso, definendo i
criteri di scelta di uno dei processi pronti da mandare in
esecuzione (“schedulazione” dei processi)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Gestione dei deadlock
Algoritmo dello struzzo
si ignora il problema: in caso di deadlock, il sistema viene riavviato
è la soluzione più semplice, adatta per casi in cui il deadlock è molto raro
Identificazione e risoluzione
identificare un deadlock può essere complesso
risoluzione: forzare il rilascio di una o più risorse, o eliminazione di processi
(CTRL+ALT+CANC
per visualizzare il Task Manager di Windows
NT\2000\XP)
Prevenzione
il SO tiene traccia dell'allocazione delle risorse e dei possibili stati di attesa
circolare, impedendo che si verifichino
è l'approccio più complesso
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Un esempio con Windows XP
Gestione della memoria centrale
Ogni processo occupa una parte della memoria centrale
Problemi
la memoria principale ha dimensioni ridotte: può contenere pochi
processi
bisogna evitare che un processo acceda a celle di memoria allocate ad
altri processi (di altri utenti o del SO!)
il programma associato ad ogni processo deve poter essere caricato a
partire da un indirizzo qualsiasi, ma i programmi al loro interno devono
fare riferimento ad indirizzi precisi (es.: operandi delle istruzioni)...
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Tecniche di allocazione della memoria:
allocazione contigua
Esempio di allocazione contigua
0
Ogni programma occupa una sequenza contigua di celle di
memoria (area di memoria)
Un nuovo programma viene allocato in una delle aree libere,
se possibile
Es.: si supponga che i primi 400 KB siano occupati dal SO, e
che sia richiesta l'esecuzione di 5 processi utente, nell'ordine:
Processo Memoria
Word
600 KB
Excel
1000 KB
Outlook
300 KB
FNaF
700 KB
Int. Explorer 500 KB
Tempo (ore)
10
5
20
8
15
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
400 K
0
sistema
operativo
400 K
Word
400 K
1000 K
0
sistema
operativo
400 K
0
sistema
operativo
900 K
1000 K
Internet
Explorer
1000 K
1000 K
2000 K
Five
Five
Five
Nights
Nights
Nights
At
At
At
Freddy’s
Freddy’s
1700 K Freddy’s
2000 K
2000 K
2000 K
Excel
Outlook
Outlook
2300 K
2300 K
2300 K
2560 K
2560 K
2560 K
Excel termina
alloca FNaF
1000 K
sistema
operativo
400 K
Word
Word
2000 K
(cont.)
0
sistema
operativo
Outlook
Outlook
Outlook
2300 K
2300 K
2560 K
2560 K
Word termina
alloca I.E.
Paginazione e segmentazione
Problemi con allocazione contigua
Frammentazione: possono
esistere tante aree di
memoria libere, nessuna in
grado di contenere un
intero processo
Compattamento
− Raggruppare
le
aree
libere in un’unica più
ampia potrebbe richiedere
molto tempo
0
400 K
900 K
1000 K
Deframmentazione
− Le
aree
occupate
vengono
riallocate
in
modo contiguo
Alternativa:
Allocazione non contigua
Dopo
Prima
0
sistema
operativo
Internet
Explorer
400 K
900 K
Internet
Explorer
Five
Nights
At
Freddy’s
Five
Nights
At
Freddy’s
Outlook
2000 K
2300 K
sistema
operativo
la memoria è divisa in blocchi
i programmi sono divisi in pagine
pagine e blocchi hanno tutti uguale dimensione
le pagine di uno stesso programma possono occupare blocchi di
memoria non contigui
Il Sistema Operativo tiene traccia delle pagine fisiche allocate
attraverso una “Page Map Table” assegnata ad ogni processo
Segmentazione
Outlook
2560 K
2560 K
Tecniche di allocazione non contigua
Paginazione
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
i programmi vengono divisi in segmenti di lunghezza anche diversa,
che possono essere caricati in aree di memoria non contigue
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Un esempio di paginazione
Word
Pagina 0
Pagina 1
Pagina 2
Pagina 3
Excel
Pagina 0
Pagina 1
Memoria fisica
Sis. Op.
Blocco 1
Blocco 2
Blocco 3
Blocco 4
Blocco 5
Blocco 6
Gestione della memoria virtuale
Questo sistema permette di far eseguire programmi che occupano
uno spazio di memoria superiore a quello disponibile in primaria
A livello del Sistema Operativo, la virtualizzazione della memoria
viene gestita utilizzando la paginazione su richiesta
Si carica la pagina in memoria centrale solo quando “serve”
− Swapping
Quando tutti i blocchi della memoria centrale sono occupati, occorre applicare
opportune politiche di “thrashing”:
− Quale pagina in memoria centrale deve essere rimpiazzata da quella da
allocare?
− Es. posso sostituire la pagina che è stata meno frequentemente chiamata
in un certo lasso di tempo (Least Frequently Used), o più semplicemente
applicare un algoritmo a rotazione (First In First Out, come per le code di
processi)
Blocco 7
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Esempio di paginazione su richiesta
Word
Pagina 0
Deallocato
– non serve
Memoria fisica
Sis. Op.
Pagina 1
Blocco 1
Pagina 2
Blocco 2
Pagina 3
Blocco 3
Outlook richiede allocazione
pagina 0
Outlook
Pagina 0
Pagina 1
Blocco 4
Excel
Pagina 0
Pagina 1
Blocco 5
Allocata su blocco
libero
Blocco 6
Blocco 7
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Gestione del file system (cont.)
Gestione del file system
Organizzazione di dati e programmi in memoria
secondaria:
indipendente dal dispositivo fisico (nastri, dischi magnetici e ottici, ecc.)
unità di memorizzazione: file
i file sono organizzati in strutture gerarchiche ad albero: directory
File
qualsiasi dato o programma si trova all'interno di un file
proprietà dei file:
− nome (lo distingue dai file all'interno della stessa directory)
− attributi (proprietario, permessi di accesso, tipo, dimensioni, data di
creazione e modifica, ecc.)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Esempio di organizzazione del file
system
Root
Directory
struttura che può contenere un numero arbitrario di file e altre directory
la directory a livello più alto è detta root (radice)
due tipi:
− directory di sistema: contengono i programmi e i dati del SO
− dirtectory utente: contengono applicazioni e dati degli utenti
proprietà:
− Nome . Estensione
− Nome: 8 caratteri; Estensione: 3 caratteri
• Vincoli non presenti nei SO più moderni (XP, MacOSX)
− Attributi (proprietario, permessi di accesso, ecc.)
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
programmi
utenti
mario
Tesi.doc
ugo
Testo.txt
progetti
piero
Tabella.xls foto programmi
...
...
Ogni file e directory è identificato univocamente dal path name, che
include l'intero cammino dalla directory radice. Es. (notazione Windows):
\Root\utenti\ugo\Testo.txt
\Root\utenti\mario\Tesi.doc
File e directory contenuti in directory diverse possono avere lo stesso
nome
In Windows la cartella ”root” corrisponde alla cartella “Desktop”
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Operazioni su file e directory
Interfacce utente-macchina: la shell
Il SO mette a disposizione degli utenti (attraverso
l'interprete dei comandi) e delle applicazioni (chiamate di
sistema) un insieme di operazioni su file e directory
creazione di file e directory nella directory corrente
elenco del contenuto della directory corrente
cambiamento della directory corrente
copia, cancellazione e ridenominazione
apertura di un file (esecuzione o visualizzazione)
modifica dei permessi
Ogni operazione può essere eseguita solo se si dispone
dei permessi necessari
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Interfacce grafiche
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Per saperne di più…
Capp 2-3 del libro di testo
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis
Informatica - A.A. 2016/17 - Prof. Gian Luca Marcialis