Scheduling e code di scheduling

Quando i processi entrano nel sistema vengono inseriti in una coda dei processi composta da tutti i processi del sistema

I processi che risiedono in memoria centrale e che sono pronti e in attesa di essere eseguiti si trovano in una lista detta coda dei processi pronti (ready queue)

Generalmente la coda dei processi pronti è memorizzata come lista concatenata

Quando il processo fa una richiesta di I/O il suo identificativo viene inserito nella coda del dispositivo: non è detto che il dispositivo richiesto sia libero

I processi quindi si spostano tra varie code

Scheduler di CPU

Lo scheduler seleziona i processi e li carica in memoria assegnando la CPU in modo da ottimizzarne l’utilizzo

Lo scheduler di job è uno scheduler che viene eseguito con una frequenza molto bassa, possono infatti passare dei minuti affinchè vengano creati dei nuovi processi

Lo scheduler di job controlla il grado di multi-programmazione, cioè il numero di processi in memoria

In un sistema stabile la velocità media della creazione dei processi deve essere uguale alla velocità con cui i processi lasciano il sistema

Lo scheduler di CPU viene eseguito molto frequentemente: il processo potrebbe rimanere in esecuzione pochi millisecondi prima di fare una richiesta di I/O

I processi possono essere descritti come:

Uno scheduler per rendere efficiente il suo lavoro è tenuto a selezionare una buona combinazione di processi I/O bound - CPU bound, altrimenti il sistema risulterebbe sbilanciato

Avvicendamento (swapping)