# 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.