Il sistema operativo
Sistema operativo



Insieme di programmi per la gestione del
funzionamento del computer.
Interfaccia tra utente e hardware, ambiente per
l’esecuzione dei programmi.
Un sistema operativo viene caricato nella memoria
RAM all’accensione della macchina (programma
di boot) e rimane attivo fino allo spegnimento.
Sistema operativo

Il sistema operativo:
• è un insieme di moduli software;
• controlla le risorse hardware del sistema;
• mette a disposizione dell’utente una macchina
virtuale, in grado di eseguire comandi dati
dall’utente, utilizzando la macchina “reale”.
Sistema operativo

Il sistema operativo: presenta all’utente una macchina
virtuale che nasconde tutti i dettagli hardware che
sarebbero troppo complicati da gestire per la maggior
parte degli utenti.

Sistema operativo
Le richieste dell'utente al SO,
fatte digitando dei comandi nelle
interfacce a carattere o
selezionando oggetti con il
mouse nelle interfacce grafiche
(Graphic User Interface), sono
intercettate dall'interprete dei
comandi (shell), il quale attiva i
moduli programma che agiscono
nei componenti del nucleo
(kernel). Questi attivano i
dispositivi hardware quali il
processore, la memoria, i
controller di I/O, ecc., che
svolgono la richiesta dell'utente.
Sistema operativo



E’ uno strato software che
opera direttamente
sull’hardware
Isola gli utenti dai dettagli
dell’hardware
E’ organizzato a strati:
Programmi utente
Interprete comandi
attivazione programmi d’utente o di sistema
File system
controllo e gestione degli accessi a file
Gestione delle periferiche
gestione di ingresso/uscita da periferica
Gestione della memoria
• Architettura a buccia di
cipolla
• Ogni strato costituisce
una macchina virtuale
allocazione e gestione della memoria
Gestione dei processi (nucleo)
gestione dei processi e delle interruzioni
Macchina fisica
Kernel
Funzioni del sistema operativo





Il gestore della memoria ha la funzione di allocare la
memoria e partizionarla tra i vari programmi
Il gestore dei processi è responsabile dell’esecuzione dei
programmi da parte dell’unità di elaborazione
Il gestore dell’input/output (drivers) sono responsabili delle
operazioni di ingresso/uscita che coinvolgono le periferiche
Il file system è responsabile della gestione dei file in
memoria di massa
L’interprete dei comandi consente all’utente di attivare i
programmi da una interfaccia grafica o testuale
(GUI o Shell)
Cos’è un processo





Un processo è un’attività, controllata da un programma
E’ un entità dinamica che rappresenta l’esecuzione del
programma
In un sistema multitasking possono essere avviati molti
processi contemporaneamente
Per l’avanzamento di un processo è necessaria
l’assegnazione di un processore
Dato che i processi si alternano nell’esecuzione,possiamo
dire che generalmente l’avanzamento di un processo
avviene in maniera discontinua
Gestione dei processi

Caratteristiche
• Interazione diretta con l’Hardware
• Esecuzione dei programmi come processi
Lo strato del gestore dei processi offre agli strati superiori una
macchina virtuale in cui ciascun programma opera come se avesse
a disposizione un’unità di elaborazione dedicata
Gestione dei processi

I processi hanno in memoria sempre aree dati disgiunte
(sebbene possano, a richiesta, condividere parte dei dati
oppure scambiarsi dei messaggi tra di loro).
Memoria centrale
Memoria centrale
Altri processi 
Codice eseguibile
del programma Q
Codice eseguibile
del programma P
Processo
P1
Dati sui cui agisce
il programma P
Processo
Q1
Processo
P2
Processo
P1
Dati sui cui agisce
il programma Q
Codice eseguibile
del programma P
Dati sui cui agisce
il programma P
Codice eseguibile
del programma P
Dati sui cui agisce
il programma P
Obiettivi

Massimizzare l’uso della CPU.

Massimizzare il numero di processi eseguiti
nell’unità di tempo.

Minimizzare il tempo di risposta.
I Processi

Contesto all’istante t :
• istruzione da eseguire (indirizzo in RAM: PC, IR)
• contenuto dei registri dati del processore
• il processo rappresenta lo stato di avanzamento del
programma istante per istante.
Processi Concorrenti

Nei sistemi attuali sono in esecuzione più processi
contemporaneamente. (multitasking)

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
Esempio di S.O. Multi-tasking :
time-sharing

Si usa la tecnica dei quanti di tempo
• es: 3 programmi attivi Prog1, Prog2, Prog3
• vengono mandati in esecuzione ciclicamente
Eseguo Prog1
Quanto
20-100 ms
Eseguo Prog2
Eseguo Prog3
Eseguo Prog1
Interruzione : il SO
riprende il controllo e decide chi
eseguire nel quanto successivo
Clock ‘orologio interno’
Gli stati di un processo




I processi appena creati si mettono in stato di pronto
Il S.O. decide quale processo pronto eseguire (pronto
 esecuzione)
Il S.O. assegna il processore ad un processo per un
intervallo (quanto) di tempo
L’assegnazione di un processo al processore tiene
conto della coda dei processi pronti e della priorita’
dei processi
Gli stati di un processo





Nuovo: il processo viene
creato
In esecuzione: assegnato al
processore ed eseguito da
esso
Pronto: può andare in
esecuzione, se il gestore dei
processi lo decide
In attesa: attende il
verificarsi di un evento
esterno per andare in stato
di pronto
Terminato: il processo ha
terminato l’esecuzione, ma
non è stato ancora
fisicamente cancellato dalla
memoria centrale.
Nuovo
Inizio esecuzione
Processo
pronto
Termine processo:
-Fine quanto di tempo
-Interruzione esterna
Primo processo
pronto
Processo in
esecuzione
Evento esterno
atteso
Interruzione
interna
- Fine esecuzione
- Abort per errore
Processo in
attesa
Il ciclo di vita dei processi  1
Ogni nuovo processo entra nel
sistema accedendo alla ready
queue (new  ready), e va in
esecuzione (ready  running)
quando viene selezionato dallo
scheduler
Un processo attivo può essere
arrestato per un interrupt esterno
(running  ready)
Un processo può anche essere sospeso dal nucleo (running 
ready), dopo un dato intervallo temporale, per garantire a tutti i
processi un uso paritario della CPU: lo scheduler sceglie quale fra i
processi pronti mandare in esecuzione
Il ciclo di vita dei processi  2
Anche un’interruzione interna
può causare l’arresto di un
processo (running  waiting)
Viceversa, il verificarsi dell’evento
atteso da un processo fa sì che
esso passi dallo stato di attesa
allo stato di pronto (waiting 
ready)
Infine, un processo in esecuzione può terminare regolarmente, o essere
interrotto e terminato forzatamente dal nucleo (aborted ) per il
verificarsi di un errore
Lo scheduler seleziona un nuovo processo dalla coda dei processi ready
Cambiamento di contesto





Contesto: insieme delle informazioni che
caratterizzano lo stato di un processo
Se il processo è fisicamente in esecuzione parte del
contesto si trova nei registri della CPU (Program
Counter, registri utente)
Se il processo non è in esecuzione il contesto è in
memoria.
Cambiamento di contesto (context switch):
operazione che avviene quando il sistema operativo
decide di mandare in esecuzione un altro processo
Il sistema operativo deve salvare tutte le
informazioni necessarie a ripristinare esattamente lo
stato del processo in esecuzione nel futuro.
Context Switch della CPU da processo
a processo
Dispatcher




Divide il tempo in quanti (< 50 millisec.)
Da’ un quanto ad ogni processo, uno alla volta
Alla fine del quanto, segnale che passa la CPU ad un altro
processo pronto
Prima di passare al prossimo processo, la CPU esegue il
programma di gestione delle interruzioni
• Aggiorna la tabella dei processi
• Salva lo stato (registri, celle di M, ...)
• Sceglie un altro processo dalla tabella
• ……..
Transizioni tra stati di un processo
In esecuzione
richiesta di I/O
schedulazione
pronti
fine tempo oppure
evento esterno
In attesa
conclusione I/O
Coda ordinata in
attesa della CPU
Insieme in attesa
di eventi
Gestione informazione sui processi

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 la PCB contiene un certo
numero di informazioni.

La tabella dei processi è in ogni istante caricata
interamente in RAM.
La tabella dei processi (PCB)

Per ogni processo attivo:
PID: Process Identifier
Stato corrente (Execute, Ready, Blocked)
Program Counter
Contenuto dei registri CPU
Priorità
Stato della memoria
Processi I/O e CPU bound


I processi utente si possono sospendere in attesa che un
dispositivo esterno abbia completato un’operazione di I/O,
rispetto alla frequenza con la quale invocano operazioni di l’I/O
si possono definire due tipologie di processi:
• I/O bound: si sospendono frequentemente eseguendo brevi
fasi di elaborazione (burst di CPU) tra un’operazione di I/O e
l’altra. I processi interattivi sono tipicamente I/O bound.
• CPU bound: si sospendono raramente ed eseguono lunghe
fasi (burst di CPU) di elaborazione. I processi non interattivi
sono spesso CPU bound.
La velocizzazione delle CPU tende a rendere più numerosi i casi
di processi I/O bound, in quanto la velocità dei dispositivi non
aumenta allo stesso ritmo.
Processi I/O e CPU bound
CPU bound
I/O bound
Scheduling dei processi

È l’attività mediante la quale il sistema
operativo effettua delle scelte per
ottimizzare l’esecuzione dei processi,
riguardo :
• al caricamento in memoria centrale
• all’assegnazione del processore ai processi
Tre livelli di scheduling:
• Scheduling a breve termine
o
Sceglie tra i processi pronti quello a cui assegnare il processore
– non preemptive scheduling
– preemptive scheduling
(preemption = prelazione)
• Scheduling a medio termine (Swapping)
o
trasferimento temporaneo in memoria secondaria di processi
- quando la disponibilità di memoria principale è inferiore alla necessità dei
processi esistenti
(= esclusione/reinserimento nell’insieme dei processi schedulabili in coda)
• Scheduling a lungo termine
o
Sceglie tra i lavori in arrivo quelli da ammettere per la prima volta tra i
processi schedulabili
- controlla il grado di multiprogrammazione per ottimizzarlo
Scheduling nei sistemi Batch
Tre livelli di scheduling
Criteri di scheduling
Lo scheduler ha come obiettivo quello di far eseguire ciascun
processo utente entro un tempo approssimativamente
proporzionale alla sua complessità, effettuando una
ripartizione equa della risorsa CPU
max
min
Utilizzo di CPU — la CPU deve essere più attiva possibile
Throughput — numero di processi completati nell’unità di
tempo
Tempo di turnaround — tempo di esecuzione di un
processo
Tempo di attesa — tempo di attesa del processo nella
ready queue
Tempo di risposta —
tempo che intercorre tra la
sottomissione di una richiesta e la prima risposta prodotta
Obiettivi dello Scheduling
Obiettivi principali degli algoritmi di scheduling:
 Fairness (Equità) - processi della stesso tipo devono avere
trattamenti simili ==> In particolare: evitare l’attesa indefinita
 Balance (Bilanciamento) - tutte le parti del sistema (CPU,
dispositivi …) devono essere utilizate al massimo
 Throughput - massimizzare il numero di job completati in un
intervallo di tempo
 Turnaround time - minimizzare il tempo di permanenza di un job
nel sistema
 Tempo di risposta - minimizzare il tempo di riposta agli eventi
 Proporzionalità - assicurare un tempo di risposta proporzionale alla
complessità dell’azione
Politiche di Scheduling della CPU
Roundrobin : la politica di scheduling più semplice, che consiste
nel garantire la rotazione nell’esecuzione dei processi
Lo scheduler assegna la CPU ad un processo per un quanto di
tempo
Quando il quanto di tempo termina, il processo in esecuzione
viene interrotto e ritorna nella ready queue
Per realizzare l’alternanza fra processi, lo scheduler gestisce la
ready queue in modo tale da assegnare il processore al primo
processo in coda che, quando esaurisce il suo quanto, viene posto
alla fine della coda (FIFO)
Alla fine della coda si inseriscono anche i processi che passano
dallo stato di attesa allo stato di pronto
Politica Round Robin
Primo
Primo
Coda Pronti
B
C
D
In Esecuzione
A
A passa in esecuzione
E
Coda Pronti
C
D
E
A
In Esecuzione
B
A esaurisce il quanto di tempo
Politica Round Robin




Esaurimento del quanto di tempo segnalato dal timer del processore
- L’interruzione del timer provoca l’attivazione dello scheduler
- Al termine del suo intervento, lo scheduler carica il timer con un
nuovo quanto di tempo
Lo scheduler interviene anche quando il processo in esecuzione si
sospende prima della scadenza del quanto di tempo
- lo scheduler riassegna il processore e carica il timer con un nuovo
quanto di tempo
Come fissare il quanto di tempo
- deve essere abbastanza lungo da ammortizzare il costo di un
context switch deve
- essere abbastanza breve da permettere una risposta veloce agli
utenti interattivi
- in sistemi reali tipicamente 20-120 ms
RR non favorisce i processi I/O bound
Scheduling con priorità



Ogni processo ha una priorità
Ogni volta va in esecuzione il processo a priorità più elevata
• Criteri di assegnazione della priorità ??
>> Per esempio: politica Shortest Job First (SJF)
Punti chiave
•Priorità statica
==> Possibilità di attesa indefinita per i processi a priorità
più bassa
•Priorità dinamica
==> strategia di assegnazione della priorità ?
per esempio: priorità maggiore ai processi I/O bound
Scheduling con priorità

Molte strategie per il calcolo dinamico della priorità:
• Priorità crescente nel tempo per i processi che rimangono in
stato di pronto. Obiettivo: impedire attesa indefinita
• Incremento di priorità quando i processi vengono riattivati.
Obiettivo: tempo di risposta
• Priorità legata alla percentuale f del quanto di tempo che è
stato consumato l’ultima volta che il processo è andato in
esecuzione (es. proporzionale a 1/ f ). Obiettivo: favorire
processi I/O bound
Scheduling con Politica SJF
Scheduling con politica Shortest Job First (SJF)
==> privilegia il job più corto
Ipotesi:
• l’insieme dei job da schedulare è noto all’inizio
• si conosce il tempo di esecuzione T di ogni job
Politica:
• i job sono schedulati in ordine di T crescente
• non c’è prerilascio
Proprietà: SJF minimizza il tempo medio di turnaround
Gestione della Memoria
Gestione della memoria

RAM: volatile, costosa e quindi di dimensione limitata 
contiene i Programmi + Dati (Modello di Von Neumann)

Processi della CPU in esecuzione in un certo intervallo di tempo
utilizzando i registri

Programma + Dati contenuti nella RAM

Il sistema operativo deve gestire lo spostamento di
Progr. +
Dati tra RAM e CPU .
39
Gerarchia di memoria

Si cerca di raggiungere un compromesso
sfruttando la gerarchia di memoria
Registri
Cache
Memoria Principale
Dischi Magnetici
Dischi Ottici
Nastri Magnetici
40
Gerarchia di memoria
Dispositivo di
memoria
Velocità di
accesso
Capacità
Costo
Volatilità
Registri
nanosecondi
Kbyte
Molto alto
alta
Cache
decine di ns
Mbyte
€100/Mby
te
alta
Memoria
principale
50-70 ns
centinaia
Mbyte
€1/Mbyte
alta
Dischi magnetici
5-15 ms
decine
Gbyte
€10/Gbyt
e
bassa
Dischi ottici
100 ms
centinaia
Mbyte
€5/Gbyte
bassa
Nastri
Fino a 1 s
Fino a 1
Tbyte
€1/Gbyte
bassa
41
Gestore della memoria

La parte del SO che gestisce la memoria è il Gestore di
Memoria i cui compiti sono:
• tenere traccia di quali parti di memoria sono in uso e
quali non lo sono
• allocare la memoria ai processi che la necessitano e
deallocarla
• gestire lo swapping tra la memoria principale e il disco
quando la memoria principale non è sufficientemente
grande per mantenere tutti i processi
• in definitiva cercare di sfruttare al meglio la gerarchia di
memoria
42
Gestione della memoria
centrale
La memoria centrale…
…è 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
43
Gestione della memoria
centrale
Premessa indispensabile per la gestione concorrente di molti
processi è la presenza di molti programmi in memoria
centrale (multiprogrammazione)
La memoria centrale assume un ruolo simile all’unità di
elaborazione: è una risorsa unica, spesso scarsa, da
suddividere fra i vari processi/programmi
Per allocare i programmi in memoria centrale è necessario
rilocarli:
Rilocare significa trasformare gli indirizzi logici, presenti nei
programmi, in indirizzi fisici, corrispondenti alle locazioni di
memoria dove il codice eseguibile viene effettivamente caricato
D’altra parte, l’uso di indirizzi logici nei programmi è essenziale
per consentirne il caricamento in differenti porzioni di memoria
Problema: come allocare lo spazio in maniera ottimale
44
Allocazione a partizioni multiple
Memoria
0000x
Programma A
Memoria
0000x
Programma A
Programma D
Programma B
Programma E
Programma C
Programma C
45
Istante T1
Istante T2
Allocazione a partizioni multiple
Memoria
0000x
Programma A
Programma D
Programma F
Programma E
PROBLEMA !!!!
FRAMMENTAZION
E
Programma C
46
Paginazione
Un importante meccanismo di “suddivisione” della
memoria centrale, e delle entità in essa memorizzate,
è quello della paginazione:
La memoria centrale è considerata
dal gestore della memoria come
partizionata in pagine, ciascuna
delle quali è un’area di memoria
contigua, di dimensione prefissata
Anche i programmi vengono
partizionati in pagine ed allocati in
un numero intero di pagine, non
necessariamente contigue
Tabella di mappa di
pagina
47
Tabella di mappa di pagina
Compito della Tabella di mappa di pagina è:
- mettere in relazione le pagine di un programma e i blocchi di memoria
- consentire al Sistema Operativo di sapere quali pagine sono realmente
presenti in memoria e in quali blocchi sono memorizzate (paginazione
dinamica)
- generare un’interruzione quando un lavoro vuole accedere ad un indirizzo
contenuto in una pagina non presente in memoria e quindi richiedere al
Sistema Operativo di caricarla dal disco in memoria.
1) Se vi sono blocchi liberi, questa operazione consisterà
nell'aggiornamento della tabella di mappa e nel caricamento effettivo nel
blocco prescelto.
2) Se invece non vi sono blocchi disponibili, occorrerà scegliere tra le
pagine presenti in memoria quale riportare sul disco, liberando così il relativo
blocco di memoria.
48
Soluzione: Paginazione
Memoria
0000x
Programma A
Memoria
0000x
Programma A
Programma A
Programma A
Programma A
Programma A
Programma B
Programma E
Programma B
Programma F
Programma D
Programma D
Programma F
49
Segmentazione
Segmento: parte di un programma che svolge una
determinata funzione logica. (funzioni, array,
Il ecc)
gestore della memoria può
utilizzare il partizionamento
logico del programma per
caricare
segmenti
di
lunghezza
variabile
in
maniera indipendente
Segmenti logici
1
4
1
2
3
4
2
3
Spazio utente (Programma)
Spazio fisico di memoria
Segmenti fisici
NB: Mentre le pagine hanno lunghezza fissa, i
segmenti, essendo logicamente suddivisi, hanno50
lunghezza variabile
La Segmentazione


Definiamo segmento un insieme di istruzioni considerate come una
unità logica ad esempio una routine, un array, un'area dati ecc.
Uno spazio degli indirizzi di un programma si può quindi pensare
composto da diversi segmenti di dimensioni variabili, ciascuno dei
quali viene caricato in memoria all'occorrenza e collegato al resto
del programma in modo dinamico (paginazione dinamica) ed
utilizzato per l'esecuzione.
51
Paginazione e Segmentazione
• Paginazione
– la divisione in pagine eseguita dal S.O.
– le pagine hanno dimensione fissa
– le pagine possono contenere informazioni disomogenee (ad
es. sia codice sia dati)
– una pagina ha un indirizzo di memoria
– dimensione tipica della pagina: 4 KB
52
Segmentazione e Paginazione
Segmentazione
– la divisione in segmenti spetta al programmatore.
– i segmenti hanno dimensione variabile
– un segmento contiene informazioni omogenee per tipo di accesso
e permessi di condivisione (insieme di istruzioni)
– un segmento ha un nome.
– dimensione tipica di un segmento: 64KB - 1MB

53
Memoria Virtuale (swap)
Segmentazione e paginazione non sono mutuamente
esclusive:
in
molti
SO
vengono
applicate
contemporaneamente
In entrambi i casi, il gestore della memoria offre al
programma applicativo la visione di una memoria
virtuale, che può essere maggiore di quella fisica
Si
possono
gestire
programmi
caricandone
effettivamente in memoria solo le pagine (o i segmenti)
relative al codice attualmente in esecuzione
Le pagine (o i segmenti) che non sono al momento
caricate in memoria rimangono disponibili sulla memoria
di massa, all’interno di opportuni file
54
La memoria virtuale
Memoria
0000x
Programma A-1
Programma B-1
Programma D
Swap
Programma A-2
Programma A-3
Programma B-2
55
La memoria virtuale
Memoria
0000x
Programma A-2
Programma B-1
Programma D
Swap
Programma A-1
Programma A-3
Programma B-2
56
Memoria fisica e memoria virtuale
Decimale
Mem. virtuale o logica
Mem. fisica
0
1
0
2
1
3
2
4
…...
5
…...
128 Mega
4 Giga
Il numero di indirizzi virtuali (o logici) è maggiore
57
del numero di indirizzi fisici !!!
Indirizzi logici e fisici
Se numero ind. logici = numero ind. fisici
abbiamo una corrispondenza uno a uno
Mem. virtuale
Mem. fisica
148
148
…...
…...
58
Indirizzi logici e fisici
- Poiché nella memoria virtuale: num. indirizzi logici > num. indirizzi fisici
allora più indirizzi logici vengono tradotti in un unico indirizzo fisico
Mem. virtuale
56
Mem. fisica
132
148
300
…...
…...
59
Indirizzi logici e fisici
Mem. virtuale
56
Mem. fisica
132
148
300
...
Istante T1
...
Mem. virtuale
56
Mem. fisica
132
148
300
Istante T2
...
...
N.B. Le celle con ind. logici tradotti in un unico ind. fisico non
possono essere usate contemporaneamente.
60
Traduzione degli indirizzi

La traduzione degli indirizzi logici in indirizzi fisici è effettuata
dalla MMU (Memory Management Unit), componente HW
nella CPU.
CPU
Ind. logici
RAM
MMU
Ind. fisici
Address BUS
Data BUS
Control BUS
61
File System – il gestore dei file





Un file è un insieme di dati omogenei fra loro e raggruppati ai
fini di archiviazione, di successiva elaborazione o di esecuzione.
Possono contenere dati (file dati), programmi in linguaggio
macchina (file eseguibili) o sequenze di comandi del sistema
operativo (script o file batch).
Un sistema operativo fornisce dei formati standard con cui
organizzare i dati nella memoria di massa e i comandi per
manipolare i file (file system).
Ogni file è caratterizzato da un nome e da una estensione, che
serve ad identificarne il tipo.
Es. i file eseguibili sotto MSDOS/Windows hanno estensione
.EXE, quindi il file prova.exe è un file che contiene codice
direttamente eseguibile dalla CPU.
File System – il gestore dei file


L'oggetto elementare su cui opera il file system è il FILE,
ossia una raccolta di dati registrati su memoria di massa (il
file è visto dal SO come una sequenza di byte)
Tipi di file:
• testo (ASCII): una sequenza di caratteri, ad esempio un
programma sorgente (es. in linguaggio C) o un editor di
testo semplice
• binari: una sequenza di byte
• eseguibili (programmi) e non eseguibili (es. immagini,
documenti creati con word processor)
File System – il gestore dei file



Sul disco rigido i file sono organizzati in modo gerarchico e
possono essere inseriti in opportuni “contenitori” (cartelle o
directory: sono anch’essi file! Una directory contiene una
lista dei nomi e attributi dei file e directory al suo interno).
Il disco può essere considerato come un archivio che
contiene varie cartelle. Ogni cartella contiene documenti
(file) o altre cartelle, che a loro volta contengono file o
cartelle, realizzando una struttura ad albero.
Ogni file è quindi identificato da un percorso, che
rappresenta la sequenza delle cartelle che bisogna aprire per
raggiungerlo.
File System – il gestore dei file


Il percorso di un file individua le directory che devono
essere percorse per raggiungere quella che contiene il file.
Il percorso e il nome del file individuano l’oggetto e ne
specificano la collocazione nella struttura gerarchica:
c:/Didat/esami/iscrmar.doc
File System – il gestore dei file

Funzioni principali:
•
•
•
•
•
•
Creazione di file
Copiatura di file
Spostamento (da una cartella ad un’altra) di file
Ridenominazione di file
Cancellazione di file
Strutturazione dei dischi (e dei nastri) come insiemi di
file.
• ...

Per ognuna di queste operazioni esiste un opportuno
comando (interfaccia utente alfanumerica) o una
azione corrispondente con mouse e tastiera (GUI).
Gestione delle periferiche

Funzioni principali:
• Indirizzamento dei segnali da e verso le periferiche
• Sincronizzazione delle periferiche

Gestione del sistema di Ingresso/Uscita
• Sistema di tamponamento dei flussi di dati (buffercaching).
• Interfaccia generale per i programmi di controllo
(driver) delle periferiche (device).
• Collezione di programmi di controllo (driver) specifici
per le varie periferiche (device) collegabili al
calcolatore.
Driver - Gestione delle periferiche


I driver sono meccanismi software cui è affidato il
compito di comunicare dati da e verso le periferiche
Garantiscono ai programmi che li usano una visione
di alto livello
• E’ possibile leggere o scrivere tramite primitive
indipendenti dalla struttura hardware delle periferiche

Si distingue fra:
• Driver fisici (hardware). Vengono attivati direttamente dal
gestore delle interruzioni
• Driver logici (software). Fanno parte del sistema operativo
e forniscono una gerarchia di operazioni, con
un’organizzazione a strati
Fine
Sincronizzazione dei processi



A volte, i processi devono sincronizzarsi, ovvero
coordinare le loro attività
Il coordinamento sequenziale: un processo
termina invocando l’attivazione di un altro
processo
La competizione: due processi vogliono accedere
simultaneamente a una medesima risorsa (risorsa
critica)
Processi CPU bound (P1)
e I/O bound (P2)
P1
Lungo burst di CPU
Attesa completamento I/O
Corto burst di CPU
P2
tempo
In esecuzione
In attesa
Process Control Block (PCB)


Per descrivere gli stati del
processo e per gestire le
commutazioni di contesto
subite dal processo, al processo
va associata un’opportuna
struttura dati, chiamata area
dati di nucleo (process control
block- PCB).
L’area dati di nucleo del
processo è creata e gestita
direttamente dal sistema
operativo; non è direttamente
visibile da parte del processo.
puntatore
stato del processo
numero del processo (process id, o PID)
contatore di programma
contenuto dei registri del processore
limiti di memoria assegnata al processo
elenco dei file aperti (descrittori di file)
altro 
Parametri dell’area dati di nucleo (PCB)
Stato del processo: nuovo, pronto, attivo, sospeso, terminato.
Contatore di programma: l’indirizzo della prima istruzione da
eseguire, quando il processo entra in stato attivo.
Numero del processo, o PID: identificatore univoco del processo.
Registri del processore: tutti i registri (general e special purpose) del
processore, da ripristinare nel processore quando il processo entra in
stato attivo.
Informazioni di scheduling del processore: priorità del processo,
puntatori alle code di scheduling, parametri di scheduling, ecc.
Informazioni di gestione della memoria: registri base e limite dello
spazio di memoria assegnato al processo, tabelle delle pagine o dei
segmenti di memoria di proprietà del processo, ecc.
Informazioni contabili: tempo di processore e tempo reale di utilizzo
del processore, limiti di tempo, ecc.
Informazioni di I/O: elenco delle periferiche assegnate al processo,
elenco dei descrittori di file aperti da parte del processo, ecc.
Classificazione dei SO

In base alla modalita’ di gestione dei programmi:
• Monoprogrammazione (esegue un solo programma alla
volta)
• Multiprogrammazione (esegue piu’ programmi
apparentemente conteporaneamente, in realta’ in timesharing, suddividendo il tempo di esecuzione in intervalli
molto piccoli e assegnando a turno le risorse ai diversi
programmi)

In base al tipo di accesso fornito agli utenti:
• Monoutente (un solo utente puo’ usare la macchina)
• Multiutente (piu’ utenti possono contemporaneamente
interagire con la stessa macchina)
Classificazione dei SO




I concetti di mono e multi-programmazione sono
indipendenti sa quelli di SO mono e multi-utente
I SO attuali operano tutti in multiprogrammazione
Windows nasce come sistema monoutente, anche se
le versioni evolute (NT, 2000, XP) hanno alcune
funzioni che possono essere utilizzate in modo
concorrente da piu’ utenti contemporaneamente
UNIX e’ un sistema multiutente che opera in
multiprogrammazione
Classificazione dei SO

In base al tipo di interfaccia utilizzato:
• interfaccia testuale (MS-DOS, UNIX, Linux…) i
comandi vengono inseriti come stringhe di caratteri e
impartiti tramite la tastiera
• interfaccia grafica - Graphic User Interface (GUI) i
comandi e gli oggetti vengono rappresentati in modo
grafico e possono essere impartiti, eseguiti o manipolati
attraverso l’uso congiunto di mouse e tastiera
Sistema operativo in time sharing


Permette la condivisione della CPU tra più processi
Ogni processo in esecuzione ha a disposizione un quanto di
tempo di utilizzo della CPU, al termine del quale viene
sospeso per lasciare il posto ad un altro processo in attesa di
esecuzione.