A memória de acesso aleatório é um tipo de memória caracterizada por permitir acesso a endereços arbitrários, ao contrário de SAM, memórias sequenciais, como fitas, que permitem apenas acesso sequencial, um pouco confusamente, por razões históricas, o termo RAM passou a ser usado mais como sinônimo da chamada memória principal de trabalho do computador, memória usada para executar a computação real, ao contrário de armazenamento persistente ou memória somente leitura. É verdade que a memória de trabalho é as vezes uma memória de acesso aleatório, mas nem sempre precisa ser assim e existem memórias de acesso aleatório que não servem como a memória de trabalho principal. Da mesma forma confuso é o fato de que a RAM é frequentemente oposta à ROM, memória somente leitura, muitos computadores usam RAM como memória de trabalho principal e ROM como o outro tipo de memória usada para dados estáticos, então na prática essas duas se complementam, mas é inteiramente possível que a memória de acesso aleatório seja somente leitura, então a RAM pode ser ROM, e assim por diante.
Embora seja impreciso, neste artigo vamos nos conformar com a terminologia estabelecida, implicitamente veremos RAM como significando uma memória de leitur ou escrita de acesso aleatório volátil servindo como uma memória de trabalho. A RAM é um dos principais componentes de um computador, ela coopera intimamente com a CPU, na verdade, a CPU sem RAM é inútil, a RAM serve à CPU como um bloco de notas onde ela mantém resultados intermediários para executar cálculos mais complexos. A RAM, sendo uma memória rápida, é frequentemente usada para carregar temporariamente partes de dados maiores para acesso mais rápido, às vezes também pode armazenar as instruções do programa sendo executado pela CPU. Pois esta RAM é, junto com a CPU, um dos dois componentes que nunca podem faltar em um computador. Um computador pode funcionar sem disco rígido, teclado, mouse e monitor, mas nunca pode funcionar significativamente sem RAM. RAM é rápida, na hierarquia de memória apenas os registradores da CPU e o cache da CPU são mais rápidos que a RAM, a RAM é muito mais rápida que o disco. O quanto mais rápido exatamente depende de algumas coisas, primeiro os tipos exatos de ambas as memórias e, segundo, como você acessa as memórias, por exemplo, com acesso sequencial, a RAM pode ser apenas 10 vezes mais rápida, mas com acesso aleatório pode ser até 100.000 vezes mais rápida. A velocidade da RAM é frequentemente, sempre em PCs, mas pode estar ausente, como em sistemas embarcados, aumentada pela memória cache mencionada, entre a RAM e a CPU, mas, novamente, isso só funcionará se acessarmos a RAM corretamente, respeitando o princípio da localidade, não fazer grandes saltos na memória.
Existem dois tipos principais de RAM eletrônica:
Nas linguagens, variáveis são normalmente colocadas na RAM, o nome da variável é apenas um nome para algum endereço de memória RAM, então, quanto mais variáveis você precisar, observe que as mais significativas são matrizes, mais RAM seu programa consumirá. Embora possa não ser tão simples, algumas variáveis cujo valor não muda, como const estática ou literais de string em C, podem ser colocadas na ROM pelo compilador e otimizador. Algumas variáveis de escopo pequeno podem ser armazenadas apenas em registradores de CPU. Em um sistema operacional típico, a memória principal é virtualizada, então os endereços que seu programa vê geralmente não são os endereços físicos na RAM. Graças à memória virtual, seu computador pode realmente usar mais RAM do que há fisicamente presente, armazenando temporariamente algumas páginas de memória menos usadas no disco para liberar espaço na RAM. Isso é chamado de swapping e normalmente resulta em grande lentidão do computador, swapping é muitas vezes um sinal de vazamento de memória ou outra atrocidade. Salvar conteúdo da RAM no disco também é explorado pela hibernação.
Quanta RAM precisamos? Definitivamente não quase tanto quanto você vê em um PC de consumo típico de hoje que vem com 16 ou 32 GB de RAM, isso é muito, você nunca precisa de tanta memória e essa loucura só existe para o consumismo e devido a software capitalista ruim cuja eficiência provavelmente não ultrapassa 1%. A quantidade de RAM que precisamos depende da tarefa em questão e dos detalhes do nosso computador, se ele armazena o programa em si na RAM ou não, se temos coprocessadores auxiliares que nos poupam algum trabalho, se temos uma CPU rápida e podemos sacrificar parte de sua velocidade para precisar de menos memória, e o que exatamente definimos como RAM, se vemos a memória de vídeo como RAM ou se temos permissão para armazenar muitos dados somente leitura na ROM. Para problemas matemáticos simples, como resolver uma equação quadrática, alguns bytes podem ser suficientes. Com algumas centenas de bytes, podemos fazer jogos simples como Tetris. Com quilobytes, já podemos fazer jogos mais complexos, como algo parecido com Wolf 3D ou xadrez com IA básica, podemos fazer um editor de texto simples, até mesmo uma linguagem de programação capaz de se compilar, veja jogos para Arduboy que possui 2,5 KB de RAM. Ultrapassando cerca de 30 KB, já podemos fazer jogos do tipo Doom e versões básicas da maioria das ferramentas que precisamos em um computador pessoal, como editor de texto, editor de imagem, compositor de música e editor de programação, embora ainda funcione tipicamente em bare metal. 1 MB é cerca de 30 vezes isso, então, a menos que esteja lidando com alguma tarefa pesada de memória, como processamento de vídeo HD, com boa programação, você praticamente nunca deve precisar de mais de 1 MB de RAM. Se o seu computador tiver 1 GB de RAM, ele já terá 1.000 vezes mais memória RAM, então ele pode fazer todo tipo de coisa sofisticada, como executar um sistema operacional multitarefa, alguns dos quais podem até executar tarefas que exigem muita memória.