Questo sito utilizza cookie per raccogliere dati statistici.
Privacy Policy
# Processi
## Cosa sono i Processi?
Un **processo** in informatica è un'istanza di un programma in esecuzione su un computer. Ogni processo ha:
- Il proprio spazio di memoria (RAM).
- Risorse assegnate.
- Un comportamento indipendente dagli altri processi.
Nei computer moderni, esistono molti processi che vengono eseguiti contemporaneamente grazie alla gestione del multitasking da parte del sistema operativo. Ad esempio:
- Un lettore musicale che riproduce una canzone mentre scrivi un documento.
- Un browser che carica una pagina web mentre un software di messaggistica riceve nuovi messaggi.
- Un sistema antivirus che esegue controlli in background mentre giochi a un videogioco.
- L'orologio del computer che continua a mostrare l'ora attuale mentre svolgi altre applicazioni
### Stati di un Processo
Durante il suo ciclo di vita, un processo può trovarsi in diversi stati:
1. **Pronto (Ready):**
- Il processo è pronto per essere eseguito, ma attende che la CPU venga assegnata dallo scheduler.
- I processi in questo stato aspettano il loro turno per eseguire istruzioni sulla CPU.
2. **In Esecuzione:**
- Il processo viene assegnato alla CPU e inizia a eseguire le istruzioni.
- Solo un processo alla volta può essere in esecuzione su una CPU, ma grazie al multitasking, più processi possono essere gestiti in modo concorrente.
3. **In Attesa:**
- Il processo aspetta un evento, come un'operazione di input/output o il completamento di un'altra attività.
- Durante questo periodo, il processo non utilizza la CPU.
4. **Terminato:**
- Il processo ha completato la sua esecuzione.
- Il sistema operativo libera le risorse associate, come memoria e file.
5. **Sospeso:**
- Il processo è temporaneamente interrotto senza liberare tutte le risorse.
- Può essere riattivato e riprendere l'esecuzione dal punto in cui è stato sospeso.
---
## Scheduler dei Processi
Lo **scheduler** è una componente fondamentale del sistema operativo che:
- Gestisce la transizione dei processi tra gli stati.
- Decide quale processo eseguire sulla CPU in un dato momento.
### Obiettivi dello Scheduler:
- Massimizzare l'utilizzo delle risorse hardware.
- Garantire un'equa distribuzione del tempo di CPU tra i processi.
### Tipi di Algoritmi di Scheduling
Esistono diversi algoritmi di scheduling con caratteristiche specifiche. La loro efficienza è valutata attraverso i seguenti parametri:
1. **Tempo di Attesa (Waiting Time):**
- Tempo trascorso da un processo nella coda dei pronti prima di ottenere la CPU.
- Un buon algoritmo cerca di ridurre al minimo questo tempo.
2. **Tempo di Turnaround:**
- Tempo totale impiegato da un processo dall'arrivo nella coda fino al completamento.
- Un turnaround breve indica alta efficienza.
3. **Utilizzo della CPU:**
- Percentuale di tempo in cui la CPU è occupata nell'esecuzione di processi.
- Un elevato utilizzo della CPU indica una produttività migliore.
4. **Throughput:**
- Numero totale di processi completati in un'unità di tempo.
- Un buon algoritmo massimizza il throughput.
5. **Tempo di Risposta:**
- Tempo tra la richiesta dell'utente e la ricezione della prima risposta.
- Un tempo di risposta breve migliora l'esperienza utente.
6. **Fairness (Equità):**
- Distribuzione equa del tempo di CPU tra i processi.
- Evita che alcuni processi monopolizzino la CPU.
7. **Overhead dello Switch di Contesto:**
- Tempo e risorse necessari per cambiare contesto tra processi.
- Un buon algoritmo minimizza questo overhead.
8. **Scalabilità:**
- Capacità di gestire un numero crescente di processi mantenendo prestazioni accettabili.
9. **Complessità dell'Algoritmo:**
- Efficienza computazionale dell'algoritmo stesso.
- Algoritmi semplici riducono i ritardi e i problemi di prestazioni.