prof. Nunzio Brugaletta |
atapSO |
EnneBi –
Computer Science
Avanti – Indietro – Inizio
Con questo termine si intende la strategia usata dal kernel per assegnare la risorsa CPU ai vari processi.
Un sistema di tipo time sharing deve gestire le risorse in modo tale da dare l'impressione che i processi di tutti gli utenti procedano simultaneamente. I processi si devono alternare in modo rapido, ma deve essere considerato anche che la sospensione di un processo e l'avvio di un altro richiede, da parte del sistema, un certo lavoro che non deve influire in maniera eccessiva, in calcolo percentuale, sul tempo macchina complessivo, altrimenti il sistema impiegherebbe più tempo per la sua manutenzione che per i processi utente e questo, per ovvi motivi, non può essere accettabile: ci sarebbe un eccessivo overhead. Può essere inoltre opportuno rendere prioritari alcuni processi di particolare importanza o che accedono a strutture molto utilizzate per evitare code di processi in attesa. Bisogna inoltre fare in modo che tutti i processi possano ottenere la CPU senza essere scavalcati continuamente da processi più importanti.
Il sistema di gestione dell'attribuzione della risorsa CPU si basa sulla priorità di un processo che è un numero conservato nella sua process table area. Tale priorità varia in continuazione nel corso della vita di un processo: ad un numero piccolo corrisponde un'alta priorità, a un numero più grande corrisponde una priorità più bassa. La priorità di un processo che usa molto la CPU tende a diminuire, quella di un processo che impiega molto tempo in attesa tende invece ad aumentare. Tutto ciò per non penalizzare in modo eccessivo, per esempio, i processi che eseguono molte operazioni di I/O nei confronti di quelli che ne eseguono di meno.
Un elaboratore è dotato del clock, un meccanismo hardware che genera di tanto in tanto delle interruzioni: il processo attualmente in esecuzione viene sospeso per effettuare alcune procedure di manutenzione del sistema, fra cui il calcolo della priorità dei processi. Il calcolo tiene conto di una stima dell'utilizzo della CPU da parte dei processi con un fattore correttivo (nice) che può essere utilizzato dall'utente per influenzare le procedure per il calcolo della priorità. Chiaramente l'obiettivo del fattore nice non è quello di attribuire in modo esclusivo le risorse ad un solo processo, ma fare avanzare più rapidamente un processo rispetto ad un altro.
Vi sono due politiche di gestione dello scheduling che vengono eseguite periodicamente a intervalli regolari:
Schedcpu. Ricalcola la stima dell'utilizzo della CPU per tutti i processi. Se la priorità di qualche processo è diventata maggiore di quella del processo corrente, segnala la necessità di interrompere il processo corrente che avrà priorità più bassa e sarà rimpiazzato da quello con più alta priorità.
Roundrobin. Eseguita con frequenza maggiore rispetto alla prima, cerca di vedere se c'è necessità di una sostituzione del processo corrente. Tale sostituzione avviene effettivamente se c'è in coda un processo con priorità almeno uguale a quella del processo corrente.
http://ennebi.solira.org |
ennebi@solira.org |