5ªMI – Sistemi operativi
Gli oggetti della prima parte del corso
1
SO: funzionalità
mf
SO come GESTORE DELLE
RISORSE,
controlla tutte le risorse del
calcolatore e le gestisce in modo
efficiente:
Funzioni di
servizio del SO
mf
Esecuzione di applicazioni
Accesso ai dispositivi di ingresso/uscita
condivisione di risorse da parte di più utenti o applicazioni,
meccanismi di protezione e politiche di risoluzione degli eventuali conflitti d’uso;
Contabilizzazione
fornire un’organizzazione logica dei dati sotto forma di cartelle (directory) e file,
gestire le operazioni di basso livello per il relativo ingresso/uscita;
Controllo di accesso degli utenti
gestione dei segnali necessari per il trasferimento dei dati,
consente all’utente di ragionare in termini di operazioni astratte di lettura e scrittura;
Archiviazione di dati e programmi
caricamento del programma (istruzioni e dati) nella memoria centrale,
inizializzazione dei dispositivi di ingresso/uscita,
preparazione e gestione di altre risorse come la rete di comunicazione
ottimizzare il tempo di risposta dei programmi interattivi,
fatturare agli utenti i costi dell’impiego del sistema;
Gestione dei malfunzionamenti
rilevare e, se possibile, di risolvere eventuali malfunzionamenti provocati da guasti
hardware, o da operazioni scorrette compiute dal software applicativo.
2
mf
mf
Gli elementi di un SO
Utente
Sistema Operativo
Interprete
comandi
Gestione
memoria
Software
applicativo
Gestione
processore
Gestione
periferiche
Hardware
File
system
3
Elementi in
dettaglio di un SO
mf
Sistema di gestione del processore,
Sistema di gestione della memoria,
garantisce l’accesso ai dispositivi di ingresso/uscita,
maschera i dettagli di basso livello e gli eventuali conflitti che possono
insorgere nel caso che diverse richieste arrivino contemporaneamente a uno
stesso dispositivo;
Sistema di gestione dei file (file system)
controlla l’allocazione della memoria di lavoro ai diversi programmi che possono
essere contemporaneamente in esecuzione;
Sistema di gestione delle periferiche,
controlla l’unità centrale di elaborazione (CPU);
definisce quali programmi sono da eseguire e quali compiti sono da assegnare
alla CPU;
consente l’archiviazione e il reperimento dei dati sfruttando le periferiche
che costituiscono la memoria di massa;
Sistema di gestione degli utenti e dei relativi comandi (interprete
comandi),
interfaccia diretta con gli utenti,
permette agli utenti di accedere in maniera semplice e intuitiva alle
funzionalità disponibili.
4
Vantaggi della struttura
a livelli di un SO
mf
Sono legati alla possibilità di definire
modalità standard di interfaccia con i
dispositivi fisici, cosicché sia possibile:
mf
sviluppare programmi in modo semplice,
modulare ed indipendente dallo specifico
calcolatore su cui viene fatto funzionare il
sistema operativo;
aggiornare il software di base e l'hardware
in modo trasparente ai programmi
applicativi e all'utente, ossia senza che
vengano influenzati dall'operazione.
Organizzazione a “strati”
Ogni macchina virtuale è un insieme di
programmi che realizza delle funzionalità che
utilizzano i servizi forniti a livello inferiore.
Ogni macchina virtuale ha il compito di gestire
risorse specifiche di sistema regolandone l’uso
e mascherandone i limiti.
I meccanismi che garantiscono la correttezza
logica sono separati dalle politiche di gestione
(maggiore flessibilità).
ogni “strato” risolve un problema specifico
5
Organizzazione di un SO
mf
mf
Gerarchia di
“macchine virtuali”
La visione della
macchina virtuale a
livello n è quella
fornita dall’HW e
dagli strati del SO
fino all’ennesimo
(incluso)
I programmi del SO
e i programmi Utente
Programmi applicativi
hanno una visione LOGICA delle
risorse
hanno accesso a un insieme
ridotto di risorse;
possono utilizzare solo un
sottoinsieme delle istruzioni del
processore (esecuzione in
modalità utente);
non possono decidere
autonomamente quando e come
avere accesso alle risorse del
sistema (richiedono al S.O.
l’esecuzione di alcuni servizi);
Sistema operativo
ha una visione FISICA delle
risorse
ha accesso diretto a tutte
le risorse;
può utilizzare tutte le
istruzioni del processore
(esecuzione in modalità
supervisore);
stabilisce una politica di
gestione delle risorse
(modalità di gestione delle
richieste che riceve devono
essere soddisfatte);
6
mf
La “vita” di un SO
Fasi della vita del S.O., dall’accensione
allo spegnimento:
bootstrap (caricamento del nucleo
nella RAM)
funzionamento a regime
shutdown (salvataggio impostazioni e
registri di sistema)
Bootstrap
mf
Attivazione della corrente elettrica nei
circuiti → esecuzione di programmi scritti
nelle memorie ROM:
diagnostica : test componenti HW
caricamento S.O. : dalla memoria di massa (hard
disk) caricamento di una prima parte del S.O.
nella RAM, che gestisce poi il caricamento di
una seconda parte del S.O..
quando l’utente inizia a lavorare il S.O è già in
esecuzione
7
Shutdown
mf
Operazioni preliminari allo spegnimento
dell’elaboratore.
mf
Memorizzazione nella memoria di massa di
tutte le informazioni residenti su memorie
volatili (RAM e buffer di dispositivi
periferici).
Spegnimento senza shutdown: crash con
possibile perdita irreversibile di dati.
I livelli del S.O.
Applicazioni
Interfaccia del nucleo (chiamate di sistema)
NUCLEO (o kernel) (sempre caricato nella RAM)
Gestione
Gestione
Gestione
File
Gestione
CPU
RAM
System
I/O
processi
HW
8
mf
Si accede ai servizi del sistema
operativo tramite System Call
Esempio: gli 11 passi necessari per eseguire la
read (fd, buffer, nbytes)
mf
Alcuni esempi di system call: di Unix e
Win32 (Application Programming Interface)
9
Applicazioni
VB
C++
C#
J#
…
Common Language Specification
Interfaccia
del nucleo
(chiamate
di sistema)
User
Interface
Data and XML
Base Class Library
Visual Studio.NET
Web
Services
Common Language Runtime
NUCLEO (o kernel) (sempre caricato nella RAM)
HardWare
mf
Un salto nel passato: i SO e
perché si sono sviluppati
L’evoluzione dei sistemi operativi…
…è stata spinta dal progresso tecnologico dell’hardware
…ha
ha guidato il progresso tecnologico dell’hardware
Perché analizzare la storia dei sistemi operativi?
Perché permette di capire l’origine di certe soluzioni
presenti nei SO attuali
Perché è l’approccio migliore per capire come certe idee si
sono sviluppate
Perché alcune delle soluzioni più antiche sono ancora
utilizzate
10
mf
Un salto nel passato: gli antenati
dei SO
• Generazione ZERO Babbage (1792–1871)
– Macchina analitica (programmabile, meccanica) che non
aveva sistema operativo
– La prima programmatrice della storia è Lady Ada Lovelace
(figlia del poeta Lord Byron)
• Prima generazione 1945 - 1955
– valvole, tavole di commutazione, programmi “hardwired”
• Seconda generazione 1955 - 1965
– transistor, sistemi batch
• Terza generazione 1965 – 1980
– Circuiti integrati (IC), multiprogrammazione, time–sharing
• Quarta generazione 1980 – oggi
– personal computers, reti
mf
Generazione 0: Babbage…
Il primo calcolatore a programma memorizzato fu costruito da Charles
Babbage (1792-1871) e venne chiamato Difference Engine (1832).
Si tratta di un esempio notevolissimo di meccanica applicata (consiste di
circa 2000 parti e funziona ancora oggi).
Il modello rappresentato in basso a destra è stato realizzato nel 1991
11
mf
Generazione 0: … e Ada
La prima persona a concepire però una macchina capace di
computazionalità programmabile in senso lato fu Ada
Lovelace Byron (1815-1852), figlia di Lord Byron, la
quale lavorò con Babbage al progetto di una Analytical
Machine che nelle intenzioni doveva essere il successore
della Differential Machine,
Machine capace di più generali
applicazioni di calcolo.
Questa macchina non venne mai realizzata, ma a lady
Lovelace va dato credito per avere anticipato concetti quali
la programmabilità di una macchina e la generazione
automatica di musica (a lei è dedicato uno dei primi
linguaggi di programmazione per l’Intelligenza Artificiale:
ADA).
mf
12
mf
Generazione 1: 1945–1955
Come venivano costruiti?
Calcolatori a valvole e tavole di commutazione
Come venivano usati?
Solo calcoli numerici (calcolatori non elaboratori)
Un singolo gruppo di persone progettava, costruiva, programmava e
manuteneva il proprio computer
Come venivano programmati?
In linguaggio macchina
(stringhe di 0 e 1)
Programmazione su
tavole di commutazione
Nessun sistema operativo!
mf
La prima generazione dei SO …
ENIAC I Elaboratore digitale elettronico
(1944)
160 metri quadri
30 tonnellate
18.700 valvole
13
mf
… il primo SO “umano”
Veniva
programmato
muovendo
fisicamente i
connettori
nei contatti
mf
Generazione 1: 1945–1955
Principali problemi:
Scarsa affidabilità (guasti frequenti)
Rigidità nell’assegnazione dei ruoli
Non esiste il concetto di programmatore come entità
separata dal costruttore di computer e dall’utente
Utilizzazione lenta e complessa; l’operatore doveva…
1)
2)
3)
4)
5)
…caricare il programma da eseguire
…inserire i dati di input
…eseguire il programma
…attendere il risultato
…in caso di errore, ricominciare dal punto 1)
Tutto ciò a causa dell’assenza del SO
14
mf
.. ma la differenza di velocità dei
dispositivi…
La potenza di calcolo di una CPU misurata in MIPS (Million
Instructions Per Second) = numero di istruzioni eseguite in un
secondo da un microprocessore (dipende dall’Instruction set,
quindi è poco obiettivo)
CPU ns (nanosecondi) 1.000.000.000
DISCO ms (millisecondi) 1.000.000
STAMPANTE s (secondi) 1
Note
La velocità di un PC dipende anche dall’architettura interna (bus a 32,64,128
bit) e dalla velocità di trasferimento dati dalla memoria al microprocessore.
Un comando di un linguaggio di programmazione impiega più istruzioni per poter
essere eseguito e cambia da tipo di processore a tipo di processore
mf
.. A causa dei transistor
15
mf
Entra in gioco il concetto di JOB…
JOB = singola o insieme di attività legate
all’elaborazione o alle operazioni di I/O
Il programmatore…
• scrive (su carta) un programma in un
linguaggio di alto livello
• perfora una serie di schede con il
programma e il suo input
• consegna le schede ad un operatore
L’operatore…
• inserisce le schede di controllo scritte in
linguaggio apposito
• inserisce le schede del programma
• attende il risultato e lo consegna al
programmatore
mf
Una scheda perforata…
16
mf
mf
Una perforatrice di schede…
… poi il concetto di MONITOR
(verso la seconda generazione)
Esisteva un unico programma (MONITOR) caricato in memoria
che provvedeva alla gestione dei lavori ma il sistema operativo
era NON INTERATTIVO: l’operatore “UMANO” fa eseguire i job
UNO ALLA VOLTA
L’unica componente di sistema operativo erano le routine
per gestire l’I/O dei jobs
17
mf
mf
18
mf
La seconda generazione:
l’elaborazione batch
Nei primi sistemi batch (lotti) l’operatore:
– porta le schede al 1402 che trasferisce il
contenuto delle schede su nastro
– inserisce il nastro nel 1406 e automaticamente
viene preso dal 1401 che effettua la vera e propria
computazione
– inserisce il nastro su un altro 1403 che stampa i
risultati
Prime idee per aumentare efficienza:
• disaccoppiare l’ I/O lento dalla computazione
• far gestire la sequenzializzazione dei job da un
Monitor Residente
mf
Generazione 2: 1955–1965
Come venivano costruiti?
Introduzione dei transistor
Costruzione di macchine più affidabili ed economiche
Come venivano usati?
Gli elaboratori iniziano ad essere utilizzati per compiti diversi
Si crea un mercato, grazie alle dimensioni ed al prezzo ridotti
Avviene una separazione tra costruttori, operatori e
programmatori
19
Generazione 2: 1955–1965
mf
Come venivano programmati?
Linguaggi di “alto livello”: Assembly,
Assembly Fortran
Tramite schede perforate
FORTRAN
ASSEMBLY
e = (a+b)*(c+d)
mf
⇒
LOAD a, %r0
LOAD b, %r1
ADD %r0, %r1
LOAD c, %r2
LOAD d, %r3
ADD %r2, %r3
MULT %r1, %r3
STORE %r3, e
LINGUAGGIO MACCHINA
⇒
10000001101101011010101010101000
Generazione 2: 1955–1965
Primi rudimentali esempi di sistema operativo, detti anche
monitor residenti o sistemi batch,
batch “a infornata”:
Controllo iniziale al monitor
Il controllo viene ceduto al job corrente
Una volta terminato il job, il controllo ritorna al monitor
Il monitor residente è in
grado di eseguire una
sequenza di job, trasferendo
il controllo dall’uno all’altro in
successione
20
mf
Generazione 2: 1955–1965
Principale problema: molte risorse non utilizzate
Durante le operazioni di lettura schede/stampa, durante il
caricamento di un nuovo job, il processore resta inutilizzato
Parte della memoria resta inutilizzata
Primo miglioramento… ma non una soluzione
Caricamento di numerosi job su nastro (off–line)
Elaborazione (output su nastro)
Stampa del nastro di output (off–line)
mf
Nascono periferiche di I/O più
veloci e …
L’avvento dei dischi ha permesso di escludere i nastri: tecnica dello
SPOOLING (Simultaneous Peripheral Operation On-Line).
Obiettivo: utilizzare al massimo la CPU evitando i tempi morti
dovuti alla lentezza dell’I/O rispetto alla CPU
Con periferiche di
I/O più veloci si
arriva al concetto
di…
IBM 360
21
mf
… e nasce il concetto di
multiprogrammazione
Definizione di multi–programmazione: più
programmi utente caricati
contemporaneamente in memoria centrale
Scopo: Utilizzo del processore durante i periodi di I/O
di un job per eseguire altri job
Vantaggi:
Il processore non viene lasciato inattivo (idle) durante le
operazioni di I/O (molto lunghe)
La memoria viene utilizzata al meglio, caricando il
maggior numero di job possibili
Nota: per gestire la multi–programmazione, il SO deve
gestire un pool di job da eseguire, fra cui alternare il
processore
mf
La terza generazione: la
multiprogrammazione
I job (programmi) in esecuzione sono costituiti da
una sequenza di CPU burst alternati ad I/O burst
Burst di un programma
CPU burst
I/O burst
CPU burst
I/O burst
CPU burst
22
Esecuzione in un sistema multiprogrammato
Tempo
P1
P2
P3
La CPU viene assegnata a
turno ai vari programmi in
esecuzione:
quando
il
programma a cui è assegnata
la CPU chiede (al S.O.)
l’esecuzione di una operazione
di I/O, la CPU viene assegnata
ad un altro programma. Se il
livello di multiprogrammazione
è alto, la CPU non sarà mai
inutilizzata.
Indica chi è running
in ogni istante
Indica per chi lavora
il disco in ogni istante
Indica un processo in
attesa di iniziare I/O
Commutazione di contesto
(Context switch)
mf
Livello di multiprogrammazione e
utilizzazione della CPU
A: carico di tipo CPU-bound (i programmi richiedono poco I/O)
B: carico di tipo I/O-bound (i programmi richiedono molto I/O)
Livello di multiprogrammazione
simultaneamente in esecuzione.
=
numero
di
programmi
23
mf
La commutazione di contesto (o
context switch)
Il trasferimento della CPU da un programma
ad un altro si chiama Commutazione di
contesto (context switch): ad ogni evento di
questo tipo, il S.O. deve salvare lo stato del
programma (i registri della CPU) in esecuzione
e caricare lo stato salvato del programma
prescelto tra quelli in attesa della CPU.
mf
Generazione 3: 1965–1980
Come venivano costruiti?
Circuiti integrati
Come venivano usati?
Progressivamente sparisce la figura dell’operatore come
“interfaccia” degli utenti verso le macchine
utente = operatore
Come venivano programmati?
Linguaggi di “alto livello”: C, shell scripting
Editor testuali, editor grafici, compilatori
Accesso al sistema da terminali
Sistemi operativi interattivi, con multi–
multi–programmazione e
time–
time–sharing
24
mf
mf
Generazione 3: Multi–
programmazione
Generazione 3: Multi–
programmazione
Caratteristiche tecniche:
tecniche
Più job contemporaneamente in memoria
Una componente del SO, detta scheduler,
scheduler si preoccupa di
alternarli nell’uso della CPU
Quando un job richiede un’operazione di I/O, la CPU viene
assegnata ad un altro job
SO multi–
multi–programmati:
programmati
Routine di I/O fornite dal SO
Gestione della memoria:
memoria il sistema deve allocare la memoria
per i job presenti contemporaneamente
CPU scheduling:
scheduling il sistema deve scegliere tra i diversi job pronti
all’esecuzione
Allocazione delle risorse di I/O:
I/O il SO deve essere in grado di
allocare le risorse di I/O fra diversi processi
25
Un sistema Multiprogrammato:
il Time–sharing
mf
Definizione di time–
time–sharing:
sharing
La risorsa CPU viene suddivisa in quanti temporali; allo scadere
di un quanto, il job corrente viene interrotto e l’esecuzione passa
ad un altro job, anche in assenza di richieste di I/O
I context switch avvengono così frequentemente che più utenti
possono interagire con i programmi in esecuzione
SO multiprogrammato funziona a time–
time–sharing:
sharing
Gestione della memoria:
memoria il numero di processi utente può essere
molto elevato; si rende necessario l’uso della memoria virtuale
CPU scheduling:
scheduling deve essere di tipo time–
time–sliced, ovvero
sospendere periodicamente l’esecuzione di un programma a
favore di un altro
La presenza di più utenti rende necessari meccanismi di
protezione (e.g. protezione del file system, della memoria, etc.)
Multiprogrammazione: il Time Sharing
mf
Tempo
P1
P2
P1 termina
P3
Obiettivo: garantire tempi di
“reazione”
rapidi
ai
programmi interattivi.
La CPU viene assegnata a
turno ai vari programmi in
esecuzione (un time-slice
ciascuno). Un dispositivo
hardware, il timer, invia dei
segnali (interrupt) alla CPU
per garantire che ciascun
programma non occupi mai
P3 termina la CPU più a lungo di un time
P2 termina
slice.
Indica chi è running
in ogni istante
Timer
26
mf
Scelta della durata del quanto di
tempo (time slice)
Per ottenere risposte rapide ai comandi degli utenti
interattivi conviene impostare il time slice (o quanto di
tempo) ad un valore piuttosto piccolo, tuttavia time slice
troppo brevi causano un aumento dei costi (anche detti
overhead) dovuti ai numerosi context switch.
mf
La multiprogrammazione: vantaggi
e problemi
Vantaggi: mentre un programma deve attendere la fine di una
operazione di I/O, un altro puo’ essere eseguito, quindi la CPU
viene sfruttata meglio.
Problemi: Bisogna far convivere diversi programmi, appartenenti
anche ad utenti diversi, senza che interferiscano. Occorre gestire
in modo appropriato le risorse (CPU e Memoria, in primo luogo) e
assicurare una esecuzione protetta.
IBM 370  VAX UNIVAC
27
mf
Generazione 4: 1980–oggi
I personal computer sono dedicati ad utenti singoli:
L’obiettivo primario per i SO diventa la facilità d’uso;
diminuisce l’interesse per la gestione ottima delle risorse
I SO per PC sono in generale più semplici; non implementano
la protezione (almeno fino all’avvento di Internet)
Creazione di interfacce grafiche user–
user–friendly
Tuttavia, tecnologie sviluppate per SO più complessi possono
comunque essere adottate
mf
28
mf
Le unità di misura…
Dove opera il Sistema Operativo
(Architettura Logica Hardware)
CPU
Cache L1
Cache L2
RAM
BIOS
B U S Linee dati, indirizzi e controllo
Motherboard
Memorie di Massa
• Hard Disk
• Floppy
• CD-ROM - DVD
• Tape
Controllers
Dispositivi di I/O
• Tastiera
• Mouse
• Schermo
• Stampante
• Valore da trasferire
• Dove trasferirlo
• Direzione di
trasferimento, unità
coinvolte etc.
Schede LAN
(Local Area Network)
29
La struttura del
sistema operativo
mf
La gestione
dei processi
(nucleo)
Modalità utente e
modalità supervisore
mf
Stato utente :
modalità di funzionamento del computer
che permette l’accesso solo a un numero
limitato di risorse
es : un sottoinsieme delle istruzioni
assembler (non si può accedere alle istruzioni
che istruiscono le interfacce di I/O), una
sola parte della RAM etc.
Stato supervisore :
modalità che permette l’accesso a tutte
le risorse
30
Modalità utente e modalità
supervisore
mf
Eseguiti
in stato
utente
Applicazioni
Gestore del
processore
Interprete di comandi
(shell)
Gestore della
memoria
Gestore delle
periferiche
Hw
mf
Interfaccia grafica
(desktop)
File system
Eseguiti
in stato
supervisore
Modalità utente e modalità
supervisore
I programmi che girano in stato utente
richiedono servizi al SO tramite invocazione
di sottoprogrammi speciali
system call o chiamate di sistema
Il sistema operativo decide come e quando
effettuare il servizio
Il sistema operativo può interrompere un
programma che gira in stato utente per
eseguire altri programmi o per effettuare
operazioni di ‘gestione’ della macchina
31
Esecuzione di un programma
mf
Quando un programma utente è stato
attivato, il processore esegue una dopo
l’altra le istruzioni assembler che lo
compongono
Un programma in esecuzione viene detto
‘processo’
Un processo utilizza le risorse fornite dal
sistema di elaborazione per assolvere ai
propri compiti
Programmi e Processi
mf
Processo: programma in esecuzione
programma (entità statica): sequenza di
istruzioni
processo (entità dinamica): insieme di
informazioni che caratterizzano la particolare
esecuzione del programma
(1 programma genera 1 o più processi)
32
Programma (wordprocessor) che
genera più processi
mf
I Processi ed il loro
contesto
mf
Connotazione temporale: il processo
rappresenta lo stato di avanzamento del
programma istante per istante.
Il Contesto (stato) del processo all’istante
t è rappresentato da:
istruzione da eseguire (indirizzo in RAM: PC, IR)
contenuto dei registri dati del processore
….
33
mf
Dove rimane l’informazione su
un processo?
Il S.O. mantiene l’informazione relativa a
tutti i processi attivi (non terminati) nella
tabella dei processi (PCB, Process Control
Block) .
Per ogni processo il PCB contiene un certo
numero di informazioni.
La tabella dei processi è in ogni istante
caricata interamente in RAM.
mf
La tabella dei processi: PCB
Il PCB esiste per ogni processo attivo:
PID: Process Identifier
Stato corrente (Execute, Ready, Blocked)
Program Counter
Contenuto dei registri
Priorità
…...
34
mf
mf
PCB più in dettaglio…
Commutazione del contesto
Cambiamento di contesto
- Il processo A è in esecuzione
- A viene sostituito dal processo B
- tutti i dati del processo A, in
particolare il Program Counter, vengono
salvati nel PCB
Ripristino del contesto
Quando il processo A torna in esecuzione
riprende dai dati precedentemente salvati
nel PCB
35
Tipologie di Processi
mf
Processo utente: generato
dall’esecuzione di un applicativo utente.
Processo di sistema: generato dal SW
di sistema (Sistema Operativo,
utilities, ecc.).
mf
Terminazione di un processo
Un processo termina :
Quando esegue una istruzione assembler di
terminazione
Quando effettua una operazione illecita (es. accesso
a memoria privata di altri processi)(fatal error)
Quando c’è un errore di programmazione che non lo
permette di proseguire (es. overflow, etc)
Killed da un altro processo più “importante”
In tutti questi casi il processore ricomincia
automaticamente ad eseguire il processo
Scheduler del sistema operativo ad un indirizzo
prefissato
36
mf
Esecuzione ed interruzione
di un processo
Problema : Come fa il Sistema
Operativo a riprendere il controllo del
processore dopo l’attivazione di un
processo?
Attraverso
Terminazione del processo (normale o
erronea)
Interruzione dall’”esterno”
mf
L’interruzione di un
processo
Il sistema operativo può bloccare
un processo in un qualsiasi istante
della sua esecuzione per
effettuare qualche operazione di
gestione della macchina
Questo avviene attraverso il
meccanismo hardware delle
interruzioni
37
mf
Gli interrupt
Come funzionano le interruzioni ?
ogni periferica può “richiedere attenzione”
inviando un segnale di interruzione usando
le linee di controllo del bus
alla fine dell’esecuzione di ogni istruzione
assembler il processore controlla la
presenza di una interruzione
se è presente il controllo passa
automaticamente al sistema operativo
S.O : Classificazione
mf
Classificazione dei S.O. in base alla
modalità di gestione dei processi:
mono-tasking
multi-tasking:
multi-tasking ‘semplice’
time-sharing
time-sharing con priorità
real-time
38
S.O. mono-tasking
mf
Esecuzione sequenziale dei processi:
non si interrompe l’esecuzione di un
processo per assegnare la CPU a un altro
nessuna interazione con l’utente
unica funzione del S.O.: concatenazione
automatica dell’esecuzione di più processi
Esempi:
Sistemi batch (lotti di schede perforate, ‘50)
MS-DOS (‘81)
S.O. mono-tasking (2)
mf
Diagramma temporale:
il
il
il
il
Job i carica i dati di input
Job i effettua la computazione
Job i scarica i dati di output
S.O. avvia automaticamente il Job successivo
I/O Job i
Esecuzione Job i
S.O.
Job ≅ processo
Job 3
Job 2
Job 1
Tempo
39
Il gestore del processore
mf
Nei computer attuali, tutti i programmi che
compongono il SO ed i programmi applicativi
‘avviati’ sono attivi contemporaneamente sul
calcolatore (multiprogrammazione)
es : Windows 2000 + Word + cd player ...
Il gestore del processore si preoccupa di far
condividere il processore a tutti i programmi
attivi in modo corretto
mf
lo scopo è dare l’impressione che ognuno abbia il
suo processore dedicato
S.O. multi-tasking
Esecuzione “contemporanea” di più
processi.
Multi-tasking ≅ Multi-programmazione
(Multi-programmazione: molti programmi
UTENTE risiedono contemporaneamente nella
RAM)
40
NUCLEO = Gestione dei
processi e processori
mf
Gestione del/i processore/i:
•
•
•
mf
in un certo istante la CPU è assegnata
ad un solo programma;
assegnazione nel tempo della CPU ai vari
programmi in attesa di essere eseguiti;
gestione della cooperazione tra diverse
CPU
Nucleo e gestione dei
processi
Il nucleo (Kernel) del sistema operativo è responsabile
delle seguenti attività riguardanti la gestione dei
processi:
creazione e terminazione dei processi
sospensione e riattivazione dei processi
gestione dei deadlock
comunicazione tra processi
sincronizzazione tra processi
Il gestore dei processi “realizza”
realizza” una macchina (o
processore) virtuale in cui ciascun programma opera
come se avesse a disposizione un’
un’unità
unità di elaborazione
dedicata
41
mf
NUCLEO = Gestione dei
processi e processori
Gestione dei processi:
gestione dell’avvicendamento dei
processi in esecuzione sul processore (o
sui processori).
Gestione dei processori:
gestione dell’assegnazione dei
processori ai processi.
mf
Compiti del Nucleo (Kernel)
Nei sistemi attuali sono in esecuzione più
processi ‘contemporaneamente’.
La CPU esegue comunque una sola
istruzione per volta.
Il S.O. gestisce l’avvicendamento dei
processi in esecuzione: assegna la CPU ai
vari processi istante dopo istante.
Scheduler: parte del S.O. che si occupa
della gestione dei processi e dei processori
42
Obiettivi dello scheduling
mf
Massimizzare l’uso della CPU.
Massimizzare il numero di processi
eseguiti nell’unità di tempo.
Minimizzare il tempo di risposta.
Stati di avanzamento di un
processo
mf
Possibili stati di un processo:
execute (in esecuzione): la CPU è assegnata al
processo
blocked (bloccato): il processo è in attesa di
un evento (completamento di un’operazione di
I/O,…)
ready (pronto): il processo è eseguibile, ma la
CPU è assegnata a un altro processo
43
mf
Ciclo di vita di un processo
Ciclo di vita di un processo (dall’inizio alla
terminazione): alternarsi di periodi in stato
di execute, ready, blocked
Terminazione
Execute
Inizio
mf
Ready
Blocked
Ciclo di vita dei processi
alternarsi di periodi in stato di execute,
ready, blocked
nella coda di scheduling
execute
nascita
ready
tempo scaduto
evento
termine
attesa evento (es. I/O)
blocked
park
44
mf
Realizzazione di uno scheduler
dei processi
L’insieme dei processi in stato ready sono
gestiti mediante una struttura dati coda
in modalità FIFO (First In First Out).
Terminazione
Execute
Inizio
Ready
A
Blocked
Coda
Ordinata in base
all’ordine di arrivo.
mf
Scheduler code a priorità
45
mf
Stati di avanzamento di un
processo
Ciclo di vita di un processo (dall’inizio
alla terminazione): alternarsi di
periodi in stato di execute, ready,
blocked
Terminazione
Scheduling : la CPU
viene assegnata al
processo A (ready).
Execute
A
A
Inizio
mf
A
Ready
Blocked
Stati di avanzamento di un
processo
Terminazione
2. B, pronto, va
in esecuzione
1.Il processo A
è in attesa di
un evento e
cambia stato
Execute
A
A
Inizio
B
Ready
B
A
Blocked
46
Tipologie delle politiche di
scheduling
mf
Le politiche di scheduling sono
raggruppate in due grandi categorie:
essere
Preemptive:
Preemptive l’uso della CPU da parte di un
processo può essere interrotto in un qualsiasi
momento, e la risorsa concessa ad altro
processo
Non preemptive:
preemptive una volta che un processo ha
ottenuto l’uso della CPU, è unico proprietario
della risorsa finché non ne decide il rilascio
Sistemi mono–tasking
mf
I SO che gestiscono l’esecuzione di un solo programma per
volta (un solo processo) sono detti mono–
mono–tasking
Non è possibile sospendere un processo per assegnare la
CPU ad un altro
Sono storicamente i primi SO (es. Sistemi Batch e MS–DOS)
Tempo di utilizzo della CPU
Tempo di attesa di eventi
esterni
C
B
A
t
T
47
Sistemi Multi–tasking
(semplice)
mf
I SO che permettono l’esecuzione contemporanea di più
programmi sono detti multi–
multi–tasking o multi–
multi–programmati
Un programma può essere interrotto e la CPU passata a un
altro programma
Tempo di utilizzo della CPU
C
Tempo di attesa di eventi
esterni
B
A
t
Tmulti-tasking Tmono-tasking
mf
Multi-tasking ‘semplice’
Obiettivi: sfruttare l’attesa per il compimento
di operazioni di I/O (anche l’80-90% del tempo di
elaborazione)
Mentre il processo A attende per un’operaz. di
I/O viene mandato in esecuzione il processo B.
C
B
A
t
Tmulti-tasking Tmono-tasking
48
Sistemi time–sharing
mf
Un’evoluzione dei sistemi multi–
tasking sono i sistemi time–
sharing
Ogni processo viene eseguito
ciclicamente per piccoli quanti di
tempo
0.75”
Se la velocità del processore è
sufficientemente elevata si ha
l’impressione di un’evoluzione
parallela dei processi
0.00”
D
A
0.25”
C
B
0.50”
Time–sharing: diagramma
temporale
mf
Processo
Tempo di CPU
A
3
B
2
C
4
D
3
D
C
B
A
t
49
mf
Esempio di real time
(tempo reale)
Obiettivo: controllare processi in cui il
tempo di risposta è un parametro critico.
Esempi: controllo reattori nucleari, missili,
impianto di riscaldamento con termostato,
….
Proc. C
Proc. B
Proc. A
Tempo
Esempio di real time
mf
Diagramma temporale:
il processo X a priorità più alta effettua la
computazione
quando il processo X deve effettuare un’operazione
di I/O, parte l’esecuzione del processo che ha
priorità più alta tra i pronti
Esempio con tre processi:
Bloccato
Pronto
Esecuzione
Priorità: A > B> C
Proc. C
Proc. B
Proc. A
Tempo
50
Esempio di real time
mf
Non suddivisione del tempo in quanti.
Assegnazione di priorità statica ai
processi (alle attività critiche valori alti
di priorità).
I sistemi real time non sono
necessariamente veloci o interattivi!
Proc. C
Proc. B
Proc. A
Tempo
mf
51
mf
mf
La struttura del
sistema operativo
Il gestore
della
memoria
52
Gerarchie di memorie
CPU
ALU Registri
1 nsec
10 unità x 32/64b
+ velocità
+ costo
— taglia
2 nsec
Cache L1
100 Kb
10 nsec
Cache L2
1Mb
80 nsec
RAM
1Gb
— velocità
200 Gb
Dischi
8 msec
— costo
+ taglia
Nastri – Dischi backup
120 sec
100 Gb – 1Tb
Una marcia in più: la memoria cache…
mf
CPU
CACHE
L1
CACHE L2
trasferimento dati
MEMORIA RAM
Si tratta di una memoria temporanea veloce che si pone tra la
RAM e la CPU
Obiettivo: Fornire molta memoria al costo delle tecnologie
più economiche e con le prestazioni delle tecnologie più
costose.
53
… per anticipare i bisogni…
mf
la cache permette di trovare quanto
richiesto molto più velocemente
Il 1° livello: la cache che non si vede…
mf
CPU
Clock
input
B
U
S
output
Cache
L1
Registri
Data Path
A
L
U
istruzioni
condizioni
comandi
Control Unit
54
mf
La Memoria Cache
Copio blocchi di dati tra memorie principale e memoria
cache quando il processore li richiede, per anticipare future
richieste
Memoria principale
Blocco 0
16 bytes
Blocco 1
Blocco 2
istruzione
corrente
Blocco 0
16 bytes
Blocco 1
Blocco 2
Blocco 16
Blocco 228-1
mf
memoria cache
di 16x4 bytes
Blocco 3
istruzione
corrente
Il principio di località spaziale e
temporale
località spaziale:
quando un programma fa riferimento ad un elemento è molto
probabile che entro breve tempo richieda elementi attigui
a quello attuale
- scansioni di strutture dati come matrici e vettori
- esecuzione di codice sequenziale
località temporale:
quando un programma fa riferimento ad un elemento è molto
probabile che entro breve tempo chieda di accedere
nuovamente allo stesso elemento
- esecuzione di cicli
- esecuzione sottoprogrammi
- strutture dati tipo stack
- variabili indici
55
mf
Esempio di località
int mat[1024][1024];
max=mat[0][0];
for(i=0; i<1024; i++)
for(j=0; j<1024; j++)
if(max<mat[i][j])
max = mat[i][j];
Località temporale
Continuo ad usare le variabili i, j
(poiché sono in un ciclo)
Località spaziale
Dopo mat[10][101]
uso mat[10][102]
Funzionamento della cache
mf
cache line
CPU
blocco di
parole
contigue
Cache L2
RAM
La filosofia della gerarchia della memoria consiste nel
portare più vicino alla CPU le informazioni più utilizzate
dalla porzione di programma in esecuzione così che nella
maggior parte dei casi il tempo di accesso coincide con quello
delle memorie più rapide.
56
Funzionamento della cache
Miss
x è in
cache?
Cerca una
cache line
Non trovata
libera
Trovata
Hit
Leggi/scrivi
x in cache
Carica un blocco di
parole contenente x da
RAM alla cache line
trovata/liberata
Scegli una cache line
e, se modificata,
riscrivila in RAM
Sfruttamento della Località:
Località Temporale → accessi alla stessa parola in cache
Località Spaziale
→ accessi a parole consecutive nella
stessa cache line
Le memorie oggi in commercio
mf
SRAM (Static Random Access Memory )
–
tempo di accesso 1÷10 ns
–
utilizzata per cache L1/L2
DDR/SDRAM ((Synchronous) Dynamic RAM )
–
tempo di accesso 50÷100 ns
–
utilizzate per la memoria principale (RAM)
–
costo 5÷10 volte inferiore alle SRAM
57
Riepilogo delle memorie e dei tempi
mf
Processor
Control
Speed (ns): 1
Size (bytes): 100b
mf
On-Chip
Cache
Registers
Datapath
Second
Level
Cache
(SRAM)
Main
Memory
(DRAM
DDR)
10
100
100Kb
512 Mb
Secondary
Storage
(Disk)
Tertiary
Storage
(Tape)
10,000,000 10,000,000,000
(10 ms)
(10 s)
160Gb
1Tb
La gestione della memoria
principale
La memoria principale…
…è un “array” di byte indirizzabili singolarmente
…è un deposito di dati facilmente accessibile e condiviso tra la
CPU ed i dispositivi di I/O
Il SO è responsabile delle seguenti attività riguardanti
la gestione della memoria principale:
Tenere traccia di quali parti della memoria sono usate e da chi
Decidere quali processi caricare quando diventa disponibile
spazio in memoria
Allocare e deallocare lo spazio di memoria quando necessario
Il gestore di memoria “realizza” una macchina virtuale
in cui ciascun programma opera come se avesse a
disposizione una memoria dedicata
58
mf
La gestione della memoria
principale
L’organizzazione e la gestione della memoria centrale
è uno degli aspetti più critici nel disegno di un SO
Il gestore della memoria è quel modulo del SO
incaricato di assegnare la memoria ai task (per
eseguire un task è necessario che il suo codice sia
caricato in memoria)
La complessità del gestore della memoria dipende dal
tipo di SO
Nei SO multi–tasking, più programmi possono essere
caricati contemporaneamente in memoria
mf
I compiti del gestore della
memoria principale
Costruire gli indirizzi dei programmi e
dei dati che sono caricati in memoria
2. Gestire la multiprogrammazione e
l’interazione dei processi (come è
organizzata la memoria)
3. Realizzare una memoria virtuale (RAM
+ HD) per aumentare la capacità
1.
59
Compito 1: Gli indirizzi
mf
Il problema fondamentale da risolvere è il
passaggio da programma eseguibile (su
memoria di massa) a processo in
esecuzione (in memoria di lavoro RAM)
Process Control Block
Programma
Processo
Dati
Dati
User Stack
Memoria
condivisa
Da indirizzi Logici a indirizzi Fisici:
la RILOCAZIONE
mf
La CPU esegue programmi che elaborano
insiemi di dati in base ad una sequenza di
istruzioni
La CPU utilizza riferimenti generali in
memoria per dati e istruzioni, cioè gli
indirizzi logici
Gli indirizzi logici vengono ricalcolati nei
corrispondenti indirizzi fisici nei vari passi:
Compilazione
Linking
Caricamento
Esecuzione
60
mf
RILOCAZIONE: da Indirizzi logici a
indirizzi fisici
Un indirizzo è detto indirizzo logico o
virtuale perché ancora non fa
riferimento ad un indirizzo reale sulla
RAM
Un indirizzo logico viene fissato (binding)
durante la compilazione/linking o durante
il caricamento del programma
L'insieme degli indirizzi logici generati da
un programma è detto spazio di
indirizzamento logico
mf
RILOCAZIONE: da Indirizzi logici a
indirizzi fisici
Un indirizzo presentato alla memoria per il
trasferimento di un valore è detto indirizzo
fisico
Durante l'esecuzione, l'associazione tra
indirizzi logici e fisici è realizzata da un
dispositivo hardware dedicato
Memory
Management
Unit (MMU)
61
mf
Chi fa la RILOCAZIONE:
Funzionamento della MMU
Con la MMU (Memory Management Unit)
l'utente non vede mai gli indirizzi fisici,
ma sempre e solo quelli logici
MMU
Indirizzo
logico
CPU
Registro di
rilocazione
Indirizzo
fisico
1A030
1A376
346
MEMORIA
+
Sistema operativo e processi utente
mf
Il sistema operativo, in genere risiede nella
parte bassa dello spazio di indirizzamento
Gli spazi di indirizzamento dei processi sono
delimitati tramite
Un registro di rilocazione
Un registro limite
Registro
Limite
Memoria
Registro di
Rilocazione
(indirizzo base)
Processo 2
CPU
Indirizzo
logico
si
<
no
+
Indirizzo
fisico
Processo 1
Processo 3
S.O.
62
Sistema operativo e processi utente
mf
Poiché in memoria devono coesistere
Il sistema operativo
I processi utente
Ciò comporta
Condivisione della memoria
Separazione degli spazi di indirizzamento
mf
La memoria è logicamente suddivisa in un'area di
sistema e una per i processi utente
I differenti spazi di indirizzamento è bene che siano
separati, in modo da non permettere ad un processo
utente di corrompere il sistema operativo o
addirittura bloccare il sistema
Lo Spazio di indirizzamento
di un processo
I 3 segmenti:
il codice
dati (statici e
dinamici)
stack o
chiamate delle
librerie
63
I registri “base” e “limite”
di un programma
mf
indirizzo base
addizionatore
PC
+
+
(contatore istruzione
corrente programma)
Indirizzo (alla memoria)
>
confrontatore
Fault (accesso oltre il limite)
registro limite
Due registri: base e limite
base: indirizzo iniziale del programma
limite: ampiezza spazio indirizzi
Indirizzo fisico = indirizzo logico + registro base
Errore se indirizzo logico > registro limite
Come funzionano i registri base e limite
mf
I registri base e limite sono gestiti dal SO
Con due coppie di registri è possibile dividere il segmento
del codice dai dati
64
mf
Quando viene fatta la
Rilocazione: Tipologie
Ci sono 3 tipologie di rilocazione:
Assoluta
Statica
Dinamica
mf
La Rilocazione ASSOLUTA
In compilazione vengono generati solo
indirizzi con riferimento a dove
esattamente il codice dovrà risiedere in
memoria durante l'esecuzione
tipo gli eseguibili .COM del DOS
Codice non rilocabile e non può essere
spostato all’interno della RAM
Non adatto alla multiprogrammazione (dove i
processi si spostano all’interno della
memoria)
65
La rilocazione ASSOLUTA del
DOS (monoprogrammazione)
mf
0xffff
La memoria viene
divisa tra il SO e
l’unico processo
utente in esecuzione
Il SO può essere:
Device driver
in ROM
Programma
utente
Programma
utente
Programma
utente
0
Sistema
operativo
in RAM
Sistema
operativo
in RAM
nella RAM (Random Access Memory) in
memoria bassa
nella ROM (Read Only Memory) in memoria
alta
i driver di periferica nella ROM e il resto del
SO nella RAM
mf
Sistema
operativo
in ROM
La Rilocazione STATICA
In compilazione gli indirizzi fanno riferimento
ad un indirizzo base non specificato. Verrà
fissato dal loader durante il caricamento in
memoria centrale
tipo gli eseguibili .EXE di DOS/Windows 9x
Proc. Control Block
È un codice in
parte rilocabile:
occorre
ricalcolare tutti
gli indirizzi
Programma
Processo
Loader
Dati
1
76
A3
Dati
User Stack
Memoria
condivisa
66
Esempio di Rilocazione statica
mf
Quando un programma viene linkato, il
linker deve conoscere l'indirizzo di
memoria corrispondente all'inizio del
programma
Memoria
Libreria
Modulo 1
Linker
Processo
Eseguibile
Modulo 2
Modulo 3
mf
Processo
Loader
S.O.
La Rilocazione DINAMICA
Il codice rilocabile contiene solo riferimenti
relativi a se stesso; può essere spostato
durante l'esecuzione
tipo gli eseguibili di Linux/Windows
B
B
A viene spostato per
far posto anche a C
A
A
C
SO
SO
67
Rilocazione DINAMICA e caricamento
parziale del codice
mf
Con la Rilocazione Dinamica è possibile
effettuare il Linking dinamico del
codice
Il concetto base è che una libreria
di funzioni viene caricata solo
quando ne e' richiesta
l'esecuzione.
Esempio: le librerie .DLL in Windows
Rilocazione DINAMICA e caricamento
parziale del codice
mf
Il codice compilato contiene solo uno stub
Stub: parte di codice che permette al compilatore di
generare la chiamata corretta ad una funzione
esterna, gestita dal sistema operativo
Al primo riferimento alla funzione, il codice
nello stub controlla la disponibilità della
libreria ed in caso ne richiede il caricamento al
sistema operativo
Per i riferimenti successivi, la libreria è
disponibile e la chiamata alle sue funzioni è
immediata
68
Esempio di caricamento di una DLL
(Dynamic Link Library)
Memoria
Libreria
Modulo 1
Linker
Processo
Eseguibile
Modulo 2
Modulo 3
I sottoprogrammi non
vengono caricati
fino a che non
vengono chiamati.
Processo
Loader
S.O.
Librerie DLL
Memoria
Si ha un miglior impiego della
memoria: i sottoprogrammi che
non utilizzati non vengono mai
caricati.
Utile quando si richiedono
grandi quantità di codice per
gestire situazioni che
avvengono raramente.
Modulo 1
Linker
Parte dinamica
Processo
Modulo 2
Modulo 3
Eseguibile
Processo
Loader
S.O.
mf
Compito 2: Organizzazione della
memorie e multiprogrammazione
Come organizzare (suddividere) la memoria
per poter gestire la presenza di più
processi contemporaneamente
(multiprogrammazione)?
C
Organizzazione lineare
A pagine (Paginazione)
A
A segmenti (Segmentazione)
B
S.O.
69
1 - Organizzazione lineare
mf
(o contigua o a partizione unica)
Indirizzo logico corrisponde
all’indirizzo fisico
Unica tecnica di rilocazione:
ASSOLUTA
Ha il grosso problema della
FRAMMENTAZIONE
C
A
B
S.O.
mf
2 - Organizzazione a pagine
(PAGINAZIONE)
Passo successivo: rinunciare alla non
contiguità degli indirizzi logici (allocare
la memoria fisica ai processi ovunque
essa sia disponibile.)
La memoria è divisa in PAGINE tutte
della stessa dimensione chiamati
frame (la dimensione è una
potenza di 2 compresa fra 512 byte e
8192 byte)
4 Kb
4 Kb
4 Kb
4 Kb
4 Kb
.
.
S.O.
70
mf
Cosa occorre per la
PAGINAZIONE
Si deve tenere traccia di tutti i
frame liberi.
Per eseguire un programma con
dimensione di n pagine, è necessario
trovare n frame liberi prima di
caricare il programma.
Si impiega una tabella delle pagine per
tradurre gli indirizzi logici negli
indirizzi fisici.
Si ha solo frammentazione interna
(relativa all’ultimo frame non
completamente occupato).
4 Kb
4 Kb
4 Kb
4 Kb
4 Kb
.
.
S.O.
Come funziona la paginazione
mf
Ogni processo ha la tabella delle pagine
da lui occupate
La tabella delle pagine risiede in memoria
centrale (MMU).
Il calcolo dell’indirizzo fisico è dato da
n°pagina + offset (spostamento)
interno della pagina
71
mf
Esempio pratico di calcolo degli
indirizzi
L’indirizzo generato dalla CPU viene suddiviso in:
Numero di pagina (p) – impiegato come indice in una
tabella di pagine che contiene l’indirizzo di base di
ciascuna pagina nella memoria fisica.
Offset nella pagina (d) – viene combinato con l’indirizzo
di base per definire l’indirizzo fisico di memoria che
viene inviato all’unità di memoria.
mf
Passo ulteriore: NON vedere la memoria come
ad un array lineare di byte, ma un insieme di
BLOCCHI o SEGMENTI in quanto un
programma è una collezione di segmenti logici 64 Kb
3 - Organizzazione a segmenti
(SEGMENTAZIONE)
programma principale (main),
procedure o funzioni,
librerie dinamiche
variabili logiche, variabili globali,
stack
tabella dei simboli, matrici,…
La memoria è divisa in
SEGMENTI di dimensione diversa
64 Kb
64 Kb
32 Kb
32 Kb
128 Kb
S.O.
72
Vista logica della segmentazione
mf
1
4
1
main
2
procedura
3
DLL
4
procedura
2
3
Spazio del programma
dell’utente
Spazio fisico di memoria
Architettura della segmentazione
mf
L’indirizzo logico è costituito da due
elementi:
<numerosegmento, offset>
Tabella dei segmenti – mappa lo spazio degli
indirizzi bi-dimensionale (visto dall’utente);
ciascun elemento della tabella contiene:
iniziale: contiene l’indirizzo fisico di partenza
dello spazio di memoria in cui risiedono i
segmenti.
offset: indica la lunghezza del segmento.
73
Come funziona la segmentazione
mf
Il calcolo
dell’indirizzo
fisico è dato da
segmento +
offset
(spostamento)
interno del
segmento
mf
Caratteristiche della
segmentazione
Rilocazione: dato che i segmenti variano di
dimensione, l’allocazione della memoria è
dinamica, con la tabella dei segmenti e con
i relativi problemi
Condivisione: è possibile avere segmenti
condivisi, puntando allo stesso numero di
segmento.
Allocazione: si ha frammentazione esterna
74
Frammentazione esterna e
hole (buchi)
mf
Un buco (hole) è un blocco di memoria
disponibile
buchi di varie dimensioni sono sparsi
nella memoria.
Quando viene caricato un processo, gli
viene allocata la memoria di un buco
grande abbastanza da contenere il
processo.
Il SO conserva informazioni su:
a) Partizioni allocate
b) Partizioni libere (buchi)
S.O.
Spazio fisico di memoria
mf
Problemi del gestore della
memoria
Come soddisfare una richiesta di dimensione n a
partire da un insieme di buchi?
In ogni momento è presente un insieme di buchi di
diverse dimensioni sparsi per la memoria.
Sist.op.
Sist.op.
?
75
mf
Strategie per l’allocazione dinamica
Sist.op.
della memoria
First–fit: Si alloca il primo buco grande
abbastanza.
Best–fit: Si alloca il più piccolo buco che
possa contenere il processo. E’ necessario
scandire tutta la lista dei buchi. Si
produce il più piccolo buco residuo.
Worst–fit: Si alloca il più grande buco. E’
ancora necessario ricercare su tutta la
lista. Si produce il più grande buco residuo.
First-fit e best-fit sono meglio di worst-fit in termini di
velocità e impiego di memoria.
mf
Compito 3: La memoria Virtuale
Spesso la memoria non è sufficiente per
contenere completamente tutto il codice dei
processi
Si può simulare una memoria più grande
(VIRTUALE) tenendo nella memoria di sistema
(RAM) solo le parti di codice e dati che servono in
quel momento
I dati e le parti di codice relativi a programmi non
in esecuzione possono essere tolti dalla memoria
centrale e “parcheggiati” su disco nella
cosiddetta area di swap
E’ necessario permettere lo spostamento
(swapping) delle pagine.
76
mf
mf
Che cosa è lo swapping
Memoria virtuale Cache sul disco
(ma molto più lenta)
Con questo meccanismo il S.O. realizza
la memoria virtuale che permette di
caricare ed eseguire programmi (o
insiemi di programmi) che occupano più
spazio di quello disponibile in RAM
(quello che non ci sta in RAM viene
mantenuto su disco, e portato in RAM
solo quando serve).
In ogni caso bisogna decidere:
•dove allocare i blocchi
•come identificarli
•chi rimpiazzare se manca spazio
77
mf
mf
Gli swapping dei S.O.
Funzionamento logico della
memoria virtuale
Memoria
0000x
Programma AA-1
Programma BB-1
Programma D
Swap
Programma AA-2
Programma AA-3
Programma BB-2
78
Funzionamento logico della
memoria virtuale
mf
Memoria
0000x
È su disco:
è un
casino…
Programma AA-2
Programma BB-1
Programma D
Swap
Programma AA-1
Programma AA-3
Programma BB-2
Caricare solo su richiesta…
mf
Si porta una pagina in memoria solo quando
è richiesta.
Viene impiegata meno memoria
Si possono gestire più utenti
La risposta è più lenta…
Una pagina è richiesta ⇒ si fa un
riferimento alla pagina
pagina già in memoria ⇒ tutto OK
pagina non in memoria ⇒ si porta in memoria
79
mf
Si associa un bit di validità
a ciascun elemento della
tabella delle pagine (1 ⇒ in
memoria, 0 ⇒ non in
memoria).
Durante la traduzione
dell’indirizzo, se la pagina
cercata ha il bit di validità
0 ⇒ si ha un page fault.
mf
Per vedere se una pagina è presente
in memoria oppure no: il bit di validità
Frame #
Bit di validità
1
1
1
1
0
M
0
0
Tabella pagine
Cosa succede al Page Fault
Il SO seleziona un frame vuoto della
memoria.
Sposta la pagina nel frame.
Aggiorna le tabelle (bit di validità = 1).
Viene riavviata l’istruzione che era stata
interrotta.
80
A volte occorre sostituire
delle pagine
mf
Se in memoria non c’è posto, occorre fare
la sostituzione di una pagina
Con un algoritmo si trova una pagina in
memoria che non sia utilizzata (criteri
temporali e spaziali) e si sposta sul disco
mf
Algoritmo FIFO
Algoritmo LRU
Conclusioni
Il rimpiazzamento delle pagine
completa la separazione fra la
memoria logica e la memoria fisica:
una grande memoria virtuale può
essere fornita ad un sistema con
poca memoria fisica.
81
mf
mf
82
mf
mf
La struttura del
sistema operativo
Il gestore
della
memoria
secondaria
(file system)
83
mf
Le attuali unità di misura delle
memorie di massa…
Valore
Nome
Abbreviazione
Potenza di 2
1
Byte (=8 bit)
B ( = 8bit)
0
1.024
1 Kilobyte
KB
10
1.048.576
1 Megabyte
MB
20
1.073.741.824
1 Gigabyte
GB
30
1.099.511.627.776
1 Terabyte
TB
40
mf
… e quelle future…
… e conoscendo i passi da gigante della
tecnologia…
Pb (Peta – x 1.125.899.906.842.624) (250)
Eb (Exa – x 1.152.921.504.606.846.976) (260)
Zb (Zetta – x 1.180.591.620.717.411.303.424)
(270)
Yb (Yotta – x 1.208.925.819.614.629.174.706.176)
(280)
84
mf
Files e file system
Un file è l’astrazione informatica di un archivio di
dati
Il concetto di file è indipendente dal mezzo sul quale
viene memorizzato (che ha caratteristiche proprie e
propria organizzazione fisica)
Un file system è composto da un insieme di file
Il SO è responsabile delle seguenti attività
riguardanti la gestione del file system:
Creazione e cancellazione di file
Creazione e cancellazione di directory
Manipolazione di file e directory
Codifica del file system sulla memoria secondaria
mf
Tipologie di files
85
mf
Strutture di files
Tre generi di files
mf
sequenza di byte
sequenza di record
albero delle directory
Tipi di files
File eseguibile
File archivio
86
mf
La gestione del file system
La memoria secondaria è data da hard
disk, dischi ottici, floppy, etc.
Il SO (modulo File System) è responsabile
delle attività riguardanti la gestione della
memoria secondaria
mf
I livelli a cui opera il File
System
Livello logico (Sw)
Organizzazione in directory
Operazioni su files e directory (copia,
creazione, cancellazione, diritti, …)
Livello fisico (Hw)
Allocazione e gestione dello spazio
Ordinamento efficiente delle
disk scheduling - defrag)
richieste (disk
defrag
87
mf
La gestione del file system
Il gestore del file system deve garantire la
correttezza e la coerenza delle informazioni
Nei sistemi multiutente, fornisce meccanismi di
protezione per consentire agli utenti di
proteggere i propri dati dall’accesso di altri
utenti non autorizzati
Le funzioni tipiche del gestore del file system
sono:
Fornire un meccanismo per l’identificazione dei
file
Fornire metodi opportuni di accesso ai dati
Rendere trasparente la struttura fisica del
supporto di memorizzazione
Implementare meccanismi di protezione dei dati
mf
Costo al megabyte per l’hard
disk, 1981–2000
88
mf
mf
Costo al megabyte del nastro
magnetico, 1984–2000
Organizzazione logica del
file system
Quasi tutti i SO utilizzano un’organizzazione gerarchica del
file system
L’elemento utilizzato per raggruppare più file insieme è la
directory
Directory
L’insieme gerarchico delle
directory e dei file può essere
rappresentato attraverso un
grafo (un albero nei SO più
datati) delle directory
File
Grafo delle directory
89
mf
Il File System e come si memorizzano
i dati nell’Hd
Esempio:
relazione1.doc: pag. 1, pag. 4, pag. 6
relazione2.doc: pag. 2, pag. 3, pag. 7
relazione3.doc: pag. 5, pag. 8
Dal punto di vista
strutturale il sistema
operativo è formato
da un insieme di
livelli, che formano la
cosiddetta struttura a
cipolla; ciascun
livello fornisce un
insieme di funzioni e
di servizi a partire
dalle funzioni e dai
servizi forniti dal
livello sottostante (si
veda la figura 5.1).
1
98.12.11 15:29 B
C:\Matteo\LIBROCONS-RIBA\cap1.doc
<-- graal
/usr/NFS/graal1/matte
o/LIBRO-CONS-RIBA
cap1.doc
98.12.11 15:29 B
C:\Matteo\LIBRO
2
-CONSRIBA\cap2.doc <-graal
/usr/NFS/graal1/matte
o/LIBRO-CONS-RIBA
cap2.doc
98.12.11 15:29 B
C:\Matteo\LIBROCONS-RIBA\cap3.doc
<-- graal
/usr/NFS/graal1
I livelli più bassi e, in
particolare il più
basso, detto kernel,
sono quelli più vicini
all'hardware e
dipendono quindi
dalla specifica
macchina; i livelli più
alti, invece, sono più
vicini agli utenti e ai
programmi
applicativi e sono
abbastanza
indipendenti dalle
4
3
Dal punto di vista
strutturale il sistema
operativo è formato da
un insieme di livelli,
che formano la
cosiddetta struttura a
cipolla; ciascun livello
fornisce un insieme di
funzioni e di servizi a
partire dalle funzioni e
dai servizi forniti dal
livello sottostante (si
veda la figura 5.1).
5
caratteristiche
hardware
dell'elaboratore. Ai
diversi livelli
corrispondono
funzionalità diverse;
ad esempio, i livelli
bassi si occupano
della gestione
efficiente delle risorse
di calcolo mentre
quelli alti forniscono
/matteo/LIBROCONS-RIBA cap3.doc
98.12.11 15:29 B
C:\Matteo\LIBROCONS-RIBA\cap4.doc
<-- graal
/usr/NFS/graal1/matte
o/LIBRO-CONS-RIBA
cap4.doc
6
7
Dal punto di vista
strutturale il sistema
operativo è formato da
un insieme di livelli,
che formano la
cosiddetta struttura a
cipolla; ciascun livello
fornisce un insieme di
funzioni e di servizi a
partire dalle funzioni e
dai servizi forniti dal
livello sottostante (si
veda la figura 5.1).
8
9
10
11
Pagine bianche
Struttura logica e organizzazione fisica
mf
Applicazioni
Floppy da 3,5
pollici (A:)
Elab_imm
Photoshop.exe
Elab_suoni
Premiere.exe
Elab_testi
Winword.exe
Narrativa-Fra
Biblioteca
Narrativa-Ing
Narrativa-Ita
libro1
libro2
libro1
libro2
libro3
libro1
libro2
libro3
Bianchi
Utenti
Pautasso
Indice
Rossi
90
mf
Organizzazione fisica del File System
Elenco
Elenco file
file ee directory
directory
directory
floppy daElab_imm
3,5 pollici (A:)
Applicazioni
directory
Elab_suoni
Photoshop.exe
Applicazionidirectory
directory
program
Elab_imm
... ...
...
Biblioteca directory
...... ...
Premiere.exe
program
Elab_suoni
directory
Utenti directory
... ...
Elab_testi
directory
Index file-Word ...
mf
Le directory
(strutturazione del FS)
Per poter accedere ai file in modo
efficiente, il File System utilizza una
struttura ausiliaria detta directory. Una
directory può essere pensata come un file
che contiene informazioni (posizione,
attributi) sugli altri file.
91
mf
Quando un file viene aperto il FS va a
cercare la FAT che contiene le
informazioni relative ai files le copia nella
tabella opportuna in memoria principale.
La FAT è generalmente associata ad una
partizione del disco.
mf
Le directory
e la FAT ovvero struttura del FS
Strutturazione gerarchica delle
directory
Il sistema delle directory è organizzato in
modo gerarchico, con una strutturazione ad
albero.
Nella FAT troviamo
il valore degli attributi del file (nome,
dimensioni, autorizzazioni, …)
un puntatore ad una struttura che contiene gli
attributi del file
92
Come i file stanno sul disco?
mf
mf
Ci sono varie tecniche per la
memorizzazione dei files su disco
Allocazione contigua
Ciascun file occupa un insieme di blocchi
contigui sul disco.
Per reperire tutto il file sono necessarie
solo la posizione di inizio (block #) e la
lunghezza (numero di blocchi).
Spreco di spazio. Frammentazione esterna
(problema dell’allocazione dinamica della
memoria).
I files non possono crescere (=>
frammentazione interna).
93
mf
Allocazione concatenata (linked)
mf
Ciascun file è una
lista concatenata di
blocchi su disco: i
blocchi possono
essere sparpagliati
ovunque sul disco.
Si alloca quanto è
richiesto, e poi si
concatenano i
blocchi insieme.
Allocazione concatenata
File-allocation table (FAT) – allocazione
dello spazio su disco usata da MS-DOS e
OS/2. La FAT è una tabella con un
elemento per ogni blocco disco ed è
indirizzato dal numero di blocco. La FAT
consente di avere i puntatori localizzati sul
disco e non sparsi.
Semplice – richiede solo l’indirizzo di inizio
Sistema di gestione dello spazio libero –
non si ha spazio perso
94
mf
Allocazione indicizzata
mf
Colleziona
tutti i
puntatori
insieme nel
blocco di
indice.
Allocazione indicizzata
Richiede una tabella di indice
Si ha un accesso dinamico senza
frammentazione esterna, ma c’è il
sovraccarico del blocco di indice.
Se si ha un file di dimensione
massima 256K parole e con una
dimensione di blocco di 512
parole, è necessario solo un blocco
per l’indice.
95
mf
mf
Directory System Gerarchico
La struttura del
sistema operativo
La gestione
dei dispositivi
di I/O
96
mf
La gestione dei dispositivi
di I/O
La gestione dell’I/O richiede:
Un’interfaccia comune per la gestione dei device driver
Un insieme di driver per dispositivi hardware specifici
Un sistema di gestione di buffer per il caching delle
informazioni
Il gestore dei dispositivi di I/O è il modulo del SO incaricato
di assegnare i dispositivi ai task che ne fanno richiesta e di
controllare i dispositivi stessi
Da esso dipende la qualità e il tipo di periferiche riconosciute
dal sistema
Il gestore delle periferiche offre all’
all’utente una versione
astratta delle periferiche hardware; l’l’utente ha a disposizione
un insieme di procedure standard di alto livello per
leggere/scrivere da/su una periferica che “percepisce”
percepisce” come
dedicata
mf
Device driver
Il controllo dei dispositivi di I/O avviene attraverso speciali
moduli software, detti device driver
I device driver sono spesso realizzati dai produttori dei
dispositivi stessi che ne conoscono le caratteristiche fisiche
in maniera approfondita
I device driver implementano le seguenti funzioni:
Rendono trasparenti le caratteristiche fisiche tipiche di ogni
dispositivo
Gestiscono la comunicazione dei segnali verso i dispositivi
Gestiscono i conflitti, nel caso in cui due o più task vogliano
accedere contemporaneamente allo stesso dispositivo
97
mf
mf
La struttura del
sistema operativo
Interfaccia
utente
98
mf
L’interfaccia utente – 1
Tutti i SO implementano meccanismi per facilitare l’utilizzo
del sistema da parte degli utenti
L’insieme di tali meccanismi di accesso al computer prende
il nome di interfaccia utente
Serve per…
…attivare un programma, terminare un programma, etc.
…interagire con le componenti del sistema operativo (gestore
dei processi, file system, etc.)
mf
L’interfaccia utente – 2
Interfaccia testuale:
testuale
Interprete dei comandi (shell
shell)
Esempio: MS–
MS–DOS
Interfaccia grafica (a finestre):
L’output dei vari programmi viene visualizzato in maniera
grafica all’interno di finestre
L’utilizzo di grafica rende più intuitivo l’uso del calcolatore
Esempio: WINDOWS
Differenze:
Cambia il “linguaggio” utilizzato, ma il concetto è lo stesso
Vi sono però differenze a livello di espressività
99