Scheduler: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FrescoBot (discussione | contributi)
m Bot: sintassi e spaziatura dei link
Nessun oggetto della modifica
Riga 1:
{{Avvisounicode}}
[[Immagine:Scheduler.png|thumb|right|Schema di uno Scheduler]]
In [[informatica]] lo '''scheduler''' (da ''to schedule'' letteralmente "mettere in lista", ovvero "pianificare") è un [[programma]] sotto forma di un [[algoritmo]] che, dato un insieme di richieste di accesso ad una risorsa, stabilisce un ordinamento temporale per l'esecuzione di tali richieste, privilegiando quelle che rispettano determinati parametri, in modo da ottimizzare l'accesso a tale risorsa. L'attenzionee postaconsentire su alcuni parametri piuttosto che su altri, differenzia la cosiddettacosì l'''politicaespletamento didel scheduling''':servizio/istruzione solitamenteo lo scheduler può eseguire le richieste in base al loro ordine di arrivo[[processo (politica [[FIFOinformatica)|processo]]), oppure dare precedenza a quelle che impegnano per meno tempo la risorsa; possono esistere politiche si basano su principi statistici o sulla predizione per individuare un ordinamento delle richieste si avvicini di più a quello ottimaledesiderato. Generalmente l'obbiettivo dello scheduling è quello di
 
L'attenzione posta su alcuni parametri piuttosto che su altri, differenzia la cosiddetta '''politica di scheduling''': solitamente lo scheduler può eseguire le richieste in base al loro ordine di arrivo (politica [[FIFO]]), oppure dare precedenza a quelle che impegnano per meno tempo la risorsa; possono esistere politiche si basano su principi statistici o sulla predizione per individuare un ordinamento delle richieste si avvicini di più a quello ottimale.
* massimizzare il '''troughput''', ovvero la produttività dell'intero sistema, minimizzando i tempi in cui la risorsa è inutilizzata
 
* cercare l'ordinamento di richieste che minimizza il rapporto tra tempo di servizio (ovvero il tempo che una richiesta impiega per essere soddisfatta) e tempo di "turnaround" (il lasso di tempo che intercorre tra l'istante in cui la richiesta è generata e quello in cui la richiesta è soddisfatta)
==Descrizione==
* evitare fenomeni indesiderati come la '''starvation''' ovvero "l'attesa eterna" di alcune richieste, verificabile in determinate condizioni
Generalmente l'obiettivo dello scheduling è quello di
* dare all'utilizzatore del sistema la percezione che le richieste vengano soddisfatte contemporaneamente
 
* massimizzare il '''troughput''', ovvero la produttività dell'intero sistema, minimizzando i tempi in cui la risorsa è inutilizzata;
* cercare l'ordinamento di richieste che minimizza il rapporto tra tempo di servizio (ovvero il tempo che una richiesta impiega per essere; soddisfatta) e tempo di "turnaround" (il lasso di tempo che intercorre tra l'istante in cui la richiesta è generata e quello in cui la richiesta è soddisfatta);
* evitare fenomeni indesiderati come la '''starvation''' ovvero "l'attesa eterna" di alcune richieste, verificabile in determinate condizioni;
* dare all'utilizzatore del sistema la percezione che le richieste vengano soddisfatte contemporaneamente;
 
Esistono in realtà molti requisiti che possono essere presi in considerazione, dipendenti anche dal problema specifico che lo scheduler deve gestire: esistono schedulers che si occupano di suddividere il tempo di uso del processore da parte di un processo, schedulers che gestisono richeste di lettura/scrittura da una periferica, anche gli [[memoria virtuale|algoritmi di sostituzione delle pagine]] della memoria sono da considerarsi "scheduler".
Line 12 ⟶ 17:
==Scheduler a breve termine del processore (Dispatcher)==
 
èE' un componente fondamentale dei [[Sistema operativo|sistemi operativi]] [[multitasking]], e sicuramente l'esempio piu diffuso e critico di "scheduler". È in grado di far eseguire, al [[processore]] di un [[computer]], attraverso l'omonima operazione di ''scheduling'', più [[processo (informatica)|processi]] (''task'') concorrentemente attraverso varie ''politiche di scheduling''. Esso rappresenta dunque il gestore del multitasking attraverso criteri di assegnazione delle risorse di memorizzazione/elaborazione ai vari processi e implementati a sua volta attraverso vari tipi di ''algoritmi di scheduling''.
 
Generalmente infatti [[computer]] con un [[processore]] sono in grado di eseguire un programma per volta, quindi per poter far convivere più task è necessario usare uno scheduler. Nel dettaglio lo scheduler si occupa di fare avanzare un processo interrompendone temporaneamente un altro, realizzando così quello che è chiamato cambiamento di [[contesto]] (''[[context switch]]'') all'interno del [[ciclo del processore]]. Esistono vari [[algoritmo|algoritmi]] di scheduling che permettono di scegliere nella maniera più efficiente possibile quale task far proseguire: ad esempio il [[kernel]] [[linux]] nella versione 2.4 ha uno scheduler [[teoria della complessità algoritmica|O(n)]], mentre dalla versione 2.6 ha un algoritmo di complessità [[teoria della complessità algoritmica|O(1)]], ossia in grado di determinare in un tempo costante quale processo debba essere eseguito, indipendentemente dal numero di processi in attesa.