In quest’epoca, i vostri dispositivi portatili si aggiornano e diventano sempre migliori. Siamo stati costantemente aggiornati nel reparto memoria (più di quanto abbiamo effettivamente bisogno). Se hai letto la nostra caratteristica precedente, ‘Quanta RAM è troppa RAM?’, saprai in realtà quanta RAM è effettivamente necessaria per il tuo smartphone per funzionare senza problemi e oltre a questo, è solo un eccesso.
Potresti aver bisogno di un aggiornamento se nell’era di oggi il tuo telefono è in ritardo o rallentato. Ma vi siete mai chiesti perché e, soprattutto, come succede? In questa caratteristica, noi DeCodificheremo come questo accade. E molto di più. Continua a leggere!
Perché il nostro mondo gira intorno alla RAM?
Al cuore del sistema operativo Android c’è un kernel Linux. Ogni volta che si avvia una nuova applicazione, si crea un processo all’interno di Linux. Un processo è ora responsabile di tutte le diverse risorse che il kernel potrebbe assegnare alle diverse app. Il tempo della CPU, i processi di Input e Output e la RAM sono tutti considerati come una risorsa.
Il tempo della CPU e l’I/O sono per lo più considerati risorse infinite. Se hai una CPU occupata e vuoi eseguire un nuovo compito, il tuo compito otterrà anche una fetta di quel tempo di CPU. È certo che il compito sarà eseguito, ma potrebbe essere ritardato a causa del sovraccarico di tempo della CPU. Allo stesso modo, il vostro compito potrebbe avvenire un po’ più velocemente se la CPU è meno occupata.
Nel caso dell’I/O, scaricare un grosso file, scrivere qualcosa nella memoria interna o fare qualsiasi altro processo allo stesso tempo potrebbe rallentare il loro completamento, ma alla fine avverrà.
Tuttavia, la RAM è presente in un dispositivo in una quantità fissa. È finita. Se si esaurisce la RAM non c’è nessuna magia che libererà la RAM se si aspetta un po’ di più. Pertanto, Android e Linux avevano bisogno di un sistema che li aiutasse ad affrontare questa limitazione.
Come funziona la RAM in uno smartphone?
Ogni volta che si lancia un’applicazione sul dispositivo, viene lanciato un nuovo processo che richiede al kernel Linux che ha bisogno di (diciamo) ‘X’ quantità di RAM solo per caricare l’applicazione. Dopo di che, l’applicazione potrebbe anche chiedere più memoria per caricare altri file o per scaricare qualcosa da internet e il kernel Linux fornirà il necessario. Questo è il modo in cui avviene la delega di base della RAM.
Il tuo dispositivo ha un pool di memoria disponibile, che è diverso dalla memoria libera. La memoria disponibile è in realtà la memoria disponibile per avviare nuove applicazioni o elaborare altre applicazioni, senza swapping. In un sistema operativo multitasking, la memoria libera è una cosa negativa in quanto la memoria è inattiva; può sempre aiutare in un processo o nell’altro.
Per esempio, la memoria libera può essere usata per migliorare l’I/O dei file, l’I/O di rete per il caching o può essere data ad altri programmi che possono rendere utile quella memoria extra. Allo stesso tempo, è anche segnata come memoria disponibile. Quindi, in qualsiasi momento può smettere di essere usata come buffer o caching e può essere utilizzata da un processo.
In un dispositivo con 4GB di RAM, una parte della memoria è usata dai driver hardware, e una parte è usata da Android. La memoria rimanente disponibile dopo il riavvio di un sistema fresco sarà di circa 1,7 GB. Quando viene lanciata un’applicazione, il dispositivo guarderà la memoria disponibile e fornirà alcuni pezzi da usare per i processi.
In realtà dividerà la memoria in pagine, una pagina di circa 4 KB. Queste pagine possono essere delegate dal sistema a diversi processi, come necessario. Tutti i processi funzioneranno bene se c’è memoria in abbondanza. Ma quando la memoria disponibile si riduce all’aumentare del numero di applicazioni, comincia a causare qualche problema. Ad un certo punto, non ci sarà abbastanza memoria disponibile per avviare un nuovo processo.
A questo punto, Linux e Android hanno un problema. Per far fronte a questo, possono fare swapping o uccidere un’applicazione per liberare la memoria. Abbiamo preso il concetto di swapping dai server e dai desktop. Quando non si ha abbastanza memoria, si può prendere una parte della memoria attiva che è attualmente in RAM e scriverla su un disco rigido. In questo modo si libera quel blocco/pagina di memoria. Più tardi, se quella pagina è di nuovo necessaria, la si può recuperare dal disco rigido. Tuttavia, Android funziona un po’ diversamente e non memorizza la memoria su un disco rigido.
Android usa ZRAM (‘Z’ in termini Unix è un simbolo per la RAM compressa). Lo swap ZRAM può aumentare la quantità di memoria disponibile nel sistema comprimendo le pagine di memoria e mettendole nell’area di swap dinamicamente allocata della memoria. Una volta che qualcosa è scritto in quella memoria compressa, non è possibile accedervi e diventa un po’ come un file ZIP. Se volete usarlo, dovete decomprimerlo e scriverlo di nuovo nella memoria principale. Questo processo è swapping out e swapping back in. Questo ciclo infinito di swapping è chiamato ‘thrashing’. Android non ha alcun problema con il thrashing in quanto quando è saturo, cioè esaurisce lo spazio per lo swapping, inizia semplicemente ad uccidere i processi.
Sceglierà un’applicazione che non hai usato per un po’ dalla lista e la uccide. Questo libera lo spazio che quell’app stava usando e ora lo spazio è disponibile per una nuova app o per un’app esistente da espandere. Tutte le app sono progettate in modo che quando un’app va in background c’è sempre la possibilità che non si apra più. Quindi, il loro stato attuale viene salvato.
Se si apre di nuovo l’app si ricarica. A volte, questo processo non è senza soluzione di continuità. Per esempio, se stavate giocando a un gioco, non inizierà da dove avete lasciato, ma potrebbe iniziare dallo stesso livello. Quanto bene l’app affronta questa situazione dipende dall’app e dalla persona che l’ha scritta. Se si richiede una memoria più grande, più processi possono essere uccisi.
I ricarichi frequenti portano a un’esperienza utente amara. Ecco perché avere più RAM è preferibile dal punto di vista dell’utente. Anche se tutte le sfumature dello swapping e quando si scambia sono un po’ più complicate. Ma quando il tuo telefono è sovraccarico, è destinato a uccidere alcune applicazioni per mantenere il telefono in esecuzione e impedirgli di congelarsi. Uccidere è fondamentalmente un male necessario, che è adottato dal sistema Android. Restate sintonizzati per altri articoli di questo tipo in arrivo. Buona lettura!