I Sistemi operativi
Sistema operativo

E’ un insieme di programmi che consente
all’utente o alle applicazioni informatiche di
accedere alle operazioni di base per utilizzare
le risorse del sistema di elaborazione sia
hardware che software
Classificazione

Interna



Monoprogrammati
Multiprogrammati
Time sharing

Utilizzo





Batch
Interattivo
Dedicato
(embedded)
Real time
Distribuiti
Transazionali
(ACID)
Tipologie
Monolitici (DOS)
 Livelli



Microkernel sono solo i meccanismi del SO
(es paginazione, scheduler), mentre le
politiche sono realizzate con processi in
user state (NT)
Client-Server
Struttura del sistema operativo
In generale è costituito da una struttura a
strati a “buccia di cipolla”
 Al centro c’è l’hardware e poi via via si
dipartono i vari moduli software che
costituiscono il SO
 Strato = macchina virtuale che maschera
la macchina fisica (hardware)
 La schematizzazione si chiama modello
a macchine virtuali

Architettura di un sistema operativo
Funzionalità

Possiamo identificare 5 strati tra macchina
fisica e utente





Gestore dei processi (nucleo o kernel)
Gestore della memoria
Gestore delle periferiche
File system
Interprete dei comandi
Gestore dei processi (nucleo)





Gestisce l’esecuzione dei programmi
Le unità di esecuzione vengono chiamate processi
Per eseguire un programma occorre mantenere il
corrispondente processo attivo nella CPU
In ambiente multi-utente il gestore deve decidere a
quale processo assegnare la CPU
Inoltre deve reagire agli eventi esterni (le interruzioni
provenienti dalle periferiche)
Cos’e’ un processo?



Programma = lista di istruzioni = nozione statica
Processo = programma in esecuzione
= programma + stato corrente variabili
= nozione dinamica
Stato corrente =



valori in memoria centrale
valori nei registri della CPU
In un PC un solo processo in esecuzione alla volta
Dettagli: Ciclo di vita dei processi



L’esecuzione di un programma può comportare
l’alternarsi di processi utente e di sistema all’interno
della CPU
Processo utente deriva da un programma applicativo
Processo di sistema deriva da un programma del
sistema operativo



Processi kernel (nucleo)
Gestori interruzioni
L’esecuzione di un processo può essere interrotta!
Ricordate sempre che un processo corrisponde ad un programma + stato
corrente della memoria centrale e dei registri
*Interruzione interna




L’esecuzione di un processo attivo si interrompe ad
es. per operazioni di input/output (operazioni costose
in termini di tempo)
Lo stato corrente (contenuto registri ecc) del processo
interrotto viene salvato in memoria
Il processo passa allo stato in attesa
Il controllo passa ad un processo di sistema che
assegna la CPU ad un altro processo (per poter
ottimizzare l’utilizzo della CPU)
*Interruzioni interne
Ripristina
stato
attivo
Fine
Inizio
pronto
Acknowledg.
operazione
Salva
stato
attesa
*Interruzioni esterne



Una periferica segnala la fine di un operazione
L’esecuzione del processo corrente viene interrotta
(il processo passa allo stato pronto) e passa al gestore
delle interruzioni




Quindi interruzione esterna perché riguarda le operazioni di un’altro
processo!
Il gestore delle interruzioni provvede a trasferire dati in
memoria e risvegliare il processo in attesa che passa
allo stato pronto
Il controllo passa poi al nucleo che manda in
esecuzione uno dei processi in stato pronto
Il gestore lavora con interruzioni disabilitate
*Interruzioni esterne
Ripristina
stato
attivo
Fine
Inizio
pronto
Salva
stato
*Stati in unix
Scheduling dei processi




Il sistema operativo può interrompere i processi
Scheduler = quella parte del sistema operativo che
seleziona il processo da mandare in esecuzione
Non preemptive (non revocabili) il controllo rimane al
processo finchè non lo molla lui Funziona con una
FIFO semplice
Preemptive (revocabili) c’è un controllore attivo

Due possibili politiche di scheduling:


Round robin (time sharing)
Con Priorità
Round Robin

Gestione dei processi in attesa tramite coda



Cioe’ FIFO = first-in first-out
Ogni processo ha un quanto di tempo di
esecuzione dopo il quale torna in attesa
Il problema è l’overhead ovvero il tempo perso
per il salvataggio dello stato del processo e il
successivo ripristino. E’ utilizzo della CPU da
parte dello scheduler.
Priorità


Si assegna una priorità ad ogni processo e si manda
in esecuzione il processo con priorità più alta
La priorità può essere assegnata
 staticamente ed essere ridotta durante
l’esecuzione:


se risulta più bassa di un processo in attesa si
effettua la fase di context switching
dinamicamente:

a seconda delle operazioni effettuate dal processo
(ad es. seleziona subito processi con operazioni I/O)
* Caratteristiche di programmi
Qual è il maggior carico del programma?
Se sono gli accessi al disco I/O Bound
 Se è il calcolo CPU Bound
A seconda della caratteristica dei
programmi in esecuzione la strategia
può cambiare per ottimizzare
l’esecuzione

Multitasking
Nei sistemi più evoluti è possibile che un
utente esegua contemporaneamente
due o più programmi sullo stesso
calcolatore
 Oppure che due o più utenti utilizzino
contemporaneamente lo stesso
calcolatore

Multitasking
L’esecuzione di un programma alterna
periodi di elaborazione (utilizzo della
CPU) a periodi di attesa che i dispositivi
di I/O siano pronti
 Durante i periodi di attesa la CPU
sarebbe inutilizzata

Multitasking

Ogni volta che un
programma si
sospende in attesa
di una operazione di
I/O, il SO “passa” la
CPU ad un processo
di un altro
programma
Gestione Memoria Centrale




I processi si alternano durante l’esecuzione
nella CPU
Per ragioni di efficienza e garantire il
multitasking dobbiamo mantenere più
programmi in memoria centrale
Ciò comporta il partizionamento della memoria
centrale e del suo spazio di indirizzi.
Ogni programma deve avere una sua memoria
dedicata, ma la memoria è solo 1, dunque si
crea una memoria virtuale.
Gestore della memoria

Il gestore della memoria deve




allocare la memoria
partizionarla tra i processi che la richiedono
Grazie al gestore della memoria gli strati
superiori hanno l’illusione che ogni processo
abbia una memoria dedicata (memoria
virtuale)
Serve una funzione di rilocazione che
trasforma gli indirizzi virtuali in fisici.
Gestore delle periferiche



Maschera le caratteristiche hardware delle
periferiche
Gestisce le operazioni di input e output
Fornisce procedure ad alto livello


ad esempio per la lettura, scrittura di dati su
memorie secondarie
scrittura su stampanti, ecc
File System



Gestisce i dati in memoria di massa
Struttura i dati in modo gerarchico utilizzando file e
directory
Fornisce operazioni di alto livello per la gestione di file



ad esempio creazione di un nuovo documento, directory ecc
Protegge i dati da accessi esterni
Garantisce la condivisione sicura dei dati
File

Nome:



Struttura:



Sequenza di byte
Sequenza di blocchi (record) di byte
Tipo:



Identifica il file spesso con una estensione che indica il
tipo di file
es. Tesi.doc oppure somma.exe
File di caratteri e binari (eseguibili)
Directory
Attributi:

nome, diritti di accesso,proprietario
Operazioni su File

Il file system consente di effettuare le seguenti
operazioni:
 creare, cancellare, spostare, recuperare,
modificare documenti in memoria di massa
(memoria persistente)
 Modificare gli attributi di un file
 Ridenominare i file
Directory

E’ un file di tipo speciale che mantiene informazioni su
altri file



permette di strutturare insiemi di file (dati) in maniera
gerarchica
contiene la lista dei nomi e attributi dei file e directory al
suo interno
Quindi: il file system ha una struttura ad albero



Radice = radice del’intero file system
Nodi interni = directory
Foglie = documenti/programmi
Struttura ad albero
L’interprete dei comandi
Interprete dei comandi


Consente all’utente di attivare i programmi
Sfrutta le funzionalità degli strati inferiori per



cercare in memoria il programma invocato
allocare la memoria richiesta dal programma
attivare un processo per eseguire il programma
Evoluzione dei Sistemi Operativi
Sistemi batch con schede (50’s-60’s)
(interfaccia cartacea)
 System/360 IBM compatibili (65-70’s)
(interfaccia testuale)
 Sistemi operativi UNIX e DOS (80’s)
(interfaccia testuale/a finestre)
 WINDOWS (90’s) (interfaccia grafica)
CDE KDE Gnome (unix)

Interprete (interfaccia) orientato al
testo
Interfaccia grafica
System calls API
Il sistema operativo mette a disposizione
tutte queste funzioni per l’utente o i
programmi
 Application Program Interface


Es: open close write …
Modalità di funzionamento
User mode: non ho accesso diretto a
tutte le risorse Hw (accedo solo tramite
le API)
 Kernel (supervisor) mode: accesso
completo all’hw compresi registri della
CPU

IL PROBLEMA DELL’UOVO E DELLA
GALLINA
Il SO carica i programmi in memoria per
l’esecuzione...
 ...ma il SO è a sua volta un programma...
 ...chi carica il SO in memoria?

Avvio