PDA

View Full Version : processi livello kernel


Black imp
07-12-2003, 04:08
tempo fa in un thread si parlava di processi a livello kernel e a livello utente. Ilsensine mi fece notare che non era vero che i processi a livello kernel fossero più veloci. Al momento ci pensai un po' ma non risposi subito. Adesso che mi accingo a studiare Sistemi Operativi 2 mi sono ricordato del dubbio. Proprio oggi mi hanno confermato che lo stesso programma fatto girare sotto windows è più veloce che sotto linux con serverX - non tiratemi fuori Quake perchè i giochi in opengl sotto linux scavalcano serverX e scrivono nel framebuffer direttamente -.

Ora, se non ricordo male effettivamente i cambi di contesto nelle preemption da un processo kernel ad un altro sono più lenti che in quelli a livello utente, anche se più sicuri - la preemption a livello kernel per linux è stata introdotta solo ultimamente in una delle ultime patch per kernel 2.4 -

tuttavia serverX è a livello utente ed è più lento. E' lento perchè è macchinosa la struttura delle chiamate o cosa?
insomma si può dire in definitiva se sono più veloci i processi a livello kernel o a livello user sotto linux? in base a cosa?

lucifero666
07-12-2003, 08:23
anch'io sono dell'idea che la velocita' di un processo non dipenda dal fatto che venga eseguito a livello kernel o user...
...la vera differenza tra queste due modalita' sta nel fatto che un processo eseguito a livello user lavora sulla cpu in modalita' protetta, e tutte le sue richieste di risorse vengono controllate e limitate dal kernel, il quale quindi fa da intermediario tra il processo e l'elaboratore.
Un processo eseguito a livello kernel, ha la possibilita' di eseguire sul processore in modalita' kernel, ovvero ha possibilita' diciamo illimitate, potendo accedere a tutte quelle istruzioni riservate, a tutte le risorse di sistema, senza alcun limite, permettendogli in pratica di fare cio'che vuole.
Queste due modalita' hanno lo scopo di proteggere il sistema stesso, permettendo di distinguere tra un processo eseguito da un utente, che quindi va tenuto d'occhio, ed un processo eseguito a livello kernel, ke presumibilmente e'un processo sicuro, al quale quindi diciamo il S.O gli da fiducia.

Per quanto riguarda la velocita' delle applicazioni, bisogna tenere conto della diversa architettura di un S.O linux e di quello WInzoZ.
La "maggiore" velocita' dell'interfaccia Winzoz sta' ad esempio nel fatto che li l'interfaccia viene vista come una componente di sistema....ed ora ti spieghi come mai se crasha l'interfaccia crascha tutto WinzoZ.....in Linux Kde o Gnome....sono semplici processi utente....e se crashano.....poco male...fai un kill e riparti in 5 secondi!
Quindi...Linux punta alla Sicurezza e alla Stabilita'!
WinzOz punta a fare bella figura cercando di andare veloce.....
......sempre se non crasha prima :D

Spero di non aver detto scemenze ;)

Black imp
07-12-2003, 13:22
tutto ok ma allora un processo a livello kernel proprio perchè può accedere a più risorse, e soprattutto perchè nei sistemi operativi come linux e windows un processo user viene mappato in uno o più processi kernel, è più veloce. questo è quello che mi sta venendo in mente.

lucifero666
07-12-2003, 14:05
il fatto che può accedere a più risorse non vuol dire che vada più veloce, intendevo dire che può accedere a risorse che normalmente gli sono proibite, tipo particolari registri della cpu o zone di memoria protette...
.....resto dell'idea che l'unica cosa che potrebbe rendere più veloce un processo in modalità kernel stà nel fatto che potenzialmente un processo kernel potrebbe avere una priorità maggiore di esecuzione....quindi lo scheduler dei processi potrebbe "favorire" nella esecuzione questo processo.....