[Linux-Biella] che distro per P200?
Marco Ermini
linux@ml.bilug.linux.it
Wed, 16 Jun 2004 19:07:08 +0200 (CEST)
PaulTT disse:
[...]
> nel 2.6 avviene.
> fai un make menuconfig e quarda l'help dell'opzione "preemptible
> kernel".....
Ok, è solo una questione terminologica. Possono esserci delle situazioni
particolari dovute ad ottimizzazioni molto spinte, ma in linea teorica e
di massima un thread del kernel non viene preempitato.
> se hai un sound interrupt e stai compilando qualcosa e hai una malloc()
> grande, senza pe fino a quando non finisce, non suona, lo scheduler del pe
> se ne fotte e interrompe cmq a un certo punto e riprende poi....
Giusto alcune considerazioni, premettendo che NON sono un esperto di
kernel e soprattutto di kernel di Linux, e che non smazzico 'sta roba a
basso livello da un secolo (ma ho avuto una significativa esperienza in
passato...):
1) la malloc() è una funzione di glibc e non c'entra nulla con il kernel,
o meglio, non c'entra nulla con lo scheduling dei processi, siamo ad un
livello molto più alto. Il kernel ha sicuramente una sua funzione di
allocazione di memoria riservata e particolare.
2) un interrupt hardware (cosa diversa da quello software) è semplicemente
una risorsa hardware che richiede l'accesso esclusivo al bus di sistema:
non c'entra nulla con lo scheduling dei processi, siamo ad un livello
molto, molto più basso; tra l'altro al 99,99%, a meno che tu non abbia una
scheda sonora dell'anno uno oppure mal configurata, le scritture/letture
avvengono in DMA per cui il bus non viene nemmeno occupato...
Se una malloc() molto grande ti blocca il suono potrebbero esserci molti
motivi, per esempio, perché hai il sistema pesantemente occupato (magari
sta swappando pesantemente) e comunque la tua riproduzione audio richiede
anche un task CPU intensive (tipo riprodurre un mp3 o roba simile). Però
sono cose da vedere nello specifico e nel dettaglio.
[...]
> corretto, ma in talune condizioni il 2.4 aveva dei time-slices superiori
> ai 100ms, indi poco preempt..... :-)
Ribadisco: il kernel di Linux non è mai stato real time. Seppur lo avranno
migliorato nel 2.6, continua a non esserlo. Esistono delle implementazioni
di Linux RT ma si basano su kernel 2.0/2.2 proprio perché ormai il kernel
di Linux è elefantiaco e talmente complesso (diciamo così per non
offendere nessuno... ma se dicessi "scritto male" qualcuno sarebbe pure
d'accordo ;-) per cui ci capiscono qualcosa ormai solo pochi eletti :-)
Sicuramente ci possono fare tantissimi miglioramenti e di sicuro lo
scheduling è migliore e più versatile.
> il concetto di time-sharing esiste dall'ITS e dai PDP-1*, se e'
> per quello....
> un os non e' un kernel, cmq....
Direi che siamo lì... ho capito che è GNU/Linux e non Linux ;-)
> A il preemptible del 2.6 lo e' a priori, nel
> senso che a un certo time-slice, preempta in ogni caso, senza aspettare la
> chiusura delle f()
Ci possono essere milioni di algoritmi, ma comunque, ripeto, sono tutti
preempitive nel momento in cui non sono collaborative. Non è che se
Torvalds aggiunge uno switch nel menuconfig con una terminologia sbagliata
tutta l'informatica deve seguire a ruota... l'informatica mica è
Torvalds-centrica! :-)
Ciao.
--
Marco Ermini
http://www.markoer.org
Dubium sapientiae initium. (Descartes)
<< This message is for the designated recipient only and may contain
privileged or confidential information. If you have received it in
error, please notify the sender immediately and delete the original.
Any other use of the email by you is prohibited. >>