2013-07-17 7 views
6

Se il kernel di Linux può essere considerato come un singolo processo con molti thread possibili? Inoltre, ciò che definisce il passaggio tra i moduli di gestione della memoria, lo scheduler, il file system ecc. Nel kernel.Se il kernel Linux può essere pensato come un singolo processo

+0

Questo non è compito, giusto? –

+0

@MarcusJohansson Non è una domanda a casa – user567879

+0

Il kernel per definizione non è un processo (poiché viene eseguito sul bare metal). I processi necessitano di un kernel per essere gestiti! L'hardware nudo non conosce i processi. –

risposta

9

Il kernel Linux non può essere considerato come un processo, perché questa è una delle sue responsabilità per gestire i processi.

È possibile considerare il kernel come un grande gestore di interrupt. Dopo che il kernel concede il processore al thread, l'unico modo per ottenere il controllo di ritorno sono gli interrupt (o le chiamate di sistema, che sono anche degli interrupt). Quando si verifica un'interruzione, il kernel riceve immediatamente il controllo e gestisce appropriatamente l'interrupt. A questo punto potrebbero essere chiamate varie parti del kernel.

Il kernel è multi-thread in quanto può gestire contemporaneamente diversi interrupt su processori diversi. D'altra parte, ci sono i thread del kernel, che sono gestiti allo stesso modo dei thread utente (non c'è differenza tra i thread del kernel e dell'utente per lo scheduler).

+0

'Non c'è differenza tra thread del kernel e user per lo scheduler'. Quindi come sono programmati questi thread del kernel? – user567879

+2

Questi thread del kernel sono programmati nello stesso modo, come i thread utente, nella stessa coda, seguendo le stesse regole. Scheduler non sa nemmeno se il thread è thread utente o kernel uno. –

+0

@ user567879 Ho risposto alla tua domanda? –

Problemi correlati