Gerência de Memória
 Fundamentos
 Swapping
 Alocação Contígua de memória
 Paginação
 Segmentação
 Segmentação com Paginação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Fundamentos
 O programa deve ser levado à memória e colocado em um
processo para ser utilizado;
 Fila de Entrada (Input queue) – Coleção de processos no disco
que está esperando para ser levados à memória para execução;
 Um programa de usuário passa por várias etapas antes de ser
executado
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Associação de Instruções e dados para Memória
Associação de instruções e dados para endereços de memória podem
Acontecer em três diferentes estágios
 Tempo de Compilação: Se a Posição de memória for
conhecida em tempo de compilação, um código absoluto
pode ser gerado; O código deverá ser recompilado se a
posição de início mudar;
 Tempo de Carga: Deve ser gerado um código relocável,
se a localização na memória não for conhecida em tempo
de compilação;
 Tempo de Execução: Se o processo puder ser movido
durante a execução de um segmento de memória para
outro, a associação deverá ser retardada até o tempo de
execução. Hardware precisa ter suporte a mapeamento
de endereços (registradores base e limite).
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Etapas de Processamento de um Programa de Usuário
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Espaço de Endereçamento Lógico vs. Físico
 O conceito de um espaço de endereçamento lógico que é
limitado a um espaço de endereçamento físico separado é
central à um gerenciamento de memória adequado
 Endereço Lógico – gerado pela CPU, também conhecido como
endereço virtual;
 Endereço Físico – endereço visto pela unidade de memória
(registrador de endereço de memória) - MMU
 Os métodos de resolução de endereços Lógicos e Físicos geram
endereços iguais em tempo de carga e de compilação,
Endereços lógicos (virtuais) e físicos são diferentes quando se
usa o esquema de resolução de endereços em tempo de
execução
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Unidade de Gerência de Memória (MMU)
 Dispositivo de hardware que mapeia endereços virtuais para
endereços físicos;
 No esquema do MMU, o valor do registrador de relocação (base)
é adicionado a todo endereço gerado por um processo de
usuário no momento em que ele é enviado para a memória;
 O programa de usuário negocia com endereços lógicos, nunca
vê o endereço físico real;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Relocação dinâmica usando um registrador de relocação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Carga Dinâmica
 Rotina não é carregada até que seja chamada
 Melhor utilização do espaço de memória, rotinas não utilizadas
nunca são carregadas;
 Útil quando há necessidade de grande quantidade de código
para lidar com casos que ocorrem com pouca freqüência;
 Carga Dinâmica não requer suporte especial por parte do
sistema operacional, é implementado através de projeto de
programa;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Ligação Dinâmica
 Ligação é adiada até o tempo de execução (ver 4º slide)
 Pequeno trecho de código, stub, utilizado para localizar a rotina
de biblioteca apropriada residente na memória (ou não);
 O Stub substituí a si mesmo pelo endereço da rotina, e executa
a rotina
 Sistema Operacional precisam checar se a rotina está
edereçada na memória;
 Ligação dinâmica é particularmente útil para bibliotecas
(correções de bugs)
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Overlays
 Manter em memória apenas as instruções e dados que são
necessários em determinado momento;
 Necessário quando um processo é maior do que o montante de
memória alocado a ele;
 Implementado pelo usuário, não necessita de suporte especial
do Sistema Operacional, programar e projetar as estruturas de
overlay é complexo.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Overlays para um montador de dois passos
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Swapping
 Um processo pode ser removido temporariamente da memória para
um armazenamento auxiliar e, em seguida, retornado à memória para
continuar sua execução;
 Backing store – Disco grande e rápido o suficiente para armazenar
uma cópia de todas as imagens de memória de todos os usuários,
deve fornecer acesso direto a essas imagens de memória;
 Roll out, roll in – Uma variante de swapping é utilizada para
algoritmos de escalonamento baseado em prioridade, processos de
baixa prioridade são descarregados e é carregado e executado um
processo de prioridade mais alta (swapped);
 A Maior parte de tempo de swap é o tempo de transferência; O tempo
total de transferência é proporcional à quantidade de memória trocada;
 Muitas diferentes versões de swapping são encontradas em muitos
sistemas (Unix, Linux and Windows);
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Visão Esquemática de Swapping
•Problema de I/O
•Manter o job em memória enquanto ele estiver
envolvido em I/O;
•Executar I/O somente em buffers de SO
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Alocação Contígua de Memória
 Memória principal geralmente dividida em duas partições:
 Sistema Operacional residente, normalmente carregado na
memória baixa (vetor de interrupção);
 Processos de usuário ficam na memória alta;
 Alocação com partição simples
 Esquema do registrador de relocação utilizado para proteger
processos de usuário de outros, e de mudanças do código e dados
do Sistema Operacional;
 Registrador de relocação contém o valor do menor endereço físico,
registrador limite contém a faixa de endereços lógicos, cada
endereço lógico deve ser menor que o valor do registrador limite;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Suporte de Hardware para os registradores de relocação e limite
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Alocação Contígua (Cont.)
 Alocação com Múltiplas Partições
 Hole (Buraco) – Bloco de memória disponível, blocos de vários
tamanhos disponíveis na memória;
 Quando um processo chega, é alocado memória de um hole grande
o suficiente para acomodá-lo;
 Sistema operacional mantém informações sobre:
 A) partições alocadas
b) Partições livres (hole)
OS
OS
OS
OS
process 5
process 5
process 5
process 5
process 9
process 9
process 8
process 2
Sistemas Operacionais
process 10
process 2
process 2
process 2
Original: Silberschatz, Galvin and Gagne
Problema de alocação de Memória Dinâmica
Como atender a um pedido de tamanho n de uma lista de blocos de
memória livres:
 First-fit: Aloca o primeiro bloco de memória grande o
suficiente
 Best-fit: Aloca o menor bloco grande o suficiente; deve
procurar em toda lista, a menos que a lista esteja
ordenada por tamanho. Produz o menor bloco restante.
 Worst-fit: Aloca o maior bloco; Deve procurar também
em toda a lista. Gera o maior bloco restante.
First-fit e Best-fit são melhores em termos de redução de tempo
e utilização da memória
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Fragmentação
 Fragmentação Externa – Existe espaço total na memória para
satisfazer uma requisição, mas não é contíguo;
 Fragmentação Interna – A memória alocada pode ser um
pouco maior do que a memória necessária; esta diferença de
tamanho é memória interna à partição, que não é utilizada;
 Reduzir fragmentação externa através da compactação
 Trocar de posição o conteúdo da memória, para reunir toda a
memória livre em um grande bloco;
 Compactação só será possível se a relocação for dinâmica, e for
feita em tempo de execução;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Paginação
 Espaço de endereçamento físico de um processo pode ser não






contíguo; o processo é alocado na memória física, sempre que
esta está disponível;
Divide a memória física em blocos de tamanho fixo, chamados
frames-quadros (tamanho é potência de 2, variando entre 512
bytes e 16 megabytes);
Divide a memória lógica em blocos de tamanho igual, chamados
pages-páginas;
Mantém uma lista de todos os frames livres;
Para rodar um programa de n pages, precisa encontrar n
frames livres e carregar o programa;
Mantém uma tabela de pages para traduzir o endereço lógico
para físico;
Fragmentação interna
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tradução de Endereços
 Endereços gerados pela CPU são divididos em:
 Número de página (p) – Usado como um índice em uma tabela de
páginas, a qual contém o endereço base de cada página na
memória física
 Deslocamento de página (offset) (d) – Combinado com o endereço
de página para definir o endereço de memória física que é enviado
para a unidade de memória
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura da Tradução de Endereços
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Paginação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Paginação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Frames Livres
(a) Antes da alocação
Sistemas Operacionais
(b) Depois da Alocação
Original: Silberschatz, Galvin and Gagne
Implementação da Tabela de Páginas
 A tabela de página é mantida na memória principal;
 Registrador Base da Tabela de Página (PTBR) aponta para a
tabela de página;
 Registrador de Tamanho da Tabela de Página (PTLR), indica
o tamanho da tabela de página
 Neste esquema todo acesso a dados/instruções requerem dois
acessos à memória. Um para a tabela de página e outro para o
dado/instrução;
 O problema dos dois acessos à memória pode ser resolvido
através do uso de um cache de hardware especial, pequeno e
de busca rápida, chamado Registradores Associativos ou
Translation look-aside buffers (TLBs)
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Registradores Associativos
 Registradores Associativos – busca paralela
Page #
Frame #
Tradução de Endereço (A´, A´´)
 Se A´ está nos Registradores Associativos, pegue o endereço do
frame
 Se não pegue o endereço do frame da tabela de página na memória
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Hardware de Paginação com TLB
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tempo Efetivo de Acesso
 Associative Lookup =  unidades de tempo
 Assumindo ciclo de memória de 1 microssengundo
 Taxa de Acerto (Hit Ratio) – porcentagem de vezes que o nº da
página é encontrado nos registradores associativos; está
diretamente associada ao nº de registradores associativos;
 Taxa de Acerto = 
 Tempo Efetivo de Acesso (EAT)
EAT = (1 + )  + (2 + )(1 – )
=2+–
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Proteção de Memória
 Proteção de memória é implementado pela associação de um bit
de proteção com cada quadro;
 Um bit Válido-Inválido é associado a cada entrada na tabela de
páginas:
 “válido”, indica que a página associada está no espaço de
endereçamento lógico do processo, portanto, é uma página legal
(válida);
 “Inválido”, indica que página associada não está no espaço de
endereçamento lógico do processo.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Bit válido (v) ou inválido (i) em uma Tabela de Páginas
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Estrutura de Tabelas de Páginas
 Paginação Hierárquica;
 Tabela de Página Compartilhada;
 Tabela de Página Invertida.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabelas de Páginas Hierárquicas
 Quebrar o espaço de endereçamento lógico em múltiplas
tabelas de páginas;
 Uma técnica simples é uma tabela de página de dois níveis.
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de paginação de dois níveis
Um espaço de endereçamento lógico (de 32 bits, com página
do tamanho de 4K) é dividido em:
 Um nº de página consistindo em 20 bits
 Um deslocamento de pagina consistindo em 12 bits
Paginamos a tabela de página , o nº da página é dividido em:
 Nº de página de 10 bits
 Um deslocamento de 10 bits
Assim, um endereço lógico torna-se:
page number
pi
10
page offset
p2
d
10
12
Onde p1 é um índice para a tabela de página externa e p2 é o
deslocamento dentro da página da tabela de página externa
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tabela de Página de dois níveis
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tradução de Endereços
 Esquema de tradução de endereços com paginação de dois
níveis de 32 bits
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabelas de Páginas “Hashed”
 Comum em espaços de endereçamento maiores que 32 bits
 O número de página virtual é “hashed” em uma tabela de
página. Esta tabela de página contém um “conjunto” de
elementos “hashing” da mesma locação;
 Números de página virtual são comparados neste “conjunto”,
procurando por um igual. Se um endereço igual é encontrado, o
quadro físico correspondente é extráído
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabela de Página “Hashed”
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tabela de Página Invertida
 Uma entrada para cada página real de memória;
 Cada entrada consiste no endereço virtual da página
armazenada naquela posição real de memória, com informações
sobre o processo que é proprietário da página;
 Diminuí a memória necessária para armazenar cada tabela de
página, mas aumenta o tempo necessário de pesquisa na tabela
quando ocorre uma referência de página;
 Usa uma hash para limitar a pesquisa para uma entrada – ou, ao
menos algumas – entradas de tabela de página
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura de Tabela de Página Invertida
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Páginas Compartilhadas
 Código Compartilhado
 Uma cópia de código (reentrante) compartilhado ente os processos
(ex. Editores de texto, compiladores, ambientes gráficos);
 Código compartilhado deve aparecer na mesma localização no
espaço de endereçamento lógico de todos os processos;
 Código e Dados Privados
 Cada processo mantém uma cópia separada do código e dos
dados;
 As páginas de dados e códigos privados podem aparecer em
qualquer lugar do espaço de endereçamento lógico;
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Página Compartilhada
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Segmentação
 Esquema de gerenciamento de memória que oferece suporte à
visão de usuário da memória;
 Um programa é uma coleção de segmentos. Um segmento é
uma unidade lógica:
Programa Principal,
Procedimentos,
Funções,
Métodos,
Objetos,
Variáveis Locais, Variáveis Globais,
Pilhas,
Tabela de símbolos, arrays
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Visão de Usuário de um Programa
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Visão Lógica de Segmentação
1
4
1
2
3
4
2
3
user space
Sistemas Operacionais
physical memory space
Original: Silberschatz, Galvin and Gagne
Arquitetura de Segmentação
 Endereço Lógico consiste de uma dupla:
<nº do segmento, deslocamento>,
 Tabela de Segmentos – mapeia endereços bidimensionais para
endereços unidimensionais físicos; Cada entrada da tabela tem:
 base – Contém o endereço físico de início no qual reside o
segmento na memória;
 limite – especifica o tamanho do segmento;
 Registrador Base da Tabela de Segmentos (STBR) aponta para
a localização da tabela de segmentos na memória;
 Registrador de Tamanho da Tabela de segmentos (STLR) indica
o número de segmentos usados pelo programa;
o número de segmento s é legal se s < STLR
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura de Segmentação (Cont.)
 Relocação.
 Dinâmica
 Por tabela de segmentação
 Compartilhamento.
 Segmentos Compartilhados
 Mesmo número do segmento
 Alocação.
 First Fit/Best Fit
 Fragmentação Externa
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Arquitetura de Segmentação (Cont.)
 Proteção. Associado com cada entrada na Tabela de segmento:
 Bit de validação = 0  segmento ilegal
 Privilégios de read/write/execute
 Bits de proteção associados com segmentos; compartilhamento
de código ocorre em nível de segmento;
 Segmentos variam de tamanho, alocação de memória é um
problema de alocação dinâmica de armazenamento;
 Um exemplo de segmentação é mostrado no diagrama
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Hardware de Segmentação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Exemplo de Segmentação
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Compartilhamento de Segmentos
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Segmentação com Paginação – MULTICS
 O sistema MULTICS resolveu o problema de frgamentação
externa e lentidão no tempo de busca com a paginação de
segmentos
 A solução difere da segmentação pura, já que a entrada para a
tabela de segmentação não contém o endereço base para o
segmento, mas sim o endereço base de uma tabela de página
para este segmento
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Esquema de Tradução de Endereços MULTICS
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Segmentação com Paginação – Intel 386
 Como mostra o diagrama, Intel 386 usa segmentação
com Paginação para o gerenciamento de memória com
um esquema de Paginação de dois níveis
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Tradução de Endereços - Intel 30386
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Linux em Intel 80x86
 Usa segmentação mínima para manter a implementação da
memória mais portável
 Usa 6 segmentos:
 Código do Kernel
 Dados do kernel
 Código de usuário (compartilhado por todos os processos de
usuários, usando endereços logicos)
 Dados Usuários (do mesmo modo compartilhado)
 Estado das tarefas (contexto do hardware por processo)
 Usa 2 níveis de proteção:
 Modo kernel
 Modo Usuário
Sistemas Operacionais
Original: Silberschatz, Galvin and Gagne
Download

(i) em uma Tabela de Páginas