percorso didattico di marco di santo
g                                                                                          

home
italiano
sistemi
    tpsit      
informatica
    inglese    
matematica
telecomunicazioni










GESTIONE DEI PROCESSI

Ai primordi dell'informatica il SO poteva essere visto come un unico programma di base che ripeteva in continuazione un loop (un ciclo) di interrogazione delle risorse disponibili e delle richieste dell'applicativo, assegnando poi le risorse in modo rozzo ed inefficiente (è il caso dello MS-DOS).

Oggi praticamente tutti i SO hanno un'organizzazione a processi (o task nella terminologia inglese) ed uno scheduler, il quale assegna risorse ai vari processi e li manda in esecuzione. Quando lo HW sottostante è strettamente monoprocessore ci potrà essere un solo processo alla volta in esecuzione. Con le architetture di oggi è abbastanza usuale il poter avere più processi contemporaneamente in esecuzione.

Lo scheduler applica ai processi le politiche di scheduling prestabilite per l'assegnazione delle risorse, tra le quali la CPU è solitamente la più importante, ma memoria e periferiche di I/O non possono essere trascurate. Possono essere possibili più thread all'interno di un processo. In questo caso lo scheduling dovrà (almeno) essere a due livelli, il livello dei processi e quello dei thread.


                                                                                      

                                                                                  


  • Da new a ready: il processo viene spostato dallo scheduler alla ready queue dove rimane in attesa (admitted)
  • Da ready a running: lo scheduler decide che il processo può utilizzare la cpu, quindi assegna la CPU al processo. (scheduler dispatch)
  • Da running a
    • Waiting: il processo deve attendere una risposta da una periferica I/O quindi deve essere spostato per liberare la CPU. (I/O event wait)
    • Ready: lo scheduler decide che il processo deve terminare momentaneamente la sua esecuzione (ad esempio perché è scaduto il tempo assegnato) e lo rimette in coda. (interrupt)
  • Da running a terminated: il processo invia il segnale di termine e lo scheduler lo sposta nello stato di terminated, in attesa che sia liberata la sua memoria.