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.