Como funciona a memória virtual no seu telefone

Memória virtual é um conceito fundamental em todos os sistemas operacionais modernos, incluindo o Android. Muitas vezes, é mal compreendida como um truque ou artifício para fazer os usuários pensarem que seus dispositivos têm mais RAM do que eles. Até mesmo os telefones celulares mais poderosos e melhores disponíveis hoje usam memória virtual.




Palavras da moda de marketing como Virtual RAM ou RAM Plus podem aumentar a confusão. Esses termos sugerem que a memória virtual é mais como um recurso bônus do que uma abordagem padrão de como os sistemas operacionais gerenciam a memória. Entender como a memória virtual funciona no Android fornece insights sobre como a memória é gerenciada em dispositivos móveis e como eles funcionam sob cargas pesadas de memória.


Uma breve história

O conceito de memória virtual foi introduzido em 1959 no laboratório de computação da Universidade de Manchester como parte de um projeto conjunto com a Ferranti Computers e a Plessey. Era parte integrante do famoso sistema Atlas Computer, que era o computador mais rápido do mundo na época, principalmente devido ao novo sistema de gerenciamento de memória que ele desenvolveu.


Na época, gerenciar e planejar como os dados eram movidos entre a memória principal do computador (RAM) e seu armazenamento secundário (como discos rígidos) exigia que os programadores codificassem as transferências toda vez que uma mudança fosse necessária. Isso poderia ser demorado e frustrante porque o computador não conseguia executar outras tarefas enquanto isso ocorria.

A memória virtual introduziu um sistema de gerenciamento de memória que automatizou muito desse processo. Ela permitiu que os programadores codificassem aplicativos como se tivessem acesso a toda a memória primária do computador sem se preocupar com como ela foi alocada.

Isso foi feito usando o armazenamento secundário para mapear endereços de memória virtual armazenados em sua memória para endereços físicos na memória primária. Quando o endereço virtual precisava ser transferido para a memória física, isso era feito por meio do controle do sistema, que poderia ser considerado um dos primeiros sistemas operacionais. No Android, o kernel cuida de tarefas essenciais do sistema como esta.


Relacionado

Tudo o que você precisa saber sobre o kernel do seu telefone ou tablet

É um dos aspectos mais importantes de qualquer dispositivo

Compreendendo a memória virtual por meio de uma analogia de biblioteca

Imagine que você está em uma biblioteca. Você está sentado em uma mesa e fazendo uma pesquisa. Você está limitado ao número de livros que pode ter em sua mesa a qualquer momento, mas há um prédio inteiro cheio de livros ao seu redor. Tudo na sua frente, a área de trabalho e os livros que você tem em seu acesso imediato, é como a RAM do seu dispositivo. São os dados que estão disponíveis para você agora, com pouco esforço envolvido em recuperá-los porque estão visíveis e ao alcance do braço.

Você sabe que há outros livros na biblioteca que você precisará consultar para terminar sua pesquisa. Você não tem certeza de onde eles estão ou em quais prateleiras estão, mas eles contêm informações que você usará.


Antes da memória virtual

Antes da memória virtual, quando você precisava de outro livro de uma estante na biblioteca, você tinha que se levantar, encontrá-lo nas prateleiras e trazê-lo de volta para sua mesa. Se você ficasse sem espaço em sua mesa, você tinha que decidir quais livros colocar de volta nas prateleiras para abrir espaço para os novos, mesmo que você não tivesse terminado de referenciá-los. Esse processo era demorado e frustrante, especialmente se você tivesse que continuar recuperando os mesmos livros.

Insira a memória virtual

Memória virtual é como ter sua própria estante pessoal (disco rígido ou armazenamento SSD) ao lado de sua mesa e um assistente de biblioteca pronto para pegar o livro que você precisa a qualquer momento. Em vez de colocar um livro de volta na estante original de onde veio, você pode colocá-lo em sua estante pessoal para que seja facilmente acessível. Isso é como a técnica de mapeamento de memória usada para endereços virtuais e físicos, chamada de tabela de páginas.

Quando você precisa de um livro, tudo o que você faz é pedir. O assistente da biblioteca o traz para sua mesa, pegando outro livro da sua mesa para colocar em sua estante pessoal se você estiver ficando sem espaço. O assistente da biblioteca sempre sabe quais livros estão em sua estante pessoal e pode recuperar um livro de outras estantes na biblioteca, se necessário. Esse processo acontece de forma transparente e invisível, para que você possa se concentrar em sua pesquisa sem interrupções.


Endereço vs. localização física

Para entender o quão inteligente foi a solução para esse problema, precisamos observar como o próprio conceito de “endereço” de memória foi alterado pela equipe da Universidade de Manchester. A ideia deles, chamada de armazenamento de um nível, agora é conhecida como memória virtual. Ela dá ao programador a ilusão de que ele tem uma grande memória primária (RAM) à disposição, mesmo que o computador tenha uma memória principal relativamente pequena.

No cerne da ideia deles está a noção de que “endereço” é diferente de “localização física”. Em nossa analogia de biblioteca, pense em um endereço como o local em sua mesa onde você coloca um livro para ler. No sentido tradicional, esse local está vinculado ao espaço físico em sua mesa. Sem memória virtual, se sua mesa estiver cheia, você fisicamente não pode colocar outro livro lá sem remover um primeiro.


Com a memória virtual, o conceito de endereço muda. Seu endereço (o ponto na sua mesa) agora pode se referir a qualquer livro na biblioteca, independentemente de onde ele esteja fisicamente armazenado. É como se o assistente da biblioteca se lembrasse exatamente onde cada livro está e pudesse levá-lo para sua mesa quando você precisar, sem que você tenha que saber ou se importar com sua localização física na biblioteca.

Como funciona a memória virtual no Android

A memória virtual no Android opera de forma similar à analogia de biblioteca que discutimos. No entanto, em um sistema operacional móvel, envolve mecanismos complexos de software e hardware para gerenciar a memória de forma eficiente.

No Android, assim como em outros sistemas operacionais, um endereço de memória é uma maneira de aplicativos referenciarem locais de memória. Por causa da memória virtual, esses endereços não precisam corresponder a locais físicos na RAM do dispositivo. Em vez disso, o Android usa memória virtual para dar a cada aplicativo a ilusão de ter seu próprio bloco grande e contínuo de memória, aproveitando espaço de armazenamento secundário adicional.


Isso permite que os aplicativos no Android se isolem uns dos outros, fornecendo uma camada adicional de segurança e impedindo que um aplicativo interfira na memória de outro. Também simplifica o processo de desenvolvimento porque os desenvolvedores precisam se preocupar menos com limitações de memória física e não precisam codificar seu próprio gerenciamento de memória. O sistema operacional faz isso por eles.

Relacionado

O Android 15 pode ajudar os aplicativos a carregar páginas da web mais rapidamente

Uma mudança no WebView deve ajudar a acelerar a experiência de navegação

Termos e processos de memória virtual

Paginação:

  • Páginas virtuais:O sistema operacional divide o espaço de endereço virtual alocado em blocos chamados páginas.
  • Tabela de páginas:Cada aplicativo tem sua própria tabela de páginas que mapeia essas páginas virtuais para páginas físicas na RAM física do dispositivo.
  • Tradução:Quando um aplicativo precisa acessar dados de memória, a Unidade de Gerenciamento de Memória (MMU) traduz o endereço virtual para o endereço físico correspondente usando a tabela de páginas.

Trocando:


  • Trocar espaço: Dispositivos Android geralmente evitam a troca tradicional por motivos de desempenho. No entanto, dispositivos Android podem usar algo chamado zRAM, uma forma compactada de espaço de troca que reside na RAM física.
  • zRAM: Isso compacta os dados de forma semelhante a um arquivo .zip ou .rar, aumentando a memória disponível ao reduzir o tamanho das páginas inativas que são carregadas na RAM física.
  • Processo zRAM: Isso pode afetar o desempenho porque, quando dados compactados são solicitados, eles precisam ser descompactados antes de poderem ser acessados.

Assassino de baixa memória (LMK):

  • Gestão de processos: O Android usa o Low Memory Killer para gerenciar a memória de forma mais agressiva do que os sistemas tradicionais de desktop ou laptop. Quando a memória está baixa, o LMK encerra processos em segundo plano para liberar RAM para aplicativos ativos.

Benefícios da memória virtual no Android

Isolamento e segurança: Cada aplicativo é executado em seu próprio ambiente de memória sandbox com seu próprio espaço de memória virtual. Esse isolamento garante que um aplicativo não possa acessar a memória de outro, aumentando a segurança e prevenindo interferência no desempenho.


Utilização eficiente da memória: A memória virtual permite que o Android execute mais aplicativos simultaneamente gerenciando com eficiência a memória física disponível. Os aplicativos podem permanecer abertos em segundo plano e permitir que apenas processos essenciais em segundo plano sejam executados. Páginas que não são usadas ativamente podem ser compactadas ou trocadas para abrir espaço para tarefas atuais ou mais críticas.

Considerações sobre desempenho

Embora a memória virtual ofereça vantagens significativas, ela também tem algumas implicações de desempenho:

Falhas de página: Às vezes, um aplicativo pode solicitar acesso a uma página virtual que não está mapeada para uma página física no momento, e ocorre uma falha de página. O sistema operacional precisa recuperar os dados do zRAM ou do armazenamento, o que pode causar um atraso.

Compressão de memória: O zRAM ajuda a aumentar a capacidade efetiva de memória da RAM física, mas pode introduzir latência, pois os dados precisam ser compactados e descompactados.

Término do processo: O gerenciamento agressivo de memória do Low Memory Killer às vezes pode levar ao encerramento prematuro de processos em segundo plano, impactando a experiência do usuário ao alternar entre aplicativos, pois esses processos precisam ser reiniciados do zero novamente.


Políticas de memória adaptativa: Implementar políticas inteligentes de gerenciamento de memória que se ajustam dinamicamente com base no uso atual do sistema e na carga de trabalho, otimizando o desempenho e a utilização de recursos.

A memória virtual ainda é necessária com SSDs rápidos?

Mesmo com o advento de drives SSD super-rápidos e novos tipos de armazenamento, a memória virtual ainda é uma parte importante dos sistemas operacionais modernos, incluindo o Android. Combinar SSDs rápidos com RAM tradicional é mais rápido do que discos rígidos físicos mais lentos, mas a RAM é mais rápida do que um SSD.

Embora SSDs rápidos reduzam a latência de acesso ao armazenamento secundário, eles não eliminam a necessidade de memória virtual. No entanto, quando ocorre uma falha de página, eles diminuem o tempo necessário para recuperar dados do armazenamento secundário. Isso pode melhorar o desempenho do sistema, mas não substitui a necessidade de memória virtual. O armazenamento secundário mais rápido também aumenta o desempenho de swap, tornando o sistema mais responsivo quando ele precisa liberar RAM, descarregando processos menos críticos para o SSD.


Otimize seu Android com memória virtual

Se você pesquisar informações sobre memória virtual no Android, certamente encontrará pessoas sugerindo que você limite a quantidade que seu dispositivo pode usar ou, em alguns casos, desligue-o. Para a maioria dos usuários, deixar a memória virtual ativada é o caminho a seguir, a menos que um fabricante tenha um problema com sua implementação de memória virtual, como o RAM Plus da Samsung. Mesmo esses problemas certamente serão corrigidos. Desligar o Ram Plus deve ser considerado uma opção temporária.

Os conceitos por trás da memória virtual existem há mais de meio século, e as implementações modernas são projetadas para otimizar o desempenho e a multitarefa, aumentar a segurança e a estabilidade e fornecer aos desenvolvedores um modelo de programação simplificado. A memória virtual garante o uso eficiente dos recursos de memória primária, enquanto os SSDs rápidos reduzem a latência de acesso ao armazenamento secundário.