Sistemo Operativi

Transcript

Sistemo Operativi
Università di Roma Tor Vergata
Corso di Laurea triennale in Informatica
Sistemi operativi e reti
A.A. 2013-14
Pietro Frasca
Lezione 2
Giovedì 10-10-2013
1
Sistemi a partizione di tempo (time-sharing)
• I sistemi batch multiprogrammati usano le risorse di
sistema come la CPU, la memoria, le periferiche, etc., in
modo efficiente, ma non consentono l’interazione con
l’utente.
• Un SO time-sharing permette a più utenti di condividere il
calcolatore nello stesso momento.
• Si sono diffusi nei primi anni ’70 con l’introduzione dei
minicalcolatori, molto più economici rispetto ai mainframe.
• Molti SO moderni sono a partizione di tempo e
multiprogrammati.
• La CPU viene commutata rapidamente da un programma
all’altro, dando ad ogni utente l’impressione di disporre, in
ogni istante, dell’intero calcolatore.
• L’obiettivo principale per i sistemi time-sharing è
minimizzare il tempo di risposta dei programmi e quindi
minimizzare il tempo di attesa medio da parte degli utenti
per ottenere dal programma una risposta alle richieste
effettuate.
2
• La reale condivisione può risultare evidente nel caso in cui il
sistema è “carico”, cioè molti utenti sono in quel momento
connessi e ci sono molti processi attivi o quando nel
sistema si eseguono lunghe operazione di I/O, come ad
esempio, stampe di grandi documenti.
• Ciascun utente può far eseguire più di un programma
contemporaneamente (processo).
• Oltre alla multiprogrammazione, i SO a partizione di tempo
introducono interessanti e complesse tecniche:
– sono dotati di memoria virtuale che consente l’esecuzione di
programmi, anche se parzialmente caricati in memoria, cioè i
programmi possono avere anche dimensioni superiori alla
memoria fisica disponibile;
– sono dotati di file system che rappresenta un’astrazione dei
dischi, facendo vedere all’utente un disco come composto da
file e directory (cartelle) nidificate;
– utilizzano sofisticate tecnologie, sia hardware che software per
consentire l’esecuzione concorrente dei processi gestiti da
funzioni di scheduling della CPU e funzioni per la
sincronizzazione e comunicazione dei processi.
3
• Questi sistemi devono anche garantire che i processi non si
blocchino in stati di attesa indefinita reciproca (stallo).
• In pratica, un utente si collega ad un sistema time-sharing
utilizzando un terminale o un PC sul quale è installata
un’applicazione che utilizza un protocollo di comunicazione
per la connessione remota, come ad esempio telnet, rsh,
rlogin e ssh (security shell). Quest’ultimo è l’unico che
garantisce sicurezza nella connessione.
• Per connettersi un utente deve avere un account (utenza)
sul sistema. L’utente inizia una sessione di lavoro inserendo
uno username e una password (login). Una volta connesso
comunica con il SO mediante una shell o con una GUI
(Graphics User Inteface).
• La shell è un’interfaccia a riga di comando con la quale
l’utente può digitare i comandi per la gestione e il controllo
del SO o avviare applicazioni. Al termine del lavoro, l’utente
esegue l’operazione di logout per disconnettersi dal
sistema.
• L’utente vede il comportamento della macchina come se
questa fosse dedicata tutta a lui (macchina virtuale).
• La politica di scheduling della CPU usata nei sistemi a
partizione di tempo è di eseguire i vari programmi
assegnando loro un quanto di tempo di CPU (time slice)
dell’ordine di alcune decine di millisecondi.
4
• Durante questo intervallo, il programma può terminare, o
bloccarsi nel caso esegua operazioni di I/O, consentendo
quindi la selezione di un nuovo programma da assegnare
alla CPU.
SISTEMA
TIME-SHARING
telnet, ssh
switch
PC
PC
PC
TS
TTY
TTY
Protocolli
seriali
TTY
Terminali
alfanumerici
5
Sistemi in tempo reale
• Il calcolatore è utilizzato per la gestione e il controllo di un
sistema fisico, detto ambiente operativo, come ad esempio
impianti industriali, centrali elettriche, robot, etc.
• Anche questi sistemi utilizzano la multiprogrammazione ,
dato che generalmente i task che il sistema deve svolgere
sono molti.
• Caratteristica fondamentale dei SO realtime è che ogni task
deve essere eseguito entro un intervallo di tempo
definito (deadline) imposto dall’applicazione (da
microsecondi a millisecondi).
• In altri termini, la validità dei risultati ottenuti da un
programma non dipende solo dalla correttezza del
programma, ma anche dall’intervallo di tempo entro il quale
i risultati sono prodotti.
6
Esempio
Per il processo in figura si ha:
• Istante di richiesta R = 0;
• tempo di esecuzione E = E1 + E2 = 20 + 40 = 60
• deadline D = 100
• Tempo di risposta = 90
R
E2
E1
D
P
0 10
30
50
70
90 100
Tempo di risposta
Deadline
7
SISTEMA DA CONTROLLARE
SENSORI
ATTUATORI
SISTEMA OPERATIVO IN TEMPO REALE
(REAL TIME)
8
• Nei SO real-time generalmente i task hanno diverse criticità
e quindi hanno diverse priorità.
• Le priorità possono essere assegnate in modo statico
(priorità statiche) o calcolate dinamicamente in base alle
caratteristiche dei singoli task (priorità dinamiche).
• I SO real-time sono classificati in hard real-time e soft
real-time. In questi ultimi, una deadline non rispettata,
non danneggia il funzionamento dell’ambiente operativo,
ma ne abbassa le prestazioni e quindi la qualità del
servizio (QoS Quality of Service).
• Una categoria di SO in tempo reale molto importante, per
via della loro diffusione, è costituita dai sistemi dedicati
(embedded systems): schede di controllo di varie
apparecchiature, controllo motore di automobili,
elettrodomestici, etc.
• Alcuni SO in tempo reale sono ottenuti dai SO time-sharing
di uso generale, come ad esempio RT-Linux.
9
Sistemi paralleli e distribuiti
• I sistemi paralleli sono dotati di più CPU. In questi sistemi
più processi potrebbero essere realmente eseguiti
contemporaneamente.
• Il SO deve risolvere vari problemi legati all’esecuzione in
parallelo dei programmi, nel caso che essi accedono
simultaneamente agli stessi dati.
• Prevenire possibili condizioni di inconsistenza sulle strutture
dati del sistema, che si potrebbero verificare se queste
fossero modificate contemporaneamente da funzioni di SO
eseguite su diverse CPU.
• Lo sviluppo delle reti ha portato alla realizzazione di moduli
di SO per la gestione delle schede di rete e di vari servizi
che hanno permesso ai sistemi collegati in rete di
condividere dati e informazioni in vario modo: ad esempio il
www, e alla possibilità di realizzare applicazioni distribuite.
10
• I SO per calcolatori collegati in rete vengono generalmente
classificati in due categorie:
– Sistemi operativi di rete: ogni nodo della rete dispone
di un proprio sistema operativo (non necessariamente
uguale). I sistemi cooperano tra di loro, per esempio
applicazioni web a n-strati.
– Sistemi operativi distribuiti: su ogni nodo deve girare
lo stesso SO. L’utente vede l’intero sistema come un
unico calcolatore. Il SO deve provvedere a bilanciare il
carico di lavoro distribuendolo opportunamente sui vari
nodi del sistema. I nodi condividono le risorse. Un
esempio è dato dai sistemi cluster.
11
Sistemi operativi per PC
• I primi SO per personal computer erano semplici
monoprogrammati e monoutente.
• Con l’aumento delle prestazione dei microprocessori e delle
dimensioni della memoria, la tecnica della
multiprogrammazione è stata implementata anche nei SO
per PC.
• Tutti i sistemi operativi moderni per PC sono multitasking:
windows XP, windows 7 e Windows 8 (Microsoft), MacOs del
Macinthosh (Apple) e Linux che è un anche un sistema
time-sharing.
12