Come si nota dal titolo, questo articolo spiega in linea generale come cambiare le priorita` di Scheduling dei processi, a mano, in ambienti GNU/Linux. Per prima cosa dobbiamo sapere a grandi linee come funziona lo Scheduling in ambienti UNIX based. L`algoritmo di Scheduling in questi ambienti cerca di perseguire degli obiettivi tra di loro contrastanti come : tempo di risposta rapido del processo,evitare la starvation dei processi, gesire la priorita` dei processi etc. , etc . Lo Scheduling dei processi in Linux e` basato su un algoritmo di Time Scheduling, in cui il CPU TIME viene diviso in slices una per ogni processo runnable. Nei sistemi monoprocessore puo` essere in esecuzione in un istante di tempo un solo processo per volta. La schedulazione dei processi viene implementata attraverso gli Interrupt e quindi non c`e` bisogno di codice aggiuntivo all`interno del processo. Le policy di Scheduling sono anche basate sulla priorita` che hanno i processi e quest`ultime vengono valutate in accordo a complessi algoritmi, ma alla fine ad ogni processo viene assegnato un numero identificato della priorita` che il processo ha rispetto agli altri. In Linux la priorita` dei processi e` dinamica nel senso che lo Scheduler a run time puo` cambiare e cambia effettivamente la priorita` dei processi, ad esempio se si accorge che il processo e` stato in IDLE per una lunga porzione del tempo di CPU allora aumenta` di molto la priorita` del processo in questione. Quando si parla di processi dal punto di vista dello Scheduling, essi possono essere divisi in CPU-Bound e I/O Bound. I processi CPU-Bound fanno un uso molto intensivo della CPU mentre quelli I/O Bound fanno un uso molto intensivo delle operazioni di I/O. In linux il programmatore puo` cambiare queste priorita` attraverso l`uso di System Call. Vediamole:
- nice() cambia la priorita` di Scheduling di un processo.
- setpriority() cambia la priorita` di un gruppo di processi convenzionali.
- sched_setscheduler() Cambia la priorita` di Scheduling di un processo.
- sched_setparam() Cambia la priorita` di un processo.
E` possibile cambiare By-Hands la priorita` di Scheduling di un processo agendo dalla Shell. e precisamente useremo la syscall nice(). Per vedere il nice (cortesia) di ogni processo possiamo usare 2 comandi: il primo e`: top Il quale ci mostrera` una lista di processi e nella colonna NI vedremo proprio il Nice di ogni singolo processo. L`altro comando e` ps -e -o ni,pid,ppid,command Il quale ci mostrera` la lista di tutti i processi in esecuzione sul nostro sistema con alcuni parametri che noi ci specifichiamo tra cui ni ossia il nice. Il niceness di ogni processo puo` assumere valori chevanno da -20 (priorita` massima) a +20 (priorita` bassa), a questo punto possiamo impostare il niceness del processo con il seguente comando: sudo renice -n [nuovo niceness] -p [PID] Bisogna essere ovviamente amministratori e trovandomi personalmente su un sitema Debian utilizzo sudo. Con questo comando settiamo noi la nuova priorita` del processo. Se volessimo che il nostro processo abbia una priorita` di Scheduling su tutti gli altri allora utilizzeremo un niceness di -20 e quindi: sudo renice -n -20 -p [PID] A questo punto possiamo nuovamente controllare il niceness del processo e verificare che abbia assunto il nuovo valore. Questo e` utile per tutti i processi CPU-Bound. Mentre per i processi I/O Bound utilizzeremo un altro comando e cioe`: sudo ionice Questo comando serve ad impostare la priorita` per quanto riguarda lo Scheduling delle risorse di I/O. Vediamo come funziona: Per cambiare la priorita` sull` I/O digiteremo: sudo ionice -c [Class of Priority] -n [ClassData] -p [PID] Abbiamo 4 classi di priorita` e precisamente:
- 0 Nessuna priorita` particolare.
- 1 Priorita` Real Time. (Non funziona nei Kernel non compilati per il Real TIme).
- 2 Priorita` Best-Effort (Accetta valori da 0 a 7 il numero piu` basso ha un elevata priorita`.)
- 3 Idle.
Lo switch -n viene utilizzato se la classe accetta un numero come argomento come nel caso della classe 2.Possiamo verificare L` ionice di ogni processo semplicemente digitando: sudo ionice -p [PID] Morale della favola, se decidessimo di cambiare la priorita` di Scheduling di un processo, se il processo e` CPU-Bound allora cambieremo il niceness con il comando nice altrimenti se il processo e` I/O-Bound cambieremo l` IO niceness con il comando ionice.Abbiamo visto come la gestione dello Scheduling in ambienti GNU/Linux sia cosi` dinamica e versatile rispetto a qualsiasi altro SO. Questo e` un ulteriore esempio di come in Linux abbiamo un potente controllo sul Kernel e su tutte le risorse.

Un browser game è un gioco
Un browser game è un gioco per computer che si gioca su Internet utilizzando un browser web. Browser game possono essere create e gestite utilizzando tecnologie web standard del browser o plug-in. Browser game comprendono tutti i generi di videogiochi e possono essere single-player o multiplayer. Giochi gratis sono portatili e possono essere riprodotti su più dispositivi diversi o browser web. Browser game disponibili in molti generi e temi che fanno appello a entrambi i giocatori core e giocatori occasionali. Flash Motor Racing Giochi Negozio di gelato Giochi Cancello di uscita Giochi
Post new comment