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.