Buscar

Gerência de Memória em Sistemas Operacionais - Parte 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Sistemas Operacionais
Gerência de Memória
- Parte 2-
Sumário
� Introdução
� Alocação Contígua
� Partições Fixas (Estáticas)
� Partições Variáveis (Dinâmicas)
� Paginação
� Segmentação
� Segmentação Paginada
Introdução
� Memória precisa ser alocada de forma a 
manter o maior número de processos possível
� As diferentes maneiras de gerenciar a 
memória dependem do hardware do 
processador
� Alocação Contígua
� Partições Fixas
� Partições Variáveis
� Alocação Não Contígua
� Paginação
� Segmentação
� Segmentação com Paginação 
Introdução
� Espaço de endereçamento
� Lógico
� Todos os endereços lógicos que um processo pode 
gerar
� Físico
� Todos os endereços aceitos pela memória (CI)
� Memory Management Unit – MMU
� Mapeamento dos Endereços Lógicos para 
Endereços Físicos
Alocação Contígua
� Proteção de Memória
CPU Memória< +
Registrador
Limite
Registrador
Base
Erro de
Endereçamento
Não
Sim
Partições Fixas (Estáticas)
� Método de gerência mais simples
� Limita o grau de multiprogramação
� A memória é dividida em várias partições de tamanho 
fixo e cada partição pode receber um processo
� O Sistema Operacional é responsável por manter 
informações:
� Partições alocadas
� Partições livres
� Tamanho das partições
2
Partições Fixas (Estáticas)
� As partições podem ter tamanhos 
diferentes, porém esses tamanhos são fixos
� Um processo ao ser carregado deve ter 
tamanho menor ou igual a partição
� Caso contrário, overlay é empregado
� Foi usado no OS/360 IBM
� Fragmentação Interna
� Um processo ocupa sempre uma partição inteira
Partições Fixas (Estáticas)
� Alocação da Partição
� Uma fila para cada partição
� Uma fila para todas as partições
Partições Variáveis (Dinâmicas)
� As partições são ajustadas dinamicamente 
conforme o tamanho dos processos
� Elimina a fragmentação interna
� As partições são em número e tamanho variáveis
� Pode acontecer Fragmentação Externa
� Há memória disponível, porém não contígua
� Para solucionar
� Reunir espaços adjacentes; código deve ser relocável
Partições Variáveis (Dinâmicas)
� SO mantém uma lista de lacunas = lista
de partições livres
� Essa lista é percorrida cada vez que um 
processo precisa ser alocado
� Se a lacuna é suficientemente grande, o 
processo é alocado
� Processo terminado, uma nova lacuna é
criada
Partições Variáveis (Dinâmicas)
� Estratégias para percorrer a lista:
� First-Fit
� A primeira partição suficientemente grande é alocada 
ao processo
� Best-Fit
� A partição que produzirá a menor sobra de espaço é
alocada ao processo
� Worst-Fit
� A partição que produzirá a maior sobra de espaço é
alocada ao processo
� Circular-Fit
� Variação do First-Fit (procura circular)
Paginação
� Há o espaço de endereçamento lógico 
(processo) e o espaço de endereçamento físico.
� O espaço de endereçamento lógico é contíguo 
(visão do usuário)
� O espaço de endereçamento físico não precisa 
ser contíguo.
� A memória lógica é dividida em blocos de 
tamanho fixo e identicos � Páginas
� A memória física é dividida em blocos de 
tamanho fixo e idênticos � Frames ou Quadros
3
Paginação
� Há necessidade de mapear o espaço lógico para o 
espaço físico
� Endereço lógico � Endereço Físico
� Fragmentação Interna
� Restrita a última página ocupada pelo processo
� Cada página é alocada em um quadro
� Para o mapeamento de endereços, é utilizada a 
Tabela de Páginas
� A Tabela de Páginas é usada também para 
Proteção da Memória e Compartilhamento
Paginação
� Endereço Lógico
� <nº página, deslocamento>
� Endereço Físico
� <nº quadro, deslocamento>
p d
m bits
n bitsm-n bits
Esquema Básico da Paginação
A1
A2
A3
A4
A5
Processo 1
Página
0
1
2
3
4
B1
B2
B3
B4
Processo 2
Página
0
1
2
3
A1
A2
B1
Memória Principal
Quadro
0
1
2
3
4
B2
B3
B4
A3
A4
5
6
7
8
9
10
11
12
13
14
0
1
2
3
4
Página
2
1
8
9
Quadro
v
v
v
v
i
v/i
0
1
2
3
Página
4
5
6
7
Quadro
v
v
v
v
v/i
Tabela de Páginas
Processo 1
Tabela de Páginas
Processo 2
Paginação
� Mapeamento Endereço Lógico para Físico
CPU p d q d
q
Tabela de Páginas
Memória
Endereço
Lógico
Endereço
Físico
Paginação
� Tamanho da página: até 8 kbytes
� O SO mantém uma lista com os quadros 
livres
� Páginas pequenas implicam...
� Páginas grandes implicam...
Paginação
� Proteção
� Processos acessam somente suas páginas
� Os registradores que controlam o acesso à tabela 
de páginas são acessados somente no modo 
supervisor
� Bits de controle
� Para cada página da tabela
� Indicam leitura, escrita ou executável
� Bit de Verificação (ou Validade)
� Indica se a página pertence ao espaço de endereçamento 
lógico do processo
4
Implementação da Tabela de Páginas
� Registradores
� Acesso rápido
� Cada página da tabela é mantida em um 
registrador
� No PCB há cópia dos registradores para a troca 
de contexto
� Memória
� A tabela de páginas é mantida na memória
� A MMU tem dois registradores para localizá-la
� PTBR: registrador base da tabela de páginas
� PTLR: registrador limite da tabela de páginas (guarda 
o número de entradas na tabela)
� Quantos acessos devem ser feitos à memória 
para acessar um dado?
Implementação da Tabela de Páginas
� TLB - Translation Lookaside Buffer
� Registradores Associativos
� Cache para manter as entradas da tabela mais 
recentemente utilizadas
� Implementada por memória associativa
� tamanho limitado (16 a 32 entradas)
� hardware que faz busca paralela
� Acesso
� se a entrada está no TLB, acerto (hit)
� caso contrário, busca na tabela de páginas que está na 
memória e a entrada é incluída na TLB
� Na troca de contexto, a cache deve ser esvaziada e 
os valores dos PTBR e PTLR são salvos.
Implementação da Tabela de Páginas
� Paginação Multinível
� Tabela de páginas com dois níveis
� 1º nível = diretório de tabelas de páginas
� 2º nível = tabelas de páginas
� Exemplo: endereço lógico de 32 bits
diretório página deslocamento
10 bits 10 bits 12 bits
Diretório Tab. Pág.
Tab. Pág.
Tab. Pág.
quadro deslocamento
Endereço Físico
Implementação da Tabela de Páginas
� Paginação Multinível
� a tabela cresce conforme a alocação das 
páginas
� pode acontecer fragmentação interna na 
própria tabela
� o processo pode ocupar diferentes regiões no 
espaço lógico
� Tabela de Páginas Invertida
Segmentação
� Programas e compiladores enxergam a memória 
lógica em segmentos
� código
� dados estáticos
� dados dinâmicos
� pilha
� O espaço de endereçamento lógico é formado 
por segmentos de tamanho variável
� Endereço lógico
segmento deslocamento
Segmentação
CPU s d s d
s
Tabela de Segmentos
Memória
Endereço
Lógico
Endereço
Físico
LB
<
� Mapeamento Endereço Lógico para Físico
5
Segmentação
A1
A2
A3
A4
A5
Segmento 0 - Código
0
1
2
3
4
B1
B2
B3
B4
0
1
2
3
C1
C2
B1
Memória Principal
0
1
2
3
4
B2
B3
B4
A1
A2
5
6
7
8
9
A3
A4
A5
10
11
12
13
14
0
1
2
S B L
Tabela de Segmentos
Segmento 1 - Dados
C1
C2
0
1
Segmento 2 - Pilha
Memória Lógica
Segmentação
� Qual o tipo de fragmentação gerada?
� Como é armazenada a tabela de 
segmentos?
� Facilita o compartilhamento de memória
� cada segmento possui uma parte específica do 
programa (ex.: biblioteca)
Segmentação e Paginação
� As vezes as duas formas de gerênciasão 
combinadas
� Segmentação Paginada
� Uma solução à fragmentação externa da segmentação é
paginar os segmentos
� A memória lógica é segmentada e cada segmento 
dividido em páginas
� A memória física é paginada
� Cada segmento possui uma tabela de páginas associada 
(mantém a relação página, quadro)
� Ao ser endereçada a memória, a tabela de segmentos 
indica qual é a tabela de páginas correspondente, e 
esta, a respectiva página física.

Outros materiais