|
|
Sistemi operativi - seconda edizione
|
| Editore | Mc Graw Hill |
| Autore | Paolo Ancilotti ; Maurelio Boari ; Anna Ciampolini ; Giuseppe Lipari |
| Collana | Istruzione scientifica |
| Pagine | 403 |
| Volumi | 1 |
| Livello | Introduttivo-Intermedio |
| Lingua | Italiano |
| Data pubblicazione | 06 - 2008 |
| ISBN | 9788838664328 |
|
|
| Prezzo di copertina |
| Euro 35,00 |
|
Indice
Prefazione XI
Ringraziamenti dell’Editore XVII
1 Concetti introduttivi 1
1.1 Principali funzioni di un sistema operativo 1
1.1.1 Facilita` di programmazione e portabilita` dei programmi 3
1.1.2 Gestione delle risorse 4
1.1.3 Protezione, sicurezza, tolleranza ai guasti 5
1.1.4 Astrazione di macchina virtuale 6
1.2 Cenni storici sull’evoluzione dei sistemi operativi 7
1.2.1 I primi sistemi di elaborazione 7
1.2.2 I primi sistemi batch 8
1.2.3 Sistemi batch multiprogrammati 9
1.2.4 Sistemi time-sharing 14
1.2.5 Sistemi in ‘‘tempo reale’’ 16
1.2.6 Sistemi operativi per personal computer 18
1.2.7 Sistemi operativi per sistemi paralleli e distribuiti 19
1.3 Richiami di architetture dei sistemi di elaborazione 20
1.3.1 Il processore 21
1.3.2 La memoria 22
1.3.3 Dispositivi d’ingresso/uscita 25
1.3.4 Meccanismo d’interruzione 26
1.3.5 Accessi diretti alla memoria (DMA) 30
1.3.6 Meccanismi di protezione 32
1.4 Struttura dei sistemi operativi 34
1.4.1 Principali componenti di un sistema operativo 34
1.4.2 Principali modelli strutturali 39
1.5 Sintassi utilizzata nel testo 44
Sommario 45
Note bibliografiche 46
Domande di riepilogo 47
Problemi 48
2 Gestione dei processi 49
2.1 Definizione di processo 50
2.2 Stati di un processo 51
2.3 Descrittore di un processo 54
2.4 Code di processi 55
2.5 Cambio di contesto 57
2.6 Creazione e terminazione dei processi 57
2.7 Interazione tra i processi 58
2.8 Nucleo di un sistema a processi 60
2.9 Scheduling 63
2.9.1 Algoritmo First-Come-First-Served (FCFS) 67
2.9.2 Shortest-Job-First (SJF) 69
2.9.3 Shortest-Remaining-Time-First (SRTF) 70
2.9.4 Round-Robin (RR) 71
2.9.5 Schedulazione su base prioritaria 74
2.9.6 Schedulazione ‘‘a code multiple’’ 75
2.9.7 Schedulazione di sistemi in tempo reale 77
2.9.8 Algoritmi di scheduling per sistemi multimediali 82
2.10 Processi leggeri (thread) 83
Sommario 86
Note bibliografiche 87
Domande di riepilogo 87
Problemi 88
3 Sincronizzazione dei processi 91
3.1 Tipi di interazione tra i processi 91
3.2 Problema della mutua esclusione 95
3.2.1 Soluzioni al problema della mutua esclusione 96
3.3 Problema della comunicazione 98
3.4 Semafori 100
3.4.1 Soluzione al problema della mutua esclusione 100
3.4.2 Soluzione al problema della comunicazione 102
3.5 Primitive send e receive 104
3.6 Soluzione al problema di comunicazione tra processi 106
3.6.1 Sincronizzazione tra processi comunicanti 108
3.7 Blocco critico 109
3.7.1 Condizioni per il blocco critico 114
3.7.2 Metodi per il trattamento del blocco critico 115
3.7.3 Individuazione di eventuali blocchi critici e
successivo ripristino 119
Sommario 120
Note bibliografiche 121
Domande di riepilogo 121
Problemi 122
4 Gestione della memoria 123
4.1 Introduzione alla gestione della memoria 123
4.1.1 Analogie con la gestione della CPU 124
4.1.2 Differenze rispetto alla gestione della CPU 125
4.2 Aspetti caratterizzanti la gestione della memoria 126
4.2.1 La memoria virtuale 127
4.2.2 Rilocazione statica e dinamica - Memory Management Unit 129
4.2.3 Organizzazione della memoria virtuale 135
4.2.4 Allocazione della memoria fisica 137
4.2.5 Dimensionamento della memoria virtuale 140
4.3 Tecniche di gestione della memoria 141
4.3.1 Memoria partizionata 142
4.3.2 Memoria segmentata 148
4.3.3 Memoria paginata 157
4.3.4 Memoria segmentata e paginata 169
4.3.5 Gestione degli spazi virtuali 170
Sommario 174
Note bibliografiche 174
Domande di riepilogo 175
Problemi 175
5 Gestione delle periferiche (I/O) 177
5.1 Concetti generali 178
5.2 Organizzazione logica del sottosistema di I/O 181
5.2.1 Livello indipendente dai dispositivi 181
5.2.3 Livello dipendente dai dispositivi 187
5.3 Gestore di un dispositivo 189
5.3.1 Processi esterni 191
5.3.2 Gestione di un dispositivo a controllo di programma 192
5.3.3 Gestione di un dispositivo a interruzione 193
5.3.4 Gestione di un dispositivo in DMA 199
5.3.5 Flusso di controllo durante un trasferimento 200
5.3.6 Gestione del temporizzatore 201
5.4 Gestione e organizzazione dei dischi 203
5.4.1 Organizzazione fisica dei dischi 203
5.4.2 Criteri di ordinamento dei dati su disco e di scheduling
delle richieste di trasferimento 206
5.4.3 Dischi RAID 209
Sommario 212
Note bibliografiche 212
Domande di riepilogo 213
Problemi 213
6 Il file system 215
6.1 Organizzazione del file system 215
6.2 La struttura logica del file system 217
6.2.1 Il file 217
6.2.2 La directory 218
6.2.3 Gestione della struttura logica del file system 220
6.3 Accesso al file system 221
6.3.1 Strutture dati e operazioni per l’accesso ai file 221
6.3.2 Metodi di accesso 223
6.4 Organizzazione fisica 225
6.4.1 Tecniche di allocazione dei file 226
Sommario 231
Note bibliografiche 232
Domande di riepilogo 232
Problemi 233
7 Protezione e sicurezza 235
7.1 Modelli, politiche e meccanismi di protezione 235
7.2 Domini di protezione 237
7.3 Il modello matrice degli accessi 239
7.3.1 Rappresentazione dello stato di protezione 239
7.3.2 Rispetto dei vincoli di accesso 239
7.3.3 Modifica dello stato di protezione 240
7.4 Realizzazione della matrice degli accessi 241
7.4.1 Lista di controllo degli accessi (ACL, Access Control List) 241
7.4.2 La lista delle capability ( C_List, Capability List) 242
7.5 Sistema di sicurezza multilivello 243
7.6 Controllo degli accessi basato sui ruoli
(Role Based Access Control, RBAC) 245
7.7 Basi di calcolo fidate 246
7.8 Autenticazione degli utenti 247
7.8.1 Autenticazione tramite parole chiave 248
Sommario 249
Note bibliografiche 250
Domande di riepilogo 251
Problemi 251
8 I sistemi operativi Unix e Linux 253
8.1 Introduzione a Unix 253
8.1.1 La storia di Unix 253
8.1.2 Linux 254
8.2 Architettura del sistema operativo UNIX 255
8.2.1 Organizzazione 255
8.3 I processi nel sistema operativo Unix 256
8.3.1 Caratteristiche 257
8.3.2 Immagine di un processo Unix 258
8.3.3 System Call per la gestione di processi 260
8.3.4 Lo scheduling in Unix 265
8.4 La gestione della memoria nel sistema Unix 266
8.5 Il file system 266
8.5.1 Organizzazione logica del file system di Unix 267
8.5.2 Protezione 268
8.5.3 Organizzazione fisica del file system di Unix 271
8.5.4 Strutture dati del kernel per l’accesso a un file 273
8.5.5 System Call per l’accesso a un file 275
8.6 Interazione tra processi 278
8.6.1 Sincronizzazione: i segnali 278
8.6.2 System Call per l’uso dei segnali 280
8.6.3 Comunicazione: pipe 282
8.7 Interazione con l’utente 284
8.7.1 Lo shell 284
8.7.2 Comandi, argomenti, opzioni 285
8.8 I thread nel sistema Linux 286
8.8.1 Gestione di thread secondo lo standard POSIX:
la libreria pthreads 287
8.8.2 Sincronizzazione tra thread Linux 289
8.8.3 Un esempio di sincronizzazione tra thread 293
Sommario 297
Note bibliografiche 298
Domande di riepilogo 298
Problemi 299
9 Il sistema operativo Windows 301
9.1 Struttura generale 301
9.1.1 Evoluzione storica 301
9.1.2 Sottosistemi e moduli del nucleo 302
9.1.3 Struttura a microkernel 305
9.1.4 Kernel Objects 306
9.1.5 Sicurezza e controllo degli accessi 306
9.2 Gestione dei processi e dei thread 309
9.2.1 Lo schedulatore 311
9.3 Sincronizzazione fra thread 314
9.3.1 La famiglia di funzioni Interlocked 314
9.3.2 Oggetti di sincronizzazione 316
9.4 Gestione della memoria virtuale 322
9.5 File system 323
Sommario 325
Note bibliografiche 325
Domande di riepilogo 326
A Elementi di sincronizzazione in ambiente distribuito 327
A.1 Introduzione alle reti 327
A.1.1 Il modello OSI e la rete Internet 328
A.2 Sviluppo delle applicazioni di rete 331
A.2.1 Il modello cliente-servitore 332
A.2.2 Le socket di Unix BSD 332
A.2.3 Strutture dati associate alle socket 336
A.2.4 System Call per l’uso delle socket 337
A.3 Un esempio: esecuzione remota di comandi 344
Sommario 347
Note bibliografiche 347
Problemi 347
B Multithreading in Java 349
B.1 Ambiente di sviluppo e ambiente di esecuzione 350
B.2 I thread in Java 351
B.2.1 Creazione di thread mediante estensione della classe thread 352
B.2.2 Creazione di thread mediante implementazione
dell’interfaccia Runnable 353
B.2.3 Grafo di stato dei thread Java 354
B.2.4 Priorita` e algoritmi di scheduling dei thread Java 355
B.3 Sincronizzazione in Java 356
B.3.1 Accessi esclusivi a un oggetto e sezioni critiche 357
B.3.2 Sincronizzazione diretta: metodi wait e notify 360
Sommario 365
Note bibliografiche 365
Problemi 365
C Linguaggio di comandi (shell) in UNIX 367
C.1 Comandi di uso piu` comune 367
C.1.1 Gestione del file system 367
C.1.2 Monitoraggio e gestione dei processi 369
C.1.3 Input/output dei comandi: filtri, ridirezione e piping 369
C.2 Programmazione shell 372
C.2.1 Variabili 372
C.2.2 Sostituzioni, metacaratteri e quoting 373
C.2.3 Comandi per il controllo del flusso di esecuzione 374
C.3 Esempio conclusivo 377
Sommario 378
Note bibliografiche 379
Problemi 379
D Sistemi operativi embedded 381
D.1 Embedded Linux 383
D.2 Windows CE 384
D.3 Symbian 385
D.4 Lo standard OSEK/VDX 386
Sommario 388
Note bibliografiche 389
Bibliografia 391
Indice analitico 397
|
|
|
|