Questo sito utilizza cookie per raccogliere dati statistici.
Privacy Policy
# Scheduler nei Sistemi Operativi
## Introduzione
Lo **scheduler** è una componente fondamentale responsabile della gestione dei processi e della distribuzione delle risorse della CPU tra i vari processi in esecuzione su un sistema. L'obiettivo principale dello scheduler è garantire:
- Un utilizzo efficiente della CPU.
- La minimizzazione dei tempi di attesa e di risposta.
- La massimizzazione del throughput complessivo del sistema.
## Responsabilità dello Scheduler
1. **Selezione dei Processi:**
- Lo scheduler decide quale processo assegnare alla CPU in un determinato momento.
- Questa decisione è influenzata da fattori come:
- Priorità del processo.
- Tempo trascorso in attesa.
- Tipo di algoritmo di scheduling utilizzato.
2. **Cambio di Contesto:**
- Quando lo scheduler decide di cambiare il processo in esecuzione, avviene un cambio di contesto.
- Questo processo implica:
- Il salvataggio dello stato del processo corrente (registri, stato della memoria, ecc.).
- Il ripristino dello stato del nuovo processo selezionato.
3. **Gestione della Coda dei Processi Pronti:**
- Lo scheduler mantiene una **coda dei processi pronti** per l'esecuzione.
- Gli algoritmi di scheduling determinano come i processi vengono estratti da questa coda per l'esecuzione.
4. **Gestione delle Priorità:**
- In sistemi con scheduling basato sulla priorità, lo scheduler assegna un livello di priorità a ciascun processo.
- La CPU viene assegnata al processo con la priorità più alta.
5. **Prelazione (Preemption):**
- Alcuni scheduler possono interrompere un processo in esecuzione se arriva un processo con priorità più alta o si verifica un evento critico.
- Questa capacità consente di garantire risposte rapide a situazioni urgenti.
---
## Terminologia
1. **Ready Queue:**
- Una "coda dei processi pronti" è una struttura dati contenente i processi pronti per l'esecuzione ma che devono ancora ottenere l'accesso alla CPU.
2. **CPU Burst:**
- Un "CPU burst" è un periodo in cui un processo utilizza intensivamente la CPU senza richieste di operazioni di input/output.
3. **I/O Burst:**
- Un "I/O burst" è un periodo in cui un processo effettua operazioni di input/output, interagendo con dispositivi come dischi o periferiche.
4. **I/O Bound:**
- Un processo è "I/O bound" se trascorre la maggior parte del suo tempo eseguendo operazioni di input/output rispetto a calcoli intensivi.
5. **CPU Bound:**
- Un processo è "CPU bound" se trascorre la maggior parte del suo tempo eseguendo calcoli intensivi, con brevi periodi di input/output.
6. **Prelazione:**
- La "prelazione" si verifica quando un processo in esecuzione viene interrotto prima di completare il suo CPU burst per assegnare la CPU a un processo con priorità più alta o a uno nuovo.
7. **Dispatcher:**
- Il "dispatcher" è responsabile dell'effettivo cambio di contesto (context switch), salvando lo stato del processo corrente e ripristinando quello del nuovo processo.
---
## Criteri di Scheduling
Per analizzare e confrontare i diversi algoritmi di scheduling, si considerano i seguenti parametri:
1. **Utilizzo della CPU:**
- Percentuale media di utilizzo della CPU nell'unità di tempo.
2. **Throughput:**
- Numero di processi completati nell'unità di tempo.
3. **Tempo di Attesa:**
- Tempo totale trascorso da un processo nella coda dei processi pronti.
4. **Turnaround:**
- Intervallo di tempo tra l’iscrizione in coda di un processo e il suo completamento.
5. **Tempo di Risposta:**
- Tempo tra la sottomissione di un processo e l'inizio della sua esecuzione. Questo parametro non dipende dalla velocità dei dispositivi di I/O.
---
## Obiettivi dello Scheduler
Lo scheduler cerca di:
**Massimizzare:**
- Utilizzo della CPU (al massimo: 100%).
- Throughput.
**Minimizzare:**
- Turnaround.
- Tempo di Attesa.
- Tempo di Risposta.
Purtroppo, non è possibile rispettare tutti i criteri contemporaneamente, ed è necessario trovare dei compromessi in base alle esigenze specifiche del sistema.