Please enable JavaScript.
Coggle requires JavaScript to display documents.
Cap 14 : Hardware de Memória - Coggle Diagram
Cap 14 : Hardware de Memória
Tipos de memória
Memória mais rápidas tem menos capacidade de armazenamento, são mais caras e consomem mais energia
Memória mais rápidas são voláteis, perdem seu conteúdo ao ficar sem energia
Registradores → Cache → RAM → Flash → Discos → Fitas magnéticas
Unidades de armazenamento externas também podem ser consideradas memórias
Rapidez se traduz em tempo de acesso + taxa de transferência
A memória Física
A memória principal é uma área de RAM composta por uma grande sequência de bytes
A quantidade de RAM disponível em um computador define seu espaço de memória física
Algumas áreas tem finalidades específicas e só podem ser acessas pelo sistema operacional ou pelo hardware
Nos sistemas atuais a memória física não é visível ao usuário, os sistemas operacionais usam conceitos de endereçamento e memória virtual para desacoplar os processos da memória do hardware
Espaço de Endereçamento
O processador acessa a RAM através de barramentos de dados, de endereços e de controle
O número de vias do barramento de endereço define a quantidade de endereços que o processador pode acessar
O conjunto de endereços de memória que um processador pode produzir é chamado espaço de endereçamento
O espaço de endereçamento do processador é independente da quantidade de memória RAM, desse modo se um endereço gerado pode ser válido ou inválido
A memória Virtual
Tem a função de ocultar a organização complexa da memória física e simplificar os processos
Endereços Físicos: endereços reais dos bytes da memória física do computador, definidos pela quantidade de memória
Endereços Lógicos: endereços virtuais usados pelos processos, pelo sistema operacional e pelo processador durante a execução , definidos pelo espaço de endereçamento do processador
Ao executar os processos enxergam apenas a memória virtual
A tradução de endereços lógicos para endereços físicos é feita pela Unidade de Gerência de Memória (MMU)
A MMU gera interrupção caso haja uma tentativa de acesso indevido
A noção de memória virtual também permite implementar a proteção de memória do núcleo e dos processos entre si fundamentais para a segurança
O processo em execução em cada instante tem sua própria área de memória
Memória Virtual por Partições
Uma das formas mais simples
Divide a memória física em N partições que podem ter tamanhos iguais ou distintos, fixos ou variáveis
Em cada partição é carregado um processo
Registrador Base: define o endereço físico inicial da partição
Registrador Limite: define o tamanho em bytes de cada partição
Cada endereço lógico gerado é comparado ao valor do Registrador Limite, se for maior gera interrupção, se for menor soma com o Registrador Base
A Tabela de Partições reside na RAM e é usada para atualizar os registradores base e limite quando há troca de contexto
Quando o núcleo estiver executando por permitir o acesso a toda memória física
Maior vantagem é a simplicidade, depende de apenas dois registradores e de uma lógica simples
A desvantagem é que é pouco flexível e está sujeita a fragmentação externa
Pode ser implementada em hardware de baixo custo ou processadores simples
Memória Virtual por Segmentos
As seções de memória do processo são mapeadas em áreas separadas na memória física
Podem ser definidas áreas para itens específicos, como vetores e bibliotecas
O espaço de endereçamento de cada processo agora é uma coleção de áreas de tamanhos diferentes e políticas distintas, chamadas segmentos
Cada segmento se comporta como uma partição independente, com seus próprios endereços lógicos
Endereços lógicos são pares [segmento : offset], onde segmento é o número do segmento e offset é a posição dentro do segmento
A tradução precisa de uma tabela de segmentos para cada processo do sistema, essa tabela contém os valores de base e limite para cada segmento do processo, além de flags com informações
A MMU possui dois registradores para indicar a localização da tabela de segmentos, STBR e STLR
Caso o número de segmentos seja baixo a tabela pode residir em registradores, caso seja alto precisa ficar na RAM
Duas tabelas: LTD(local) e GTD(global) para segmentos usados por mais de um processo
Com tantos acessos o processo fica lento. Para contornar esse problema são definidos os registradores de segmento, que permitem armazenar os valores de base e limite dos segmentos mais usados no momento
O 80386 define os seguintes registradores de segmentos
CS: Code Segment, indica o segmento onde se encontra o código atualmente em execução
SS: Stack Segment, indica o segmento onde se encontra a pilha em uso pelo processo atual
DS, ES, FS e GS: Data Segments, indicam quatro segmentos com dados usados pelo processo atual
O conteúdo desses registradores é mantido no TCB a cada troca de contexto
O compilador tem uma grande responsabilidade: minimizar a quantidade de segmentos necessários à execução do processo a cada instante
Modelo por segmentos é raramente usado hoje em dia
Memória Virtual por Páginas
O espaço de endereçamento lógico é dividido em pequenos blocos de mesmo tamanho: Páginas
A memória Física é dividida em blocos do mesmo tamanho das páginas: Frames
O mapeamento é feito indicando em que Frame se encontra cada Página, permitindo grande flexibilidade
A Tabela de Páginas
Páginas não utilizadas pelo processo são entradas vazias na tabela
Passos para a tradução
decompor o endereço lógico em número de página e offset
obter o frame equivalente à página
construir o endereço físico
Os bits menos significativos do endereço lógico definem a posição dentro da página (offset), os mais significativos indicam a página
Page Table Base Register aponta para a tabela ativa no momento
Cada processo possuir sua própria tabela de páginas
Faz o mapeamento entre páginas e frames
Page Fault quando tenta acessar endereço indevido
Flags de Status e Controle
Cada entrada de uma tabela de páginas contém um conjunto de flags ; as flags podem variar de acordo com a arquitetura
Valid: indica se a página é válida, se estiver em 0 ocasiona page fault
Writable: controle se a página pode ser acessa em leitura e escrita (1) ou somente leitura (0)
User: se estiver ativo (1) o código executando em modo usuário pode acessar a página, caso contrário só o núcleo pode
Present: indica se a página está presente na RAM ou foi transferida para um armazenamento secundário
Acessed: indica se a página foi acessada recentemente
Dirty: indica que a página foi modificada
Tabelas multiníveis
Pode ocorrer de um tabela de páginas ocupar muito espaço, mesmo tendo páginas não mapeadas
Para resolver esse problema são usadas tabela multiníveis
Estrutura na forma de árvores: Uma primeira tabela de páginas possui ponteiros para as tabelas secundárias e assim por diante
Quando uma tabela secundária não tiver entradas válidas ela não precisa ser alocada, sendo uma entrada nula na principal
O número de página agora precisa ser divido em mais partes usadas como índices em cada nível das tabelas
Reduz o espaço que ocupam as tabelas na maioria dos casos, se o processo ocupar todo o espaço as tabelas multiníveis ocupam mais espaço
O número de níveis depende da arquitetura
Cache da tabela de páginas
A estruturação em vários níveis aumenta muito o tempo de acesso à memória
Consultas recentes à tabela podem ser armazenadas em cache dentro da MMU
Esse cache é denominado TLB (Translation Lookaside Buffer)
Funciona como uma tabela hash
Processo mais complexo
MMU decompõe o endereço lógico
MMU consulta os número de página em seu TLB
caso o número seja encontrado no TLB ele é usado
caso contrário um busca completa na tabela é realizada
o número de frame obtido é usado para compor o endereço físico
o número de frame é adicionado ao TLB
Tempo médio de acesso = custo de acerto no TLB + custo de erro no TLB + custo de consulta + custo de acesso (com as probabilidades)
Taxa de acerto do TLB
Tamanho do TLB: quanto maior mais chance de acerto. Contudo é caro
Padrão de acessos à memória: processos que concentram sues acessos em poucos paginas fazem uso melhor do TLB (localidade de referência)
Trocas de Contexto: o TLB reflete a tabela do processo ativo, a cada troca de contexto o TLB é esvaziado
Política de substituição de entrada: ocorre quando o TLB está cheio, cada erro gera interrupção
Segmentos e Páginas
Partições prima pela simplicidade e rapidez
Segmentos oferece flexibilidade ao programador
Páginas oferece um grande espaço de endereçamento linear enquanto elimina a fragmentação externa
Vários processador permitem combinar páginas e segmentos
Os processos veem a memória estruturada em segmentos
A MMU incialmente converte os endereços lógicos na forma [segmento : offset] em endereços lógicos lineares e depois converte esses em endereços físicos
Localidade de referências
Processos que concentram seu acesso em poucas páginas de cada vez são mais eficientes ; Boa localidade
Localidade temporal: um recurso usado há pouco tempo será provavelmente usado em um futuro próximo
Localidade espacial: um recurso será mais provavelmente acessado se outro próximo a ele foi acessado
Localidade Sequencial: há uma predominância do acesso sequencial aos recursos: p → p +1
A localidade de referência depende de:
As estruturas de dados usadas pelo programa
Os algoritmos usados pelo programa
A qualidade do compilador