architettura dei sistemi operativi. docente ing. andrea sanna politecnico di torino dip. di...
TRANSCRIPT
![Page 1: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/1.jpg)
Architettura dei Sistemi Operativi
![Page 2: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/2.jpg)
Docente
Ing. Andrea SannaPolitecnico di Torino Dip. di Automatica e Informatica - DAUIN
Tel. 011- 564 7035Fax. 011- 564 7099Email: [email protected]
![Page 3: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/3.jpg)
Obiettivi
Il modulo si propone di illustrare i principi ed i metodi della programmazione concorrente ed analizzare la struttura dei moduli componenti un sistema operativo. Obiettivo del corso è far acquisire allo studente la capacità di gestione efficiente delle risorse di un sistema di elaborazione mediante la programmazione di sistema.
![Page 4: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/4.jpg)
Argomenti Classificazione dei Sistemi Operativi Architettura dei sistemi operativi Tipi di kernel Processi sequenziali e concorrenti Stato di un processo Dominio di un processo Context-Switching Unix system call per gestione processi Sincronizzazione e coordinazione dei processi Event flag, segnalazioni, semafori, IPC Unix system call per sincronizzazione processi Introduzione alla gestione della memoria virtuale Amministrazione di sistema: comandi e shell script –
filtri
![Page 5: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/5.jpg)
Prerequisiti Informatica I Informatica II Algoritmi e programmazione avanzata Calcolatori Elettronici
![Page 6: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/6.jpg)
Videolezioni1. Introduzione ai Sistemi Operativi
(Prima Parte)2. Introduzione ai Sistemi Operativi
(Seconda Parte3. Componenti e Struttura dei
Sistemi Operativi4. Organizzazione di un Sistema
Operativo5. Processi6. Relazioni tra Processi (Prima
Parte) 7. Relazioni tra Processi (Prima
Parte)8. Relazioni tra Processi. Blocco
Critico9. Blocco critico e problemi di
sincronizzazione (Prima parte)10. Problemi di sincronizzazione
(Seconda parte)11. Modello a scambi di messaggi
12. Modello a scambio di messaggi e assegnazione della CPU
13. Assegnazione della CPU14. Nucleo di un sistema
multiprogrammato (prima parte)15. Nucleo di un sistema
multiprogrammato (seconda parte)
16. Nucleo di un sistema multiprogrammato (terza parte)
17. Creazione e terminazione di un programma in UNIX
18. Comunicazione e sincronizzazione dei programmi in UNIX (prima parte)
19. Comunicazione e sincronizzazione dei programmi in UNIX (seconda parte)
20. Gestione della memoria (prima parte)
![Page 7: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/7.jpg)
Videolezioni21. Gestione della memoria
(seconda parte)22. Gestione della memoria (terza
parte)23. Gestione della memoria
(quarta parte)24. Gestione della memoria
(quinta parte) 25. Gestione della memoria (sesta
parte)26. Gestione della memoria
(settima parte)27. Gestione delle periferiche
(prima parte)28. Gestione delle periferiche
(seconda parte)29. Gestione delle periferiche
(terza parte)
30. Gestione dei file (prima parte) 31. Gestione dei file (seconda
parte)32. Gestione dei file (terza parte)33. Gestione dei file (quarta parte)34. Gestione dei file (quinta parte)35. Gestione dei file (sesta parte);
Interprete dei comandi in UNIX (prima parte)
36. Interprete dei comandi in UNIX (seconda parte)
37. Interprete dei comandi in UNIX (terza parte)
![Page 8: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/8.jpg)
Testi di riferimento
A. Silberschatz, P.B. Galvin, G. Gagne: Sistemi operativi concetti ed esempi, ottava edizione, Ed. Pearson, 2009, ISBN: 978-88-7192-569-1
P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari: Sistemi Operativi, McGraw-Hill, 2004, ISBN: 88-386-6069-7
Dispense del corso fornite a supporto in formato elettronico: http://sanna.polito.it/scano/
![Page 9: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/9.jpg)
Esame L’esame consiste in una prova scritta
che potrà vertere su tutti gli argomenti indicati nel programma del corso: domande esercizi
Esempi di compiti possono essere scaricati da: http://sanna.polito.it/scano/
![Page 10: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/10.jpg)
Videolezioni
Ia videolezione: 31 marzo - ore 15.00
IIa videolezione: 4 aprile - ore 15.00
IIIa videolezione: 7 aprile - ore 15.00
![Page 11: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/11.jpg)
Strumenti di sincronizzazione
Sleep - wake up Semafori Scambio di messaggi Pipe/Fifo Monitor …
![Page 12: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/12.jpg)
Monitor
![Page 13: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/13.jpg)
Monitor
Il costrutto monitor permette di definire un tipo di dato astratto e di sincronizzare processi che devono accedere in modo concorrente ad una stessa struttura dati di tipo monitor. Nel seguito è riportata la sintassi per definire un tipo di dato monitor e per dichiarare variabili di tipo monitor
![Page 14: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/14.jpg)
Monitor
type =monitor;procedure entry (...);
begin...end; procedure entry (...);
begin...end; procedure (...);
begin...end; begin end;var :
![Page 15: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/15.jpg)
Monitor Il costrutto monitor permette di definire un
nuovo tipo di dato astratto, a cui saranno associate le operazioni (definite come procedure entry nella definizione) che costituiscono l'unica interfaccia attraverso cui si può agire sullo stato delle variabili di quel tipo.
Per esempio si potrebbe definire un tipo buffer dotato di operazioni inserimento ed estrazione. L'implementazione del buffer (che potrà per esempio essere realizzato come vettore circolare o come lista linkata) non sarà visibile all'esterno.
![Page 16: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/16.jpg)
Monitor In aggiunta il monitor permette di realizzare la
sincronizzazione tra processi che condividono strutture dati di questo tipo in due modi: assicurando che ogni operazione eseguibile su una
data struttura dati x di tipo monitor avverrà in mutua esclusione rispetto a qualsiasi altra operazione sulla stessa struttura
permettendo ai processi che eseguono operazioni su una struttura dati di tipo monitor di sospendersi eseguendo una istruzione cond.wait (o wait(cond)) se non è verificata una data condizione cond.
![Page 17: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/17.jpg)
Monitor Inoltre, tali processi possono essere
risvegliati grazie all'esecuzione di una istruzione cond.signal (o signal(cond)) da parte di un altro processo che abbia richiesto l'esecuzione di una delle operazioni associate allo stesso monitor. Esistono varianti dell'operazione wait in cui è previsto che possa essere passato un parametro p il quale viene interpretato come priorità e viene usato per decidere in che ordine risvegliare i processi in attesa di una data condizione al momento dell'esecuzione di una cond.signal.
![Page 18: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/18.jpg)
Monitor: esempio Consideriamo il seguente esempio: si
tratta di un buffer utilizzabile per realizzare un sistema produttore-consumatore. È una variante rispetto all'esempio classico in quanto la procedura inserzione comprende un parametro aggiuntivo n tramite il quale è possibile richiedere di inserire nel buffer n copie di un messaggio
![Page 19: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/19.jpg)
Monitor: esempiotype buffer = monitor;var non_vuoto, non_pieno:condition;var count:integer; progedure entry inserzione(n, msg) begin
for i:=1 to n begin
if count = N then non_pieno.wait; INSERIMENTO DI msg NEL BUFFER; count := count+1; if count=1 then non_vuoto.signal
end; end; progedure entry estrazione(var msg) begin
if count = 0 then non_vuoto.wait; COPIA IN msg IL PRIMO ELEMENTO DEL BUFFER; count := count-1; if count= N-1 then non_pieno.signal
end; begin;
count:=0; end; var ProdCons:buffer;
![Page 20: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/20.jpg)
Monitor: come classe Come la classe:
È un tipo di dato astratto che incapsula sia i dati che le funzioni che li manipolano.
Le funzioni non visibili dall'esterno della classe sono precedute dalla parola chiave private.
Implicitamente fornisce la mutua esclusione nell’esecuzione delle sue procedure.
Al suo interno possono essere dichiarate variabili di tipo condition utili per la sincronizzazione.
![Page 21: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/21.jpg)
Condition wait e signal Operazioni su variabili di tipo condition:
Condition wait è sempre bloccante. Condition signal sveglia il primo processo
bloccato su una coda associata alla condition.
Un segnale su una coda di condizione vuota non ha alcun effetto.
![Page 22: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/22.jpg)
Produttore - Consumatoreconst int MAX = 100;
monitor BoundedBuffer {
private:
Message buffer [MAX];
int p, c, count;
condition nonempty, nonfull;
public:
void send(Message m);
Message receive(void);
void init(void);
};
![Page 23: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/23.jpg)
Produttore - Consumatorevoid send(Message m){ if (count == MAX) wait(nonfull); buffer[p] = m; p = (p + 1) % MAX; count++; signal(nonempty);}
Message receive (void){ if (count == 0) wait(nonempty); m =buffer[c]; c = (c + 1) % MAX; count--; signal(nonfull);}
void init(void){ p=c=count=0}
![Page 24: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/24.jpg)
Monitor di Brinch-Hansen
ACTIVEME
WAIT
ENTER
Nessun processo attivo
EXITWAITCONTINUE
CONTINUE
WAIT
EXIT
CONTINUE
Con questo tipo di arco si indicano transizioni provocate da un altro processo
![Page 25: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/25.jpg)
Monitor di Hoare
Con questo tipo di arco si indicano transizioni provocate da un altro processo
Lo stato URGENT rappresentauno stato in cui un processo finiscequando ne sblocca un altro in attesasu una variabile di tipo condition
![Page 26: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/26.jpg)
Monitor di Hoare p.wait sospende il processo che l’ha invocata su
p rilasciando il controllo esclusivo del monitor p.signal:
il processo che l’ha invocata continua l’esecuzione se non c’è alcun processo bloccato su p
altrimenti il processo viene temporaneamente sospeso mentre uno dei processi bloccati su p viene riattivato. Il processo che si sospende in seguito all’operazione p.signal riprende l’esecuzione solamente quando non c’è nessun altro processo in esecuzione nel monitor. Inoltre, tale processo ha una priorità maggiore su ogni processo che tenta di iniziare l’esecuzione di procedura del monitor.
![Page 27: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/27.jpg)
Monitor di Hoare con semafori
enter : WAIT(me)
exit : if (urgent.cnt < 0) SIGNAL(urg) else SIGNAL(me)
cond_wait :if (urgent.cnt < 0) {WAIT (cond); SIGNAL (urg)}else {WAIT (cond); SIGNAL(me)}
cond_signal :if (cond.cnt < 0) {WAIT (urg); SIGNAL (cond)}
![Page 28: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/28.jpg)
Semaforo binario con monitor
monitor SemaforoBinario {
private:
char busy;
condition risorsa_libera;
public:
void wait(void);
void signal(void);
void init(void);
};
void init(void){
busy = FALSE;
}
![Page 29: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/29.jpg)
Semaforo binario
void wait(void){
if (busy) wait(risorsa_libera);
busy = TRUE;
}
void signal(void){
busy = FALSE;
signal(risorsa_libera);
}
![Page 30: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/30.jpg)
Uso di un semaforo binario
main(void){
SemaforoBinario me;
me.init();
me.wait();
// Regione Critica;
me.signal();
}
![Page 31: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/31.jpg)
Semaforo generalemonitor Semaforo {
private:
int ar, r, s;
condition cond;
public:
void wait(void);
void signal(void);
void init(void);
};
void init(int I){
ar = r = 0; s = I;
}
![Page 32: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/32.jpg)
Semaforo generale
void wait(void){
ar++;
if (s < ar) wait(cond);
r++;
}
void signal(void){
s++;
if (s <= ar)signal(cond); // ar > r
}
Invariante semaforicoCNT = I + s - ar
![Page 33: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/33.jpg)
Uso di un semaforo generale
main(void){
SemaforoGenerale me;
me.init(1);
me.wait();
// Regione Critica;
me.signal();
}
![Page 34: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/34.jpg)
R & W con precedenza ai Readers
monitor RW_precedenza_ai_Readers {private: int nr; char busy; condition readers, writers;public: void start_read(void); void start_write(void); void end_read(void); void end_write(void); void init(void);};
![Page 35: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/35.jpg)
void init (void){ busy = FALSE; nr = 0;}
void end_read(void) {
nr--;
if (nr == 0)signal(writers);
}
void start_read(void) {
if (busy) wait(readers);
nr++;
signal(readers);
}
R & W con precedenza ai Readers
![Page 36: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/36.jpg)
void end_write(void) {
busy = FALSE;
if (queue(readers)signal(readers);
else signal(writers);
}
void start_write(void) {
if (nr > 0 || busy) wait(writers);
busy = TRUE;
}
R & W con precedenza ai Readers
![Page 37: Architettura dei Sistemi Operativi. Docente Ing. Andrea Sanna Politecnico di Torino Dip. di Automatica e Informatica - DAUIN Tel.011- 564 7035 Fax.011-](https://reader036.vdocuments.site/reader036/viewer/2022081515/5542eb77497959361e8e0fb5/html5/thumbnails/37.jpg)
void end_write(void) {
busy = FALSE;
if (queue(writers)signal(writers);
else signal(readers);
}
void start_write(void) {
if (nr > 0 || busy) wait(writers);
busy = TRUE;
}
R & W con precedenza ai Writers