di Marco Arcamone


E un modulo del sistema operativo il cui
compito e amministrare i vari processi e la
loro esecuzione. Il suo scopo è migliorare l'
utilizzo del processore.
​Esistono due tipi di scheduling con prelazione
o senza prelazione.​






Esistono vari tipi di algoritmi di scheduling, la
loro scelta varia in base alla nostra necessità.
Questa scelta dipende da 5 criteri principali:
Utilizzo della CPU
Troughput
​Tempo di attesa
Tournaround
​Tempo di Risposta



Le politiche di scheduling riguardano
l'attenzione posta su alcuni processi piuttosto
che su altri.
​Solitamente lo scheduner esegue le richieste
in base all' arrivo (FIFO) oppure in base alle
risorse che impiegano meno tempo etc...
​Andiamo a vedere le maggiori politiche di
scheduling

In italiano il primo arrivato è il primo servito.
Questo è un tipo di algoritmo senza
prelazione. La coda dei processi viene gistita
in modo FIFO (first in first out), cioè, il prio
processo ad entrare è anche il primo ad
essere eseguito ed essere rilasciato. Si segue
l’ ordine di arrivo.

Questo tipo di algoritmo è molto facile da
implementare. Il problema è il suo cattivo
utilizzo della CPU in quanto, non è con
prelazione e la possibilità di attesa per lungi
processi CPU bound è alta. Si può creare un
convoglio.

In italiano il processo più breve viene prima.
Può essere sia con che senza prelazione.
Diciamo che questo algoritmo si pone l’
obiettivo di risolvere i problemi dati da FCFS.
Esso verifica i processi CPU bound presenti in
coda e nel caso vi sia un processo più lungo
del possibile scambia questo processo con
uno più corto.

Sulla carta sembra tutto stupendo e i tempi di
attesa sono minimi. Il problema è che è
difficile stimare la lunghezza del prossimo
CPU burst di un processo. Per questo di solito
si ricorre al «passato per predire il futuro».

In italiano il processo con pa rimanenza piu
piccola viene per prima. Opera con prelazione
e le istruzioni «accorrono» in base al ordine
in cui entrano. Si assegna il processore al
processo con il CPU burst residuo più piccolo
fra quelli in coda. E praticamente identico a
SJF.


Anche in questo caso non è tutto oro quello
che luccica. SRTF richiede la conoscenza della
durata del CPU burst di ciascun processo.
Lo scheduler eseguito non è SRTF, bensì
un“simil-SRTF” con stima dei CPU burst.


In italiano priorità… Ad ogni processo viene
associato un numero di priorità. Più piccolo e
il numero più e alta la priorità. La CPU esegue
il processo primo per quest’ordine. La priorità
può essere stabilita internamente o
esternamente. Algoritmi di scheduling con
priorità possono essere:
Senza prelazione o con prelazione: se arriva
in coda un processo con priorità maggiore
del processo in corso



•
Problemaè la starvation cio vuol dire che i
processi a bassa priorita possono venire
bloccati da processi a priorita maggiore e se
vengono eseguiti vengono eseguiti quando la
macchina `e molto scarica
La soluzione e l’ aging che con l’ aumentare
del tempo aumenta la priorità di questi
processi

In italiano giro tondo. L'algoritmo di
scheduling RR (Round Robin) è un particolare
algoritmo con prelazione che esegue i
processi nell'ordine d'arrivo, come il FCFS,
ponendo un processo alla fine della coda dei
processi in attesa, qualora l'esecuzione duri
più del quanto di tempo stabilito, e facendo
proseguire l'esecuzione al successivo
processo in attesa.

Il tempo di attesa è ottimo ma c’è un’altra
frequenza di content-switch se si usa una
frequenza di cambio di pochi millisecondi.
Succede l’ inverso se si usano molti
millisecondi.
Inoltre essendo tutti i processi trattati alla
stessa maniera ci può essere un degrado
delle prestazione del OS. Magari processi più
importatati di CPU vengono tralasciati.
La coda di attesa dei processi pronti è
suddivisa in più code distinte. Ciascuna coda
ha un proprio algoritmo di scheduling.
Prima si sceglie la coda da cui pescare un
processo e sceglie un processo dalla coda.
Alle due code viene dato un livello di priorità si
sceglie quello più alto e si comincia ad operare.
Alla fine il processo è reinserito nella coda.

I processi importanti sono serviti per prima,
essendo incanalati nelle code a priorità più
alta.
Anche in questo caso vi è starvation ed è
necessario aging.
Se la natura del processo (CPU-bound,
I/Obound) è variabile nel tempo, lo scheduler
multilivello non è efficace.


L’ uso di una qualsiasi di queste politiche
dipende dal uso che voi stessi ne dovete fare.
Sta di fatto che i più usati sono RR e
FCFServed.