Appunti di
Sistemi Operativi
Corso L.T. Ingegneria Informatica, Proff. Nanni e Moro
UniPD, 2° semestre A.A. 2017/2018
Indice
Indice .................................................................................................................................................................................................. 1
Introduzione................................................................................................................................................................................... 3
Sistema operativo ...................................................................................................................................................................... 3
Architettura e I/O ...................................................................................................................................................................... 4
Multiprocessore, multicore ................................................................................................................................................... 6
Processi .......................................................................................................................................................................................... 7
Gestione della memoria centrale ..................................................................................................................................... 10
Gestione del filesystem ........................................................................................................................................................ 11
Protezione ................................................................................................................................................................................. 11
Strutture dati del kernel ...................................................................................................................................................... 12
Reti di Petri .................................................................................................................................................................................. 14
Definizione ................................................................................................................................................................................ 14
Evoluzione ................................................................................................................................................................................. 14
Interazioni tra processi ........................................................................................................................................................ 15
Esempi di modelli rilevanti con le reti di Petri ........................................................................................................... 16
Reti di Petri estese (EPN) .................................................................................................................................................... 17
Hardware ...................................................................................................................................................................................... 19
Central Processing Unit........................................................................................................................................................ 19
Parallelismo .............................................................................................................................................................................. 22
Concorrenza ................................................................................................................................................................................ 25
Evoluzione dei processi ....................................................................................................................................................... 28
Semafori ..................................................................................................................................................................................... 32
Monitor ....................................................................................................................................................................................... 34
Scheduling CPU .......................................................................................................................................................................... 37
Introduzione ............................................................................................................................................................................. 37
Algoritmi di scheduling ........................................................................................................................................................ 39
Gestione della memoria ........................................................................................................................................................ 46
Introduzione ............................................................................................................................................................................. 46
Paginazione ............................................................................................................................................................................... 47
Segmentazione......................................................................................................................................................................... 49
Memoria virtuale .................................................................................................................................................................... 50
Gestione file ................................................................................................................................................................................. 57
File ................................................................................................................................................................................................ 57
Struttura logica del disco .................................................................................................................................................... 59
Strutture delle directory ...................................................................................................................................................... 59
- 1 -
Struttura fisica del disco ...................................................................................................................................................... 60
Scheduling disco ..................................................................................................................................................................... 62
Formattazione e correzione ............................................................................................................................................... 63
RAID ............................................................................................................................................................................................. 65
Realizzazione filesystem ..................................................................................................................................................... 67
Realizzazione directory ....................................................................................................................................................... 68
Nozioni finali sui file system .............................................................................................................................................. 70
Affidabilità .................................................................................................................................................................................... 73
Linguaggio C................................................................................................................................................................................. 74
Introduzione ............................................................................................................................................................................. 74
Sintassi ........................................................................................................................................................................................ 74
Funzioni ...................................................................................................................................................................................... 78
Questa dispensa contiene tutti gli appunti dalle lezioni del prof. Nanni, più gli appunti sulle reti di Petri
e sul linguaggio C tenuti dal prof. Moro.
Non sono comprese le lezioni sul linguaggio Java e UNIX (prof. Moro).
- 2 -
Introduzione
Slide 1-70 Nanni
Sistema operativo
Il sistema operativo è un software che agisce da
intermediario tra l’utente e l’hardware del computer. Deve
fornire servizi e caratteristiche presenti a tutti i suoi utenti.
Il SO perfetto è invisibile all’utente. Ogni utente pensa in
modo diverso all’utilizzo del computer: ha una propria
visione astratta del sistema di elaborazione, che tiene conto
solo di quelle caratteristiche che l’utente ritiene importanti.
Scopi del sistema operativo:
1. Eseguire i programmi, supportando l’utente nel “risolvere problemi”
2. Rendere agevole l’interfaccia fra l’uomo e la macchina
3. Gestire in modo efficiente le risorse (hardware/software) del sistema di calcolo
4. Prevenire le interferenze tra/con le attività degli utenti
Struttura
Il SO può essere descritto attraverso un modello a gusci
concentrici che circondano l’hardware, a contatto diretto
con il quale è il nucleo o kernel, che ingloba le funzioni più
elementari eseguibili direttamente dall’hardware stesso.
All’esterno c’è invece la cosiddetta shell, che consente
all’utente di accedere alle funzioni più evolute del sistema.
Gli utenti si aspettano un sistema facile da usare e dotato
di buone prestazioni. Non si preoccupano della gestione
delle risorse.
Nei tablet e gli smartphone le risorse vengono ottimizzate dal SO per fornire usabilità e basso
consumo energetico. Certi computer, come i sistemi embedded, presenti negli elettrodomestici o
nelle automobili, hanno SO che non dispongono neppure di una interfaccia utente.
Definizione
Il sistema operativo controlla e coordina l’utilizzo delle risorse hardware da parte dei diversi
programmi di sistema e applicativi. Arbitra i conflitti per l’allocazione di risorse in base ad
una politica equa ed efficiente. Controlla l’esecuzione dei programmi utente per prevenire
errori e/o uso improprio delle risorse del sistema.
Problemi:
1. Esecuzione dei programmi utente
2. Efficienza nell’uso delle risorse (processori, memoria, dischi, etc.)
3. Coordinamento dei processi
4. Protezione nell’uso delle risorse (e terminazione dei processi che ne abusano)
I SO per dispositivi mobili non sono costituiti esclusivamente da un kernel, ma anche dal
middleware, un insieme di programmi informatici che fungono da intermediari tra diverse
applicazioni e componenti software. - 3 -
Il middleware può considerarsi una collezione di ambienti software per gli sviluppatori di
applicazioni. Sia iOS di Apple che Android dispongono di un middleware che supporta lo sviluppo
di app multimediali, grafiche e database oriented
Bootstrap e BIOS
Il programma di bootstrap viene caricato all’accensione o riavvio del computer dal BIOS.
Bootstrap indica l'insieme dei processi che vengono eseguiti da un computer durante la fase
di avvio, dall'accensione fino al completo caricamento in memoria primaria del kernel del
sistema operativo a partire dalla memoria secondaria.
Il BIOS è tipicamente memorizzato nella ROM e viene identificato con il termine di
firmware. Normalmente, un boostrap loader è memorizzato su disco fisso (nel MBR). BIOS è
un insieme di routine software che fornisce una serie di funzioni di base per l'accesso
all'hardware; inizializza (e controlla) tutte le componenti del sistema; procede al caricamento
del kernel del SO e ne lancia l’esecuzione.
Architettura e I/O
Il sistema di calcolo è formato da una o più CPU e diversi controllori di device connessi ad
un bus comune, che permette l’accesso ad una memoria condivisa. CPU e controllori di
device sono eseguiti concorrenzialmente, e competono per garantirsi cicli di memoria; possono
inoltre eseguire operazioni concorrenti.
Ciascun controllore gestisce un particolare tipo di periferica e gestisce un buffer locale,
memoria usata temporaneamente per l'entrata o l'uscita dei dati; la CPU si occupa di
spostare i dati tra la memoria principale e i buffer locali, e l’I/O avviene effettivamente sui
dati contenuti nei buffer delle periferiche.
Interrupt
Il controllore informa la CPU quando ha portato a termine l’operazione di I/O, causando un
interrupt. Un interrupt è un segnale che indica il "bisogno di attenzione" da parte di una
periferica finalizzata ad una particolare richiesta di servizio, un evento che consente
l'interruzione di un processo qualora si verifichino determinate condizioni (gestione dei
processi) oppure più in generale una particolare richiesta al sistema operativo da parte di un
processo in esecuzione.
Al verificarsi di un interrupt, il controllo viene trasferito all’opportuna routine di gestione,
utilizzando il vettore degli interrupt (residente nella memoria) che contiene gli indirizzi di
tutte le routine di servizio. Si salva inoltre l’indirizzo dell’istruzione “interrotta” e lo “stato”
della CPU, dalla quale dovrà riprendere l’esecuzione al termine della gestione
dell’interruzione. Durante la gestione di un interrupt, altri eventuali interrupt giunti al
sistema sono momentaneamente “disabilitati”.
Una trap (o eccezione) è un interrupt generato via software, causato da un errore o da una
richiesta utente (effettuata tramite una system call). System call è un meccanismo, usato da
un processo a livello utente o livello applicativo, per richiedere un servizio a livello kernel.
Gestione dell’I/O
Una percentuale cospicua del codice del SO è dedicata alla gestione dell’I/O: l’interazione con
i dispositivi di I/O è fondamentale per il progetto di un sistema affidabile ed efficiente, e vi è
una grande variabilità nei dispositivi di ingresso/uscita. Ciascun controllore si occupa di un
particolare tipo di dispositivo (può gestire una o più unità ad esso connesse, e.g. più schede
video in SLI di NVIDIA). Il driver del dispositivo è il “sistema operativo” del controllore.
- 4 -
In seguito ad una richiesta di I/O, da parte di un processo utente, si verifica un’interruzione;
dopo l’inizio dell’operazione di I/O il flusso di esecuzione può seguire due percorsi distinti:
• I/O sincrono: si restituisce il controllo al processo utente solo dopo il completamento
dell’operazione di I/O. La CPU è mantenuta in stato idle da una wait (CPU
inattiva). Si può avere un solo I/O in esecuzione simultaneamente.
• I/O asincrono: altrimenti, si può prevedere la restituzione immediata del controllo: in
questo modo l’I/O può proseguire mentre il sistema esegue altre operazioni.
Dispositivi di memoria e caching
I dispositivi di memoria sono organizzati gerarchicamente in base a velocità di accesso, costo,
volatilità.
Il caching è la produzione di una copia dell’informazione in un dispositivo di memoria più
veloce (situato più in alto nella gerarchia delle memorie); la memoria principale costituisce
una cache per le memorie secondarie. La cache ha dimensioni inferiori rispetto al supporto di
memoria dal quale si effettua il caching. La gestione della cache, data la capacità limitata dei
dispositivi di caching, rappresenta un problema di progettazione fondamentale.
Un’appropriata selezione delle dimensioni e dei criteri di aggiornamento della cache può
garantire che una percentuale variabile dall’80% al 99% degli accessi si limiti alla cache, con
un notevole incremento delle prestazioni del sistema.
DMA
Il Direct Memory Access (DMA) è utilizzato per dispositivi di I/O ad alte prestazioni (SATA
controller, NIC, schede grafiche…), con velocità di trasferimento comparabili alla velocità di
accesso alla memoria centrale.
Il controllore di device trasferisce blocchi di dati dal buffer locale direttamente nella memoria
principale, senza intervento della CPU. Viene generato un solo interrupt per regolare il
trasferimento di ciascun blocco (invece di un interrupt per byte).
- 5 -
Multiprocessore, multicore
Fino a qualche anno fa molti sistemi utilizzavano un singolo processore general-purpose, pur
inglobando molti microprocessori special-purpose (e.g. per scheda video). Da qualche anno i
sistemi multiprocessore e multicore hanno iniziato a dominare il mondo della computazione:
1. Maggiore throughput (maggior numero di processi terminati nell’unità di tempo)
2. Migliore economia di scala (prezzi più bassi rispetto a più sistemi monoprocessore)
3. Incremento dell’affidabilità (i guasti non bloccano il sistema)
Multiprocessore Multicore
I sistemi multiprocessore attualmente in uso Nei sistemi multicore si raggruppano diverse
permettono la multielaborazione asimmetrica. unità di calcolo core in un singolo chip. Più
Ad ogni processore viene assegnato un compito efficienti, perché le comunicazioni, sul singolo
specifico; un processore principale sovrintende chip, sono più veloci. Un chip multicore usa
all’intero sistema. molta meno potenza di diversi chip single core.
Cluster
Simili ai sistemi multiprocessore, ma composti da due o più calcolatori completi, detti nodi,
collegati tra loro, normalmente collegati ad una memoria secondaria condivisa tramite una
SAN (storage area network). Presentano inerentemente una notevole fault tolerance.
Clustering asimmetrico: un calcolatore rimane
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Sistemi operativi - Appunti
-
Appunti di Sistemi operativi
-
Sistemi operativi - Appunti
-
Appunti Sistemi Operativi - Seminari sistemi UAV , sistemi operativi NuttX-ROS