Please enable JavaScript.
Coggle requires JavaScript to display documents.
Gerenciamento da memória principal : - Coggle Diagram
Gerenciamento da memória principal :
Antecedentes
Registradores base e limite
Apenas o SO pode carregar estes registradores
CPU checa o acesso à memória gerado em modo usuário para se certificar que o valor está entre a base e o limite do usuário
Um par de registradores base e limite define o espaço de endereços lógicos
Permissões de acesso
A memória principal e os registradores são os únicos armazenamentos que a CPU pode acessar
MMU
Dispositivo de hardware que, em tempo de execução mapeia endereços virtuais para endereços físicos
O programa de usuário lida com endereços lógicos
Vinculação de endereços
Programas no disco, prontos para serem trazidos para a memória formam uma fila de entrada
Execução do processo
O programa deve ser trazido do disco para a memória para que o processo possa ser criado para ser executado
Espaço de endereçamento
Físico
Endereço que pode ser visto/recebido pela unidade de memória
Lógico
Gerado pela CPU
Vinculação de instruções
Tempo de compilação
Se o local de nenória conhecido, o código absoluto pode ser gerado pelo compilador
Tempo de execução
Vinculação é adiada até o momento da execução
Tempo de carga
Compilador gera o código relocável se o local de memória não for reconhecido
Alocação
Alocação com partições múltiplas
Partições de tamanho fixo
Melhora na eficiência em relação à alocação contígua
Hole
Bloco de memória disponível, brechas de tamanhos variados se espalham por toda a memória no decorrer do tempo
Partições de tamanho variável
Quando um processo chega é alocado em uma brecha (hole) grande o suficiente para acomodá-lo
Processos saindo liberam sua partição, brechas adjancentes são combinadas
Alocação dinâmica de armazenamento
Soluções para selecionar uma brecha na lista:
Best-Fit
Aloca a menor brecha grande o suficiente
Worst-Fit
Aloca a maior brecha
First-Fit
Aloca o processo na primeira brecha grande o suficiente
Alocação contígua
Este tipo de alocação gera uma desvantagem
Método antigo
São criadas duas partições
Processos de usuário são mantidos na memória alta
Sistema operacional residente, usualmente na memória baixa, devido à localização do vetor de interrupções
Recurso limitado, deve ser alocado de forma eficiente
Tabela de páginas
A quantidade de memória tem um alto custo e é necessário uma forma de alocá-la de forma não contígua na memória
Sistemas de computação modernos suportam espaços de endereçamento lógico muito grandes
Soluções:
Tabelas de páginas com hash
O número de página virtual passa por uma função de hash para ser armazenada na tabela de páginas
TP com hash são comuns em espaços de endereçamento maiores que 32 bits
Algoritmo
Número de página virtual é submetido à função de hash, determinando assim uma entrada na tabela
Realiza-se uma busca na lista encadeada dessa entrada pelo endereço da página virtual
Quando há correspondência o endereço do quadro físico é obtido
Tabelas de páginas invertidas
Ao invés de cada processo ter sua tabela de páginas o SO mantém uma única tabela com uma entrada para cada página real da memória
Entradas guardam o endereço virtual da página armazenada naquela posição real da memória com informações sobre o processo que detém aquela página
Ocupa menos memória do que armazenar cada tabela de páginas, porém aumenta o tempo de busca na tabela
Sistemas com tabelas de páginas invertidas tem dificuldades para implementar memória compartilhada
Paginação hierárquica
Quebra o espaço de endereçamento lógico em múltiplas tabelas de páginas
Nessa técnica a própria tabela de páginas é paginada
Uma técnica simples é a tabela de página de dois níveis
Swapping
Um processo pode ser transferido temporariamente da memória para um armazenamento de retaguarda e trazido de volta à memória para continuar sua execução
Roll out, roll in
Variante de permutação usada por algoritmos de escalonamento baseados em prioridade
Retaguarda
Espaço em disco grande o suficiente para acomodar cópia de todas as imagens de memória para todos os usuários
Paginação
Código compartilhado
Similar a múltiplos threads compartilhando o mesmo espaço do processo
A comunicação interprocessos pode ser implementada pelo compartilhamento de páginas
Importante para ambientes de tempo compartilhado
Tempo Efetivo de Acesso (TEA)
Taxa de acerto
Porcentagem das vezes que um número de página é encontrado nos registradores associativos
Cálculo pode ser bem mais complexo em arquiteturas com TLBs de vários níveis
Técnica de gerenciamento de memória que permite que o espaço de endereçamento físico de um processo seja não-contíguo
Fragmentação na paginação
Não há fragmentação externa na paginação
Pode haver fragmentação interna
Divide a memória física em blocos de tamanho fixo
Tabelas de páginas armazenadas em registradores dedicados (CPU)
Dispacher carrega esses registradores na mudança de contexto
Valores dos registradores são armazenados para cada processo (PCB)
Viável apenas para tabelas de páginas pequenas
Precisa manter controle sobre todos os quadros livres
Tabela de páginas armazenada em registradores dedicados(CPU)
TLB - Translation Look-Asside Buffer
Endereços não encontrados nesse buffer são adicionados ao TLB para acesso rápido da próxima vez
TLB's são tipicamente pequenas (32 a 1024 entradas)
Algumas CPU's implementam TLB's separados para dados e instruções
Divide a memória lógica em blocos do mesmo tamanho
Proteção
Proteção de memória
Proteção de memória implementada associando bits de proteção a cada quadro para indicar operações permitidas
Bit Válido/Inválido
O bit valido indica que páginas associadas estão no espaço de endereçamento lógico do processo
O bit "inválido" indica que a página não está no espaço de endereçamento lógico do processo
Adicionando a cada entrada da tabela de páginas
Fragmentação
Fragmentação Externa
Possível solução é a compactação: unir todas as brechas em uma única grande
Existe um espaço de memória total para satisfazer uma requisição porém os espaços disponíveis não são contíguos
Outra solução seria a segmentação e paginação
Fragmentação Interna
Memória alocada pode ser levemente maior que a memória requisitada
Acontece quando a memória é particionada em blocos de tamanho fixo
Arquitetura da fragmentação