Perché un programma utente dovrebbe incasinare lo spazio del kernel?


9

Non sono nemmeno sicuro di quale sia il problema, ma sto parlando dell'attacco del kernel descritto qui . In fondo a questo elenco di commenti qualcuno ha chiesto di rinominare il processo. Il trucco non ha migliorato la situazione (la macchina funziona ancora in modo molto lento) e il commento di risposta dice qualcosa sullo spazio del kernel rispetto allo spazio dell'utente.

Innanzitutto, il commento di risposta è corretto? Se è così, perché renice funziona per cose nello spazio utente e non per cose nello spazio del kernel? Inoltre, secondo quanto ho letto , tutti i programmi che un utente avvia se stesso dovrebbero trovarsi nello spazio utente, cosa mi sono perso?

Se non è corretto, allora perché renice non migliora la situazione?

Risposte:


9

Ci sono servizi che un kernel fornisce allo spazio utente (come l'apertura di socket). Esiste un'interfaccia ben definita (API) attraverso la quale i programmi di spazio utente possono interagire con il kernel.

In questo caso, il programma spazio utente apre ripetutamente socket e invia loro descrittori di file, quindi chiude i socket. Queste azioni sono eseguite dal kernel. Conterrà il descrittore di file in un buffer fino a quando non viene letto dall'altra estremità del socket. Il bug particolare è che un garbage collector alla fine dovrebbe liberare il descrittore di file, ma non lo fa - il fd viene trapelato. I fds trapelati si sommano e siedono lì consumando risorse. Uccidere il programma non libera le risorse perché non sono di proprietà del programma.


6
E la ragione per cui renice non aiuta è che influisce solo sulla percentuale di tempo della CPU dell'utente che un processo ottiene. Il tempo trascorso in modalità kernel non viene conteggiato per questo scopo. In generale, nice ha effetto solo sui programmi associati alla CPU, non sui programmi associati all'IO. Qui il processo in fuga è puro IO, e non sta nemmeno eseguendo molte chiamate di sistema poiché il bug è che ogni chiamata di sistema impiega troppo tempo.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles Mi dispiace di aver toccato un problema così vecchio, ma sembra molto interessante! Capisco bene che qualcosa del genere ionicefarebbe di più?
rozcietrzewiacz,

@rozcietrzewiacz Non credo che la ionice sarebbe di aiuto, ma non ne sono sicuro. A causa del bug, il processo trascorre tutto il suo tempo in una singola scala di accesso e la ionice non lo impedirà (credo).
Gilles 'SO- smetti di essere malvagio' l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.