[Tech] Dormi bambino, dormi tesor... (C help)

Simone Piccardi piccardi@fi.infn.it
Mer 25 Ott 2000 15:31:19 CEST


Gianni Bianchini wrote:
> In teoria cio' dovrebbe essere possibile anche in user space, ma solo
> al prezzo di frequenti commutazioni di contesto e chiamate a sistema
> (leggi cambiamento di livello di protezione), il che forse rende la
> cosa "lenta" e poco utilizzabile.
Mmm, non sono molto convinto sia possibile, o meglio possibile lo e' di
certo, non credo sia possibile farlo con precisione migliore di quella
ottenibile con una sleep (o usleep). Puoi usare alarm e pause per fare
quello che dicevi, ma e' sostanzialmente lo stesso gioco di sleep, e il
problema di passare attraverso lo scheduler rimane.

Il punto e' proprio che con un processo in user space passi sempre
attraverso lo scheduler (che viene chiamato di norma anche all'uscita
dalle system call), e che gli interrupt non sarebbero comunque
disbilitati. Per cui la precisione temporale resta la stessa, anzi
secondo me con una semplice sleep e' probabilmente maggiore, dato che
non ci sono di mezzo i continui cambi di contesto, e il kernel avrebbe
meno cose da gestire.

L'unica possibilita' che vedo e' scriversi apposta una system call che
si blocca (e blocca tutto) fintanto che non e' passato un certo tempo, o
un modulo che sulla open o la read fa lo stesso gioco, ma il lavoro vero
resta in kernel space.

Ciao
-- 
Simone Piccardi
Microsoft is NOT the answer. Microsoft is the Question.
The answer is: "NO!"




Maggiori informazioni sulla lista flug-tech