♡ Memoria Virtual
Simulação de uma memoria virtual
Um pequeno cache que armazena traduções recentes de Página → Frame, acelerando o acesso.
♡ DESCRIÇÃO // Instruções
1. Existem dois modos a se selecionar sendo Paginação e Segmentação2. Paginação : O programa Pega a página virtual Descobre qual frame ela está usando Faz a conta frame * 8 + offset Se tabelaPaginas[p] == -1, ocorre page fault Usa a TLB (quando implementada) Usa frames livres
No programa : if (tabelaPaginas[1] != -1) { int fisico = tabelaPaginas[1] * 8 + 0; cout << "Endereco Fisico 0x" << hex << fisico << endl; } else { cout << "Nao mapeado (page fault)." << endl; }
4. Segmentação : Verifica se o offset cabe dentro do segmento Soma base + offset NÃO existe page fault (segmentação usa realocação dinâmica) NÃO existe TLB NÃO existe frame Não divide em páginas, divide em segmentos
NO CODIGO : int segmento = 1, offset = 0; if (offset < tabelaSegmentos[segmento].tamanho) { int fisico = tabelaSegmentos[segmento].base + offset; cout << "Endereco Fisico 0x" << hex << fisico << endl; } else { cout << "Erro: Offset fora do segmento." << endl; }