Android Geek
O maior site de Android em Português

[Opinião] Se tudo evolui, porque não evolui também a memoria virtual?

Virtual é uma palavra que ouvimos muito nos dias de hoje, há a realidade virtual, moeda virtual e máquinas virtuais. Mas antes de tudo isso havia memória virtual. É uma tecnologia que encontramos nos desktops, laptops, tablets e nos smartphones. Também encontramos no Windows, Linux, iOS e Android. Mas o que é, e por que é importante? Confesso que não sou um grande especialista na matéria, mas os longos anos que levo disto, dá para pelo menos vos explicar o que é e como funciona, e se realmente ela devia ou não já ter evoluído.

[Opinião] Se tudo evolui, porque não evolui também a memoria virtual? 1Um computador executa um programa seguindo as instruções da máquina, armazenadas na memoria RAM. Ele irá executar as instruções num local (conhecido como um endereço) e, em seguida, mover para o próximo local (adicionando um ao endereço). Ele também pode saltar de um endereço para outro, que é como os computadores executam loops (entre outras coisas). Nos velhos tempos da computação de 8 bits ou mesmo nos dias de hoje em microcontroladores, toda a RAM física é usada directamente e não há multitarefa preventiva que permita que vários programas sejam executados de uma só vez. Cada endereço é único e faz referência a um lugar físico na memoria RAM.

Alguns neste momentos já estão a pensar desistir de ler o resto... mas foi a maneira mais simples que consegui para esta introdução.

Mas uma nova abordagem à memória foi desenvolvida entre os anos 50 e 60 chamada memória virtual. A memória virtual permite que cada processo tenha o seu próprio espaço de endereçamento e os endereços podem ser reutilizados em cada processo, ou seja, eles não são exclusivos. Por exemplo o endereço 4095 para um processo é uma coisa, e algo completamente diferente para outro. No entanto, esses endereços necessitam de estar em algum lugar fisico na memoria RAM, então a memória virtual mapeia endereços virtuais para endereços físicos.

[Opinião] Se tudo evolui, porque não evolui também a memoria virtual? 2

Na década de 70, a memória virtual estava a ser usada em mainframes pela IBM, os minicomputadores VAX pela DEC (executando o VMS, que representava o Virtual Memory System), uma grande quantidade de implementações diferentes do UNIX e, eventualmente, com a chegada do Intel 80386 ele fez o seu caminho para o Windows, e o mais importante é que Linus Torvalds começou com o Linux.

De forma mais simples, a memória virtual usa um mapeamento um-para-um. Vamos imaginar que temos dois [Opinião] Se tudo evolui, porque não evolui também a memoria virtual? 3programas e cada um usa 5MB de RAM. Vamos também dizer que um programa é mantido na RAM física no endereço 5242880 e continua com 5MB. O segundo programa começa na RAM física no endereço 10485760 e também ocupa 5MB. Eu assumirei que uma instrução ocupe um byte, apenas porque é mais fácil para explicar. Num sistema de memória virtual ambos os processos têm endereços que começam em 0, o segundo endereço é 1, o próximo 2 e assim por diante. Quando o processo quer aceder ao endereço 0, o computador mapeia o endereço 0 para 5242880, endereço 1 a 5242881 e assim por diante. Quando o processo dois deseja aceder ao endereço 0, o computador mapeia o endereço 0 para 10485760, e endereço 1 para 10485761 e assim por diante.

Este mapeamento é feito via hardware (com muita ajuda do software) num componente especial chamado de Memory Management Unit (MMU). O kernel, no caso dos dispositivos Android que na pratica é Linux, diz à MMU quais os mapeamentos a usar. Em seguida, quando o CPU tenta aceder a um endereço virtual a MMU automaticamente mapeia para um endereço físico real.

[Opinião] Se tudo evolui, porque não evolui também a memoria virtual? 4

As vantagens da memória virtual são que:

  • Uma aplicação não se importa onde ele está na RAM física.
  • Uma aplicação só tem acesso ao seu próprio espaço de endereços e não podem interferir com outras aplicações.
  • Uma aplicação não necessita de ser armazenado em blocos contíguos de memória.

Isso significa que o sistema operativo pode colocar a aplicação em qualquer lugar na memória e que a aplicação não se importa.

Eu sei que para grande maioria de vós está extremamente complicado perceber o que tento falar em cima, mas é assim mesmo.

A memória virtual é uma daquelas tecnologias que usamos todos os dias nos nossos desktops, laptops e smartphones, mas mesmo assim é um herói desconhecido. Ela permite-nos ter sistemas operativo multitarefa, além de formar a espinha dorsal de sistemas de segurança como o sand-boxing. Sem ele, a tecnologia seria muito diferente da que é hoje. Como tal a resposta a titulo deste artigo é não, a memoria virtual não devia ter evoluído mais do que evoluiu até hoje... porque pode não parecer, mas a tecnologia chegou ao ponto que está, graças à memoria virtual.

Então, da próxima vez que iniciares uma aplicação, basta começares a pensar em tudo o que está acontecer no teu smartphone para que ela corra convenientemente, e consigas trabalhar nela no ecrã 😉

Este Website usa cookies para providenciar uma melhor experiência. Pode recusar se desejar. Aceitar Saber Mais