On Sat, 21 Sep 2002, Enzo wrote:
>
> > Ah, un domanda sola, :-)
> > ma cosa fa di preciso che fa un kernel pre-emptive?
> ^^^^ ^^
> oops!
> s/cosa fa/cos'è/
Riguarda l'algoritmo di scheduling.
Con un kernel non preemptive un processo in esecuzione (per esecuzione
intendo che ha l'utilizzo della CPU in quel momento) prosegue fino a
quando non rilascia spontaneamente la CPU e la riassegnazione della CPU
avviene solo se un processo commuta dallo stato di esecuzione a sospeso
(richiesta di operazione di I/O, semafori, ecc.) oppure se il processo
termina.
Con i kernel preemptive un processo puo' perdere il controllo della CPU
anche se e' logicamente in grado di proseguire. La riassegnazione della
CPU puo' avvenire oltre che per per i due motivi nel caso di kernel non
preemptive anche quando un processo passa dallo stato di esecuzione a
pronto (ad esempio a seguito dell'elaborazione di un interrupt) oppure
passa dallo stato di sospeso a pronto (ad esempio per il completamento di
un'operazione di I/O).
Dovrebbe limitare ulteriormente la starvation (il fenomeno che penalizza
fortemente i processi a bassa priorita' che di fatto posso essere
accantonati per "troppo" tempo) e aumentare soprattutto la responsiveness.
Ciao,
Andrea
__________________________
Andrea Scrimieri
Aspirante fancazzista
"I cattivi hanno sicuramente capito qualcosa che i buoni ignorano."
-- Woody Allen
|