Tratto da un utente del blog di TuttoAndroid:
Diciamo solo che puoi immaginare Android come un insieme enorme di processi che vengono scritti in memoria. Il criterio con cui vengono scritti è deciso dal kernel.
Quest'ultimo decide anche quanto sono importanti, cioè ne assegna la priorità inserendoli in sottogruppi con caratteristiche ben definite.
Ogni processo occupa memoria, o meglio, ha la capacità di "espandersi" occupando bit (pagine) fino ad un certo limite, anch'esso preimpostato dal kerenel.
Questa memoria occupata fa sempre parte della RAM, ed almeno nella fase iniziale del processo (quando viene scritto o richiamato) occupa molta memoria.
Dopo una fase iniziale le pagine di un processo vengono classificate e, in alcuni casi, smembrate andando ad occupare porzioni di memoria ROM.
Sorge a questo punto il problema dell'esaurimento fisico della RAM. Anche di questo si occupa il kernel per mezzo del lower memory killer.
Ora veniamo al KMS. E' un cosiddetto "demone" in Android che si occupa della fusione delle pagine del kernel.
In sostanza per mezzo di alcune "call" scandaglia la memoria di sistema (la voce che all'interno della RAM va sotto il nome di "S.O Android") alla ricerca di quelle pagine (piccole porzioni di memoria) che sono immobili, cioè che non vengono aggiornate, cioè non crescono e non diminuiscono da molto tempo. (stiamo parlando di secondi).
Le pagine vengono sottoposte ad un check sum, cioè ne viene controllata la dimensione e confrontata con l'ultima dimensione registrata, per capire se sono state aggiornate o meno.
Le pagine vengono quindi classificate come potenziali unificabili o non unificabili e in un secondo tempo vengono "fuse".
In termini pratici la loro memoria viene unificata. Un esempio perfetto è quello che succede in windows quando due cartelle con lo stesso nome si trovano allo stesso indirizzo: il sistema chiede se vuoi unire le due cartelle e nel caso di file omonimi ne viene mantenuto uno soltanto.
Il risultato di tutto ciò è da una parte una discreta riduzione della RAM occupata, dall'altro una discreta diminuzione della batteria, in quando il demone KMS gira in background utilizzando almeno un ciclo di cpu per ogni check sum delle pagine.
Il funzionamento è, negli obiettivi, molto simile alla zRAM, anche se il principio è completamente diverso.
Purtroppo non sono abbastanza competente per giudicare il funzionamento accoppiato KMS e zRAM. L'unico mio criterio di discrezione è il test, ma con una RAM di 360MB è totalmente impossibile valutare l'impatto dei due demoni combinati.
(è probabile che il KMS riduca l'impatto di una decina di MB e lo stesso faccia zRAM) ma ditemi voi come è possibile rendersi conto delle differenze solo valutando la fluidità generale.
In linea teorica immagino sia sconsigliato l'utilizzo combinato dei due sistemi...ma boh..magari uno dei due ha la capacità di escludere dal processo le pagine già "trattate" dall'altro demone...non so..