Software di Sistema: S.O. = Insieme di programmi che ha il compito

Software di Sistema:
S.O. = Insieme di programmi che ha il compito di gestire l'hardware rendendo più facile l'utilizzo di altri programmi.
Drivers = Programmi che gestiscono le unità periferiche che il S.O. non è in grado di gestire autonomamente.
Servizi di sistema = Programmi che forniscono particolari servizi ad altri programmi ampliando i servizi già forniti dal
S.O.
Software applicativi (e programmi di utilità di sistema) = Programmi attraverso cui l'utente può interagire
direttamente con la macchina. La differenza tra software applicativi e programmi di utilià di sistema sta nel fatto che
i primi eseguono funzioni richieste dall'utente mentre i secondi si occupano della gestione, tra questi c'è anche
l'interfaccia utente. Grazie ad essa l'utente può interagire con la macchina attraverso il cursore mosso con il mouse.
Esiste anche la possibilità di utilizzare un'interfaccia a riga di comando che permette all'utente di digitare i propri
comandi sottoforma di testo scritto con un particolare linguaggio (Linguaggio di comandi di sistema).
Componenti di un S.O.:




Nucleo (kernel).
Driver dei dispositivi.
Servizi di sistema.
Programmi di utilià di sistema.
Utenti del Sistema
Programmi applicativi
Programmi applicativi e di utilià di
sistema
Servizi di sistema
Nucleo del Sistema Operativo
Interfaccia con i programmi
applicativi
Livello privilegio 2 e 3
Sistema Operativo
Livello privilegio 1
Livello privilegio 0
Drivers dei dispositivi
Piattaforma hardware
Programmi applicativi:
livello privilegio 3.
Programmi di utilità di sistema: livello privilegio 2.
I sistemi operativi BATCH.
Sono usati nei mainframe e nei supercomputer in quanto ottimizzano l'utilizzo delle risorse. Gli utenti non possono
accedere direttamente alla macchina, possono solo gli operatori.
Utenti
Operatore
Lettura di schede
Unità centrale
Stampante
= Schede forate
Sistemi operativi Time Sharing.
Interazione diretta con l'utente.
Utente
Terminale
Unità centrale
Sistema operativo NOS.
Server
Client
Client
Rete di computer
Client
Server
Server
Sistemi operativi Real Time.
Sono sistemi operativi "dedicati" ovvero S.O. che devono garantire agli utenti un processo automatizzato.
S.O. Real Time
Attuatori
Sistema di
controllo
Sistema
controllato
Sensori
Sistemi Operativi:




Batch.
Time Sharing.
Network O.S.
Real Time.
di uso generale
Sistemi Operativi per dispositivi mobili.




Smarthphone.
Palmabili.
Tablet.
Ebook reader.
Il nucleo del Sistema Operativo si divide in 4 moduli:




modulo che si occupa della gestione della CPU
modulo che si occupa della gestione della Memoria centrale (RAM)
modulo che si occupa della gestione dei dispositivi di Input e Output (IO)
modulo che si occupa della gestione dei Files (File System)
Il modulo della gestione della CPU:
(MultiTasking)
Programmi:
A
Esecuzione
Esecuzione
Tempo
Esecuzione
Esecuzione
B
Tempo
S.O.
Tempo
= 1µs = 10-6 s
Processi
Processo = rappresentazione dell'attività di esecuzione di un programma da parte del sistema.
Ad ogni processo viene assegnato un insieme di risorse, in caso la risorsa non possa essere esclusivamente assegnata
ad un solo processo viene condivisa senza interferire con gli altri processi (ad esempio: il processore).
Descrittore di processi = struttura di dati in cui sono contenute tutte le informazioni relative ad un processo:





Codice identificativo del processo (codice univoco).
Codice identificativo del processo padre.
Stato dei registri del processore (valore).
Quando il processo termina, il valore dei registri viene salvato nel descrittore di processo.
Aree di memoria riservate al processo.
Altre risorse Hardware o Software riservate al processo. (Esempio: dispositivo di IO o un file).
Fasi di un processo:


Stato di esecuzione
Stato di bloccato

Stato di pronto
(Esecuzione delle istruzioni del programma).
(Il programma non può essere eseguito, ad esempio sta attendendo la fine di un
operazione IO).
(Non è né in fase di esecuzione né in stato di bloccato tuttavia non può essere
mandato in esecuzione: è pronto per essere eseguito).
Un processo può passare da stato di esecuzione a stato di pronto quando ha raggiunto il limite massimo di tempo
asseganto al processo.
Diagramma delle transizioni di stato:
Pre-rilascio
Pronto
Schedulazione
Si verifica l'evento
atteso dal processo
Bloccato
Standard "posx":



Esecuzione
Il processo si pone in
attesa del verificarsi
di un evento
(usato principalmente da Unix e Linux)
Chiamate di sistema per la gestione dei processi.
Chiamate di sistema per la gestione della memoria (RAM).
Chiamate di sistema per la gestione dei file.
Quando un processo deve creare un altro procesos esegue una chiamata di sistema chiamata "fork".
La chiamata "fork" non necessita di alcun parametro d'ingresso ma restituisce un parametro d'uscita: il PID ovvero il
codice di identificazione del processo figlio il quale condividerà le stesse istruzioni del processo padre e ha una copia
dei valori di ciascuna variabile, ma non i stessi dati.
Processo chiamante
Codice delle istruzioni
Codice dei dati
Nuovo processo
Copia identica del
codice delle istruzioni
Copia del
codice dei dati
Se il valore restituito è:



minore di 0:
uguale a 0:
maggiore di 0:
Errore di creazione del processo.
Processo figlio.
Processo padre.
...
...
...
pid = fork();
if (pid == 0)
processoFiglio(...);
else
processoPadre(...);
...
...
...
void execv (char * path, char * argv[]);
char * path
char * argv[]
=
=
stringa che contiene il nome del percorso di un programma.
argomenti che saranno passati al programma.
Processo chiamante
Codice delle istruzioni
Codice dei dati
Path
Dati di path
Il main
int main (int argv, char * argv[])
Copia
void exit (int status);
status =
numero intero che rappresenta il motivo dell'uscita.
uguale a 0
diverso da 0
= terminazione corretta.
= terminazione errata, il numero indica la causa dell'errore.
Schedulazione.
Schedulazione: la selezione tra tutti i processi in stato di pronto di un processo da mandare in esecuzione.
I criteri attraverso cui vengono scelti i processi:


Fattori di utilizzo del processore.
Tempo medio di attesa in stato di pronto di un processo.
Tecnica di schedulazione FCFS (First Came First Serve).
Coda dei descrittori di processi pronti:
Creazione di un
nuovo processo
oppure un
passaggio dallo stato di
bloccato allo stato di pronto.
Schedulazione
Questa tecnica ha un difetto: se un processo non termina gli altri non verranno più eseguiti e quindi il Tattesa
sarebbe infinito. Per risolvere hanno aggiuntoil "pre-rilascio" ovvero un tempo massimo per cui un processo può
rimanere in esecuzione, limitando così il Tattesa massimo.
Questa tecnica prese il nome di "Schedulazione Round Robin".
∆ = tempo massimo concesso ad un processo nello stato di esecuzione.
n = numero di processi presenti nel sistema contemporaneamente (grado di multiprogrammazione).
Tattesa <= n • ∆
Tecnica di schedulazione a classi di priorità.

Priorità statiche:
La priorità non cambia.
Tipo di processo
Background
Processo iterativo
Processo di sistema
Real Time

Priorità
1
2
3
4
Priorità dinamiche:
La priorità viene modificata durante la vita di un processo.
Gestione della Memoria.
Memoria
Memoria centrale
Memoria secondaria
Tipo di memoria
Volatile
Permanente
Tempo di accesso
Ridotto (veloce)
Elevato (lenta)
Costo
Elevato
Ridotto
Capacità
Ridotta
Elevata
Tipi di gestione:
Programmi
applicativi
Sistema Operativo
Driver dei
dispositivi
FFF...F
0
Programmi
applicativi
Sistema Operativo
FFF...F
0
FFF...F
Flash Rom
Programmi
applicativi
Sistema Operativo
0
Problema della rilocazione statica:
La ROM non può essere modificata, tuttavia se il software (potendo accedere a tutte le aree di memoria) accedesse
all'area dedicata all'SO o ad un altro processo interferendo, le conseguenze sarebbero imprevedibili.
Per risolvere furono creati due tipi di indirizzi ovvero:


Fisici: Indirizzi di ciascuna cella di memoria).
Logici: Indirizzi delle istruzioni di ciascun programma).
Gli indirizzi logici vengono trasformati in indirizzi fisici all'avvio del programma in base allo stato della memoria.
Indirizzo logico
Logica di traduzione
Indirizzo fisico
La logica di traduzione fa uso di particolari registri:


Registro di base:
Registro limite:
Contiene l'indirizzo della prima cella di memoria utilizzata dal programma).
Contiene la dimensione dell'area di memoria utilizzata da un programma).
Ripeti:
Se indirizzoLogico > registroLimite
Termina il processo
altrimenti
indirizzoFisico = calcola (indirizzoLogico + registroBase)
Fino alla fine del programma
Questo viene eseguito dal processore per ogni istruzione del programma.
Cambio di contesto.
Il passaggio dell'esecuzione di un programma ad un altro viene gestita dal Sistema Operativo richiede:





Salvataggio del contenuto di tutti i registri del processore nel descrittore del processo interrotto.
Inserimento del descrittore del processo nella coda dei descrittori dei processi pronti.
Selezione del nuovo processo da porre in stato di esecuzione.
Copia dei registri del nuovo processo nel processore.
Successivamente il Sistema Operativo cede il controllo al nuovo processo.
Situazione
B termina
D viene creato
A termina
E viene creato
/////////
/ C
/////////
/ C
/////////
/ C
/////////
/ C
/////////
/ C
B
/////////
/////////
/////////
D
D
D
A
/////////
/////////
/
A
A
E
SO
SO
SO
/////////
//
SO
SO
Compattazione
/////////
/////////
C
D
E
SO
Swapping.
Area di
swap
Immagini dei processi attivi.
Copia del contenuto del processo, se presente nell'area di
swap, nella memoria centrale (swap-in).
Copia del contenuto nell'area di swap (swap-out).
/////////
/ C
B
A
SO
Visto che l'accesso al disco richiede un tempo elevato e lo swapping viene eseguito anche centinaia di volte al
secondo, è da utilizzare il meno possibile.
Trash = Quando ci sono troppi processi, troppe operazioni di swap.
Memoria virtuale.
La memoria virtuale può essere vista come un'area della memoria secondaria che simula il funzionamento di una
memoria centrale di capacità superiore a quella della memoria centrale disponibile nel computer.
Tecniche di implementazione della memoria virtuale:



Paginazione.
Segmentazione.
Paginazione + Segmentazione.
Paginazione.
Divisione dell'immagine di un programma in varie pagine, tutte di dimensione costante e comune.
1KB < x < 1GB.
Indirizzi logici.
Tabella delle pagine.
32 KB
Memoria centrale.
Indirizzi fisici.
Pagina 7
Pagina 7
Pagina 7
Pagina 4
Pagina 4
Pagina 4
Pagina 3
Pagina 3
Pagina 3
Pagina 0
Pagina 0
3
2
1
0
Pagina 0
0KB
MMU (Memory Management Unity)
Traduce gli indirizzi logici in indirizzi fisici.
Indirizzo logico
Numero della pagina
100
Pagina 4
OFFSET (posizione all'interno della pagina della cella indirzzata)
000010000001
129
Per trasformare:
Va a leggere nella tabella delle pagine la posizione della pagina nella memoria centrale e lo sostituisce.
100
010
Page fault.
Quando la pagina non è contenuta in memoria centrale.



SO sceglie una pagina fisica.
Salva il contenuto sul disco.
Copia la nuova pagina dal disco alla memoria centrale al posto di quella precedentemente salvata.
Descrittore delle pagine logiche.
Contiene:


Il numero di una pagina fisica.
Il bit P (presenza):
1 = presente.
0 = non presente.
La tabella delle pagine può essere memorizzata:


MMU
Memoria Centrale
(Troppi registri e quindi costo troppo elevato).
(Rallenta l'esecuzione).
CPU
MMU
Tabella delle pagine
Memoria Centrale
Per risolvere: Memoria associativa.
Memoria presente nella MMU che contiene i descrittori delle pagine usate più frequentemente.
Pagina logica
0
3
4
7
P
1
1
1
1
Pagina fisica
0
1
2
3
Scelta delle pagne da rimpiazzare.
Per evitare lo Trashing (blocco del sistema) bisogna fare in modo che la pagina sostituita non venga più richiesta o
almeno per un lungo periodo di tempo.
Tecniche del rimpiazzamento:



Casuale.
Ottimale.
Consiste nel scegliere la pagina che verrà richiesta dopo tutte le altre ma non è realizzabile in quanto
richiederebbe di saper prevedere il futuro.
st Recently Used (LRU).
5 Sec
Per fare ciò serve che ogni descrittore di pagina:
3 Sec
7 Sec
P
Pagina Fisica
M
Contatore
1 Sec
Bit che dice se la pagina è stata:
1: Modificata.
0: Non modificata.

Conta il numero di istruzioni del
programma che sono state
eseguite, è di almeno 64bit.
Not Recently Used (NRU).
P M
1 0
0 x
1 1
P M
0 0
0 1
1 0
1 1
Pagina Fisica
80
5
U
0
0
0
Azzerato periodicamente
Non utilizzata, non modificata.
Utilizzata, non modificata.
Non utilizzata, modificata (modificata prima dell'azzeramento).
Utilizzata, modificata.
Segmentazione.
Segmenti del codice delle istruzioni
Main
Sottoprogramma1
Segmenti del codice dei dati
Sottoprogramma2
Vettore1
Vettore2
Vettore3
Vantaggi:


Collegamento dinamico
Condivisione del codice
(Alcuni segmenti di codici o dati vengono usati contemporaneamente da più programmi).
Segmenti di dimensione variabile
(La dimensione di ciascun segmento può variare durante l'esecuzione del programma).

Implementazione:
Indirizzo logico:
Numero del segmento
Indirizzo di una cella di memoria all'interno del segmento
Tabella dei segmenti:
N
0
1
2
...
...
...
...
...
...
...
n-1
P
Indirizzo base
Lunghezza
Traduzione logico - fisico:


Accedi all'elemento della tabella con indice "n"
segmento.
Se P = 0 "Page fault".
altrimenti "confronta offset con lunghezza"
se offset > lunghezza
Interruzione.
altrimenti (offset <= lunghezza)
indirizzo fisico = base + offset.
In caso di Page fault:


L.R.U.
Tabella dei segmenti più il campo "M" e il campo "Contatore".
N.R.U.
Tabella dei segmenti più il campo "M" e il campo "U".
Paginazione e Segmentazione.
Suddivisione dei segmenti in pagine di uguale dimensione.
Ad ogni processo viene associata una tabella di descrittori di segmenti
Ad ogni segmento viene associata una tabella delle pagine.
Intel x86
Per ogni programma.
8192
8191
Segmenti locali.
Segmenti globali.
220 pagine di 4KB per segmento.
Dimensione massima di un segmento: 4GB.
Dimensione massima di un processo: 32TB.
File System.
File System:
Parte del Sistema Operativo che si occupa delle informazioni contenute nella memoria secondaria (gestisce la
memoria di massa di un computer nascondendo all'utente tutti i dettagli relativi al suo funzionamento in modo che
l'utente possa accedervi molto semplicemente attraverso un numero limitato di comandi e/o servizi di sistema.
File:
Concetto astratto, contenitore di tipo permanente di informazioni che possono essere lette o modificate d
programmi.
Comandi e/o servizi per la gestione dei file:





Comandi per la creazione di file.
Comandi per l'eliminazione di file.
Comandi per la copia di file / il contenuto di file.
Comandi per la rinominazione di file.
Servizi per l'apertura / lettura / scrittura / chiusura di file.
Proprietà:








Nome (univoco).
Tipo (contenuto / estensione).
Data di creazione.
Data di ultimo accesso.
Data di ultima modifica.
Nome dell'utente creatore del file.
Nome del proprietario del file.
Attributi:
 Sola lettura.
 File nascosto.
 Sistema.
Variabile:
Contenitore di tipo volatile di informazioni.
Differenza
Memorizzazione permanente
Capacità elevata
Condivisione di dati
Accesso (lettura / scrittura) rapido
File
•
•
•
Nomi dei file:
Sequenze di caratteri.
Scrittura di un file:


Sequenza di Byte (codici binari di 8-bit).
Sequenza di record:
 A lunghezza fissa.
 A lunghezza variabile.
Variabile
•