Francesco Tisato Roberto Zicari Sistemi Operativi Architettura e progetto Terza edizione I .. \ lE Università IUAV di Venezia S.8.D. A 2144 BIBLIOTECA CENTRALE HJ L DEF A- Francesco Tisato Roberto Zicari .n 1 4-il. t .;L..r • SISTEMI OPERATIVI Architettura e progetto 3a edizione ISTITUTO UN!VER2!Tr\Rl0 ARCHITETTURA si~u~Si<t ~C'·n·:::·A~-~ I h: \ • • • • • '?l.......... . • ••• .C:I••••• clupGCittàStudi INDICE Capitolo 1 Introduzione Capitolo 2 Funzioni e caratteristiche di un sistema operativo 2.1 2.2 2.3 Interfaccia utente Strutturazione del sistema in livelli di macchine virtuali Una classificazione dei S.O. basata sulla terminologia corrente Bibliografia Capitolo 3 Interpretazione dei programmi 3 .1 3.2 3.3 3 .4 3.5 Introduzione Interpreti e macchine astratte La sincronizzazione con l'ambiente esterno: interruzioni Accesso diretto a memoria e canali Modi di funzionamento del processore Esercizi Bibliografia Capitolo 4 Processi e cooperazione 4.1 Processi e processori 4.2 Processi sequenziali e non sequenziali 4.3 Come specificare una esecuzione concorrente 4.4 La definizione dei processi 4.5 Esecuzione dei processi in ambiente globale 4.6 Implementazione di un processo sequenziale 4. 7 Il nucleo di un sistema a processi 4.8 Gestione dei processi in Unix (TM) Esercizi Bibliografia 9 13 14 19 27 37 39 40 40 47 63 64 66 68 69 70 71 73 80 86 92 95 100 116 118 6 Capitolo 5 Costrutti linguistici per la programmazione di sistemi concorrenti 5 .1 5.2 5.3 5 .4 5 .5 5.6 5. 7 5.8 5.9 5.10 Richiami sul concetto di tipo di dato astratto Il monitor Esempi Confronto tra primitive di monitor e primitive sui semafori Implementazione di un monitor Chiamate innestate a monitor e blocco critico Primitive di sincronizzazione basate sullo scambio messaggio CSP: Communicating Sequential Processes Ada Una classificazione dei linguaggi di programmazione concorrenti Esercizi Bibliografia Capitolo 6 Blocco critico 6.1 6.2 6.3 6.4 Il problema del blocco critico Tecniche per evitare il blocco critico Riconoscimento del blocco critico Il blocco individuale Esercizi Bibliografia Capitolo 7 Esempi di programmi concorrenti 7 .1 7 .2 7 .3 7.4 7 .5 7 .6 Introduzione Lettori e Scrittori I cinque filosofi Gestione buffer pool per grandi quantità di dati Schedulatore dei movimenti della testina di un disco Gestione del tempo Esercizi Bibliografia 119 120 123 130 134 136 140 142 148 151 163 165 168 171 172 173 178 184 184 187 189 190 190 195 201 206 212 213 228 Capitolo 8 Politiche di assegnazione dell'unità centrale 229 8.1 8.2 8.3 8.4 8.5 230 230 232 233 234 Livelli di scheduling Indici di prestazione First Come First Served (FCFS) Round Robin (RR) Priorità 7 8.6 Shortest Elapsed Time (SET) 8. 7 Politiche previsionali 8.8 Gestione della Unità Centrale in Unix Esercizi Bibliografia 235 236 237 237 238 Capitolo 9 Gestione dell'ingresso/uscita 239 9 .1 Introduzione 9.2 Architettura del sottosistema di ingresso/uscita 9.3 I driver di periferica 9.4 La gestione dell'ingresso/uscita Unix Esercizi Bibliografia 240 241 247 254 255 256 Capitolo 10 La gestione della memoria 257 10.1 10.2 10.3 10.4 Nomi, indirizzi e locazioni Il ruolo del sistema di programmazione Il ruolo dei meccanismi run-time La memoria virtuale Esercizi Bibliografia Capitolo 11 Politiche di gestione della memoria centrale 11.1 11.2 11. 3 11.4 11.5 Introduzione Partizioni fisse Segmentazione Paginazione in sistemi uniprogrammati Paginazione in sistemi multiprogrammati Esercizi Bibliografia 258 258 263 272 286 287 289 290 290 292 298 302 304 305 Capitolo 12 File System 307 12.1 12.2 12.3 12.4 12.5 12.6 308 308 317 325 331 336 Introduzione Il File System come gestore di nomi I metodi di accesso Il mapping logico-fisico I controlli di accesso Il File System di Unix 8 12. 7 Comunicazione e sincronizzazione tra processi in Unix 12.8 Uso delle primitive Unix per la gestione file Esercizi Bibliografia 344 349 361 362 Capitolo 13 Interprete comandi 363 13 .1 13.2 13. 3 13 .4 13.5 Introduzione Caratteristiche di un interprete comandi Inizializzazione del sistema e file eseguibili Struttura di un interprete comandi L'interprete comandi di Unix Bipliografia Capitolo 14 Protezione 14.1 14.2 14.3 14.4 Introduzione Meccanismi di protezione Politiche Strutture di protezione dinamiche Esercizi Bibliografia Appendice Temi d'esame di programmazione concorrente 364 364 365 368 373 377 379 380 381 385 386 388 389 391 Informatica li sistema operativo è l'insieme dei componenti software che forniscono il supporto per la gestione di un sistema di elaborazjone e l'esecuzione dei programmi utenH. 11 volume sj propone di descrivere le funzionalità e l'architettura di un sistema operativo, con il duplice obiettivo di fornire le informazioni ili base sulle sue fuozjonalità e di presentare le metodologie più diffuse che vengono utilizzate nel progetto del sistema stesso. Dopo un' introduzione sull'evoluzione storica dei sistemi operativi e sulla terminologia corrente, viene utilizzato in modo sistematico il concetto di gerarchia di macchine astratte, così da rappresentare in modo orgaruco e modulare i componenti del sistema e le correlazioni fra essi. Per ciascun componente si presentano le soluzioni maggiormente diffuse nei moderni sistemi. Vengono discussi in dettaglio i problemi di programmazione concorrente e i linguaggi orientati a questa classe di problemi. 11 volume contiene inoltre richiami a quei concetti base di architettura dei sistemi di elaborazjone che sono essenziali per la comprensione delle problematiche tipiche dei sistemi operativi, così da renderlo accessibile aj lettori che possiedono conoscenze non particolarmente avanzate nel settore informatico. Può qwndi essere utilizzato sia come testo di base per la formazione specialistica, sia come testo informativo per cbi debba accostarsi ai sistemi operativi dal punto di vista dell'utente. Questa terza edirione, approfondisce ulteriormente la descrizione del sistema operativo Unix come caso di studio esemplificativo dei concetti introdotti nel libro. Inoltre, il volume è arricchito da una raccolta di Terni d'esame risolti di programmazione concorrente svolti nel corso di Sistemi operarivi presso il Politecnico di Milano. Francesco TI. .to è professore straordinario di Calcolatori Elettronici presso l'Università degli Studi di Milano. Roberto Zlcarl è professore associato di Sistemi Operativi presso il Politecnico di Milano. ISBN 88-251-0015-9 9 788825 100150