1/31
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Manipulação de Memória
Permite a criação de dados dinâmicos (que crescem ou diminuem em tempo de execução) e o compartilhamento eficiente de grandes volumes de dados sem a necessidade de copiar tudo na memória.
Acesso via ponteiro
Tem desempenho extremo e eficiência. É quase imediato, economizando tempo e uso do processador.
Memória Virtual
É uma ilusão criada pelo sistema operacional, que dá a cada processo um "mapa de memória" privado e contínuo.
Se cada aplicativo acessasse a RAM física diretamente
Seria um caos de segurança e organização, pois o aplicativo poderia acessar ou corromper a memória de outro programa ou do próprio núcleo (kernel) do sistema operacional.
Os Aplicativos
Enxergam endereços virtuais, que o processador e o sistema operacional traduzem em tempo real para endereços físicos reais na memória RAM ou no disco (via paginação e swap).
Um aplicativo em 32 bits
Acha que tem 4 GB exclusivos para ele.
Um aplicativo em 64 bits
Acha que tem um espaço virtual massivo (na casa dos Terabytes).
Page Table
É uma estrutura de dados armazenada na memória RAM e mantida pelo sistema operacional para guardar os dados de mapeamento para o processo de Paginação funcionar, as PTEs.
PTEs (Page Table Entries)
São as linhas dentro da tabela. Cada linha (PTE) guarda apenas o endereço do Frame correspondende e os bits de controle (como segurança e presença).
Pages
São os blocos de espaço na Memória Virtual (geralmente de 4 KB).
Page Frames
São os blocos físicos de mesmo tamanho que as Pages na memória RAM.
Paginação
É o processo de mapear uma Page virtual em um Page Frame físico para gerenciar o Mapa de Memória (Memória Virtual).
Page Fault
Acontece quando o aplicativo tenta acessar um endereço de memória virtual que não está carregado na memória física.
Hard Page Fault
Quando o dado realmente não está na RAM e precisa ser buscado no disco (mais lento).
Soft Page Fault
Quando o dado já está em outra parte da memória física, como no Page Cache, apenas não estava mapeado naquele endereço específico.
Bit de Validade
É uma flag estruturada dentro de cada entrada da Page Table que indica se aquela página de memória virtual está mapeada na memória física (RAM) naquele exato momento.
O Bit de Validade está desligado
Quando a Page de dados consultada na Table Page não está presente na memória física.
2 aplicativos
Podem usar exatamente o mesmo endereço virtual (por exemplo, o ponteiro 0x00401000). No entanto, a MMU traduzirá esse endereço para um local físico na memória RAM completamente diferente para cada um deles.
MMU (Memory Management Unit)
É um componente de hardware da CPU reponsável por fazer a tradução em tempo real de endereços de memórias virtuais para endereços físicos.
Para traduzir o endereço virtual para o endereço físico
A MMU consulta a Page Table usando um cache ultra-rápido chamado TLB (Translation Lookaside Buffer).
Se for um Page Fault, a CPU trava a instrução e chama o SO.
Swap / Arquivo de Paginação
O sistema operacional usa o Disco Rígido (HD ou SSD) como uma extensão da memória RAM caso a soma das memórias virtuais dos programas abertos ultrapassem o tamanho da RAM física.
Fazendo muito Swap
O sistema começa a "engasgar" ou travar, pois ler dados do disco rígido é milhares de vezes mais lento que ler a RAM.
Caches de Hardware (Internos do Processador)
Estão localizados fisicamente dentro ou muito próximos do chip da CPU. Eles evitam que o processador precise recorrer à memória RAM (que é milhares de vezes mais lenta que a CPU). São eles Cache L1, L2 e L3.
Cache L1 (Nível 1)
É a memória mais rápida do computador. Ela é extremamente pequena (geralmente de 32 KB a 128 KB por núcleo) e fica colada nos circuitos de execução da CPU. Cada núcleo do processador tem sua própria.
Cache L2 (Nível 2)
É um pouco maior que a L1 (geralmente entre 512 KB e alguns Megabytes por núcleo), porém uma fração de segundo mais lenta. Ela serve como um “segundo plano” caso o dado não esteja na L1.
Cache L3 (Nível 3)
É uma memória muito maior (de 4 MB a mais de 100 MB) e costuma ser compartilhada por todos os núcleos do processador. Ela é mais lenta que a L2, mas ainda é infinitamente mais rápida que a memória RAM.
TL;DR dos Hardware Caches
Se a CPU precisa de um dado, ele procura na L1 → se não achar, vai na L2 → se não achar, vai na L3 → se não achar, ocorre um Cache Miss e ela é obrigada a buscar na Memória RAM.
Caches de Software (Gerenciados pelo Sistema Operacional e Aplicativos)
Esses caches utilizam partes da memória RAM ou do armazenamento para acelerar a leitura de arquivos e dados lógicos. São eles Page Cache, Web Cache (Cache de Navegador) e Cache de Banco de Dados.
Page Cache (ou Disk Cache)
O sistema operacional reserva uma parte da memória RAM livre para guardar cópias dos arquivos mais acessados do seu HD ou SSD. Ele evita acessao ao Disco Rígido, pois ler da RAM é muito mais rápido do que ler do disco.
Web Cache
O Chrome, Firefox ou Safari guardam imagens, códigos HTML e scripts dos sites que você visita no seu próprio SSD/HD. Quando você reabre o site, ele carrega instantaneamente porque não precisa baixar tudo de novo da internet.
Cache de Banco de Dados
Sistemas de servidores guardam na memória RAM as consultas (perguntas) mais frequentes feitas ao banco de dados. Isso evita que o servidor precise reprocessar ou buscar nos discos informações solicitadas repetidamente (ex: os produtos mais vendidos de uma loja virtual).
GC
Consome tempo de CPU e memória RAM extra para fazer varreduras periódicas.