Como a memória funciona?
Tags: datascience, todayilearned, architecture
Published: 2022-08-16 14:57:38

Como já vimos anteriormente, o computador funciona com vários tipos de memória, algumas voláteis e outras não. Como a memória secundária, a principal ou a cache. O sistema Operacional é o responsável por organizar essa bagunça toda de memórias, dizendo onde cada dado ou operação vai. 

![organize](https://media.giphy.com/media/PjTSEQy85NKOlZ7b19/giphy.gif)

Mas antes de entender como o computador organiza a memória, nós precisamos entender como o programa vê a memória, quando é executado ou quando ele está armazenado, ele não identifica "ah, olha só uma memória RAM que daora" ou "ah, aquele lá é o HD, gente fina ele". 

Ele apenas vê memória, a CPU é a responsável por dizer onde vai o que, e é nela que fica a memória cache, com os barramentos que conectam ela as memórias RAM, HDs, etc.



## Como o computador vê a memória?

Vamos lá, seria uma enrolação sem fim explicar a fundo, falar dos Flip-Flops e tudo mais. Então vou usar a analogia que o nosso querido "Fábio Akita" usou no seu vídeo sobre gerenciamento de memória, créditos para ele e fica o link para o vídeo dele (https://www.youtube.com/watch?v=9AK_1gqEfkQ)

Enfim, créditos dados, vamos lá para a explicação. 

Podemos entender a memória RAM como um livro com um índice, com várias linhas de "endereços", onde cada uma aponta para uma página de informações(dados). 

![books gif](https://media.giphy.com/media/il1yesdofGlZ6/giphy.gif)

Essas linhas, são os nossos endereços (ponteiros pra quem já estudou estrutura de dados). O tamanho desses endereços depende da arquitetura da máquina, máquinas de 64 bits suportam 2^64 bits, assim o tamanho seria: 18.446.744.073.709.551.616.  Porém, o computador lê em binário, então o maior seria 1111111111111111111111111111111111111111111111111111111111111111. 

![help](https://media.giphy.com/media/JWiPeGrr8Ms92/giphy.gif)

Calma, ainda fica melhor, mas primeiro, você não precisa decorar esses valores. Agora vamos descobrir uma forma de melhorar mais ainda isso dai. 

Como você deve ter percebido, ficou um valor monstruoso, porém, uma coisa que frequentemente faziam era dividir esses dados em grupos, as vezes em grupos de 8, ou as vezes em grupos de 16. E é ai que entra o nosso sistema novo, pois queríamos representar esses 16 valores, mas só com o sistema arábico não era possível, pois só ia do 0 ao 9, então acrescentamos mais 6 letras, A até F.

Assim, aquele numero gigante, virou FFFF FFFF FFFF FFFF

![magic](https://media.giphy.com/media/ieREaX3VTHsqc/giphy.gif)
Tcharam. 

Assim, o nosso índice é visto com endereços de 0000... até FFFF...

> Fica a curiosidade, em sistemas 32 bits, nós tínhamos 2^32, o que resultava em 4gb de endereços, o que fazia com que sistemas 32 bits não suportassem mais do que 4gb. E por isso muitos dos seus jogos antigos precisam de um patch

## Temos acesso aos 64 bits de endereço?

Uma coisa que você precisa saber sobre esse assunto, antes que você vá embora ver outro post, é preciso você saber que mesmo que seu computador seja 64 bits, você não terá acesso a esses 64, pois, o barramento que conecta o CPU às memórias, limita isso. 

Então saiba, você pode ter um computador 64 bits, mas dependendo do seu CPU, você terá menos que isso.