Appunti di Sistemi Operativi
Bimbati Alan
Contents
1 Introduzione 2
1.1 Classificazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Sistemi Batch Monoprogrammati . . . . . . . . . . . . . . . . 2
1.3 Sistemi Multiprogrammati . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Sistemi Multiprogrammati con Spooling . . . . . . . . 3
1.4 Time-Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Overhead per la gestione del multi-tasking . . . . . . . . . . . 3
1.6 Sistemi in tempo reale . . . . . . . . . . . . . . . . . . . . . . 4
1.7 Architettura di un sistema di elaborazione . . . . . . . . . . . 4
1.8 Funzionamento del Meccanismo di Interruzione . . . . . . . . 4
1.9 Meccanismi di Protezione . . . . . . . . . . . . . . . . . . . . 5
1.9.1 Stato utente . . . . . . . . . . . . . . . . . . . . . . . . 5
1.9.2 Supervisore (Kernel Mode) . . . . . . . . . . . . . . . 5
1.9.3 Transazione Stato Utente - Supervisore . . . . . . . . 6
2 Gestione dei processi 6
2.1 Direct Memory Access (DMA) . . . . . . . . . . . . . . . . . 6
2.2 Struttura dei Sistemi Operativi . . . . . . . . . . . . . . . . . 6
2.3 Processi concorrenti . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Tipi di interazione tra Processi . . . . . . . . . . . . . . . . . 7
2.5 Sincronizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 Nucleo di un sistema a processi . . . . . . . . . . . . . . . . . 8
2.7 Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.7.1 Scheduling FIFO . . . . . . . . . . . . . . . . . . . . . 9
2.7.2 Scheduling SJF (Shortest Job First) . . . . . . . . . . 9
2.7.3 Scheduling Round Robin . . . . . . . . . . . . . . . . 9
2.7.4 Scheduling con priorita’ . . . . . . . . . . . . . . . . . 10
3 Thread 10
3.1 Implementazione dei thread . . . . . . . . . . . . . . . . . . . 11
4 Semafori 11
4.1 Semafori con multiprocessori . . . . . . . . . . . . . . . . . . 12
1
1 Introduzione
Un sistema operativo e’ un codice scritto in parte in C in parte in Assem-
bly e serve ad interfacciare l’hardwere con il softwere. Esso inoltre serve a
facilitare l’utilizzo di una macchina e garantisce l’efficienza del suo utilizzo.
1.1 Classificazioni
Organizzazione interne dei processi
• Monoprogrammati: l’esecuzione avviene per un programma alla volta
• Multiprogrammati: piu’ programmi vengono eseguiti contemporanea-
mente
• Time-sharing: in un arco di tempo piu’ programmi sono eseguiti ”con-
temporaneamente”
In base alla visibilit dell’utente
• Batch: sistemi per l’esecuzione di ”lotti” di programmi (non piu’ usati)
• Interattivi: sistemi che interagiscono con l’utente
• Real-time: sistemi che richiedono risorse ”al momento”, esempio: sis-
tema di un Aereo
• Dedicati: sistemi specializzati, esempio: Android
• Distribuiti: sistemi non centralizzati
1.2 Sistemi Batch Monoprogrammati
Questi sistemi non sono interattivi, sono gestiti tramite lotti fisici. In questo
modo il processore ha un utilizzo inefficiente in termini di tempo. Infatti
l’esecuzione non richiede molto tempo, al contrario per della preparazione
del processo.
Le periferiche sono notevolmente piu’ lente dell’esecuzione del processore,
ecco perche’ l’esecuzione e’ molto piu’ veloce della preparazione.
1.3 Sistemi Multiprogrammati
I programmi vengono gestiti contemporaneamente. Questo permette un’ottimizzazione
dell’uso delle risorse; possibilit di sovrapporre operazioni diverse nel tempo;
multi-tasking
Vantaggio: riduzione del tempo globale dei processi
Svantaggio: aumento del tempo di risposta per un singolo programma
2
1.3.1 Sistemi Multiprogrammati con Spooling
Lo spooling permette di gestire task di tipo differente (I/O), cosi’ da creare
una sorta di pipeline e quindi velocizzare l’esecuzione dei processi.Lo spool-
ing sovrappone le istruzioni di I/O con quelle di calcolo.
1.4 Time-Sharing
Per ogni processo il S.O. assegna ciclicamente un intervallo di tempo della
CPU per cui quel processo viene eseguito.
Vantaggio: maggior interattivita’, il processo viene eseguito circa la chia-
mata di quel processo, favorisce i tempi I/O bound
Svantaggio: ogni processo preso singolarmente richieder molto pi tempo di
risposta, penaliza i tempi CPU bound
Nota:
• I/O bound sono i processi che richiedono interazione con l’utente, pro-
cessi che richiedono risosrse di input o output (esempio word)
• CPU bound sono i processi che richiedono un lavoro da parte della
CPU (esempio calcoli matematici)
1.5 Overhead per la gestione del multi-tasking
L’overhead e’ il tempo necessario che richiede un processo per far eseguire
il processo successivo. Esso gestisce
• Il cambio di contesto, cioe’ l’esecuzione di un nuovo processo che<