Gerenciamento de Memória Segmentação

Transcrição

Gerenciamento de Memória Segmentação
Gerenciamento de Memória
Prof. Clodoaldo Ap. Moraes Lima
1
Segmentação
• Objetivo
– Melhorar o aspecto de localidade de referência em
sistemas de memória virtual
• Em sistema paginado, os itens que são transferidos de uma
unidade de acesso (página) não estão necessariamente
relacionados de forma lógica
– Itens que não serão utilizados podem estar sendo trazidos
– Possível desperdício de espaço em memória e de banda de
passagem
– Livrar o programador da obrigatoriedade de gerenciar a
expansão e contração de tabelas, do mesmo modo que a
memória virtual elimina a preocupação de organizar o
programa em overlays
2
1
Segmentação
Procedimento X
PROGRAM Segmento;
VAR A: ARRAY...
C: ...
PROCEDURE X;
Programa Principal
Funçã o Y
END;
FUNCTION Y;
Array A
END;
BEGIN
END.
Va riável C
.
.
.
3
Segmentação - Mecanismo
• Agrupar itens relacionados logicamente em unidades de
acesso (segmentos) de tamanho variável
– unidades de acesso mais próximas da visão usuário (programas,
dados)
– segmentos de uso comum podem ser compartilhados
– memória virtual segmentada tem gerenciamento mais complexo
• entrada na tabela de segmentos tem que manter informação sobre
comprimento do segmento
• alocação de um segmento à memória deve gerenciar problema de
fragmentação externa
• Endereços em memória segmentadas são bidimensionais
– em sistema paginado, quando um valor de deslocamento é
incrementado além de seu valor máximo um endereço na página
seguinte é gerado Æ espaço de endereçamento linear
– em sistema segmentado, uma condição de tentativa de acesso fora
de limites é detectada
4
2
Segmentação - Mecanismo
• Compartilhamento de segmentos -- duas
possibilidades
– O processo que for usar o segmento compartilhado tem
que conhecer o endereço virtual alocado para o
segmento -- uma única tabela de segmentos é mantida
– O processo que for usar o segmento compartilhado
pode acessá-lo através de seu índice particular -- uma
tabela de segmentos para cada processo
• endereço do início da tabela de segmentos mantido em um
registrador base da tabela de segmentos
5
Segmentação
• Espaço de endereçamento unidimensional com tabelas crescentes
• Uma tabela pode atingir outra
6
3
Segmentação
• Leva em consideração a visão de programadores e
compiladores
• Um programa é uma coleção de segmentos,
tipicamente:
–
–
–
–
Código
Dados alocados estaticamente
Dados alocados dinamicamente
Pilha
• Um segmento pode ser uma unidade lógica
– Procedimentos (funções), bibliotecas
• Gerência de memória pode dar suporte diretamente
ao conceito de segmentos
7
Esquema lógico de Segmentação
1
4
1
3
2
2
4
3
Espaço do Usuário
Espaço Físico
8
4
Comparação entre paginação e
segmentação
9
Endereço lógico em segmentação
• Endereço lógico é composto por duas
partes:
– Número de segmento
– Deslocamento dentro do segmento
• Os segmentos não necessitam ter o mesmo
tamanho
• Existe um tamanho máximo de segmento
• Segmentação é similar a alocação
particionada dinâmica
10
5
Tradução de endereço lógico em
endereço físico
• Tradução é feita de forma similar a
paginação (via tabela)
– Tabela de segmentos
• Entrada na tabela de segmentos:
– Base: endereço inicial (físico) do segmento na
memória
– Limite: tamanho do segmento
• Necessidade de verificar a cada acesso se
ele é válido
– Hardware (comparador)
11
Esquema de tradução da segmentação
s
d
f
d
12
6
Exemplo de tradução de endereço
lógico em endereço físico
13
Implementação da tabela de segmentos
• Construção de uma tabela de segmentos
– Cada segmento corresponde a uma entrada na
tabela
• Cada segmento necessita armazenar dois
valores:
– Limite e base
• Análogo a tabela de páginas
– Registradores
– Memória
14
7
Implementação da tabela de segmentos
via registradores
• Tabela de segmentos é mantida por um
conjunto de registradores
– Cada segmento possui dois registradores (base
e limite)
– No descritor do processo devem ser mantidas
cópias dos registradores
• Troca de contexto: atualização dos registradores
• Número de registradores impõem uma
limitação prática ao tamanho da tabela de
segmentos (como na paginação)
15
Implementação da tabela de segmentos
em memória
• Tabela de segmentos armazenada em
memória
• Segment-table base register (STBR):
localização do inicio da tabela de segmentos
na memória
• Segment-table length register (STLR):
indica o número de segmentos de um
processo
– Segmento é válido apenas se: s<STLR
16
8
Problemas com implementação da
tabela em memória
• Problemas similares ao da paginação
– Tabela pode ser muito grande
– Dois acessos a memória
• Solução
– Empregar TLB
• Observação (válida também para a
paginação)
– A consulta a tabela em memória provoca no
mínimo 2 acessos a memória, pois uma entrada
na tabela pode representar mais de um acesso
17
Implementação da tabela de segmentos
via TLB
sucesso
Falta
18
9
Aspectos de proteção e
compartilhamento
• Os princípios já estudados para paginação
continuam válidos para a segmentação
– Ex: bits de proteção (rwx), bits de
compartilhamento, etc.
• Segmentação adiciona a possibilidade de
compartilhar apenas trechos da área de
código
• Problema associado:
– Segmentos compartilhados devem ter a mesma
identificação (entrada) na tabela de segmentos.
19
Desvantagem da segmentação
• A segmentação provoca fragmentação
externa quando segmentos começam a ser
liberados da memória.
• Mesmo problema de alocação partições
variáveis com as mesmas soluções:
– Concatenação de segmentos adjacentes
– Compactação da memória
20
10
Implementação de Segmentação Pura
(a)-(d) Desenvolvimento de fragmentação externa
(e) Remoção da fragmentação via compactação
21
Solução para fragmentação externa
• A paginação é a solução natural para a
fragmentação
• Analisar o problema sob dois pontos extremos
– Um processo é um único segmento
– Cada byte é um segmento
• Sem fragmentação externa, nem interna
• Não viável pelos overheads envolvidos
• Similar a pagina de 1 byte
• Solução: meio termo entre os extremos
– Fazer um segmento ser composto por um número fixo
(e reduzido de bytes)
– Equivale a ter o segmento dividido internamente em
blocos
22
11
Segmentação com paginação
• Recuperar as vantagens dos dois métodos em relação a
fragmentação
– Fragmentação interna: paginação apresenta, segmentação não
– Fragmentação externa: paginação não, segmentação apresenta
• Solução se traduz em paginar segmentos
23
Arquitetura 68000
• Provê suporte de hardware para até 16 processos.
• Cada um com espaço de endereçamento virtual de
1 K de páginas de 2K ou 4 K.
• Considerando páginas de 4 K, cada processo terá
um espaço de endereçamento virtual de 4 M,
consistindo de 1024 páginas de 4 K cada.
• O Hardware contém uma tabela com 16 seções,
uma para cada um dos processos.
• Cada seção tem 64 descritores de segmento, cada
um contendo 16 páginas de 4 K.
24
12
MMU usada em muitos computadores baseados no
68000 (endereçamento virtual para sistema de 4M)
25
Gerencia de Memória no MULTICS
26
13
Gerencia de Memória no MULTICS
Endereço Lógico
s d
sim
<
+
Limite
Base
d
Não
Tabela Segmento
p
Trap
d’
STBR
Memória
+
f
f
d’
Endereço
físico
Tabela página
para segmento s
27
Gerencia de Memória no Intel 386
• Usa segmenta com paginação para gerenciamento de
memória com um esquema de paginação em dois
níveis
28
14
Segmentação com Paginação:
Pentium
Mapeamento de um endereço linear sobre um endereço físico
29
Gerencia de Memória no Intel 386
Endereço lógico
Deslocamento
Seletor
Tabela de descritores
Descritor Segmento
Endereço Linear
diretório
+
página
Des.
Modura da página
Endereço Fisico
Diretório de Páginas
Entrada Diretório
Registrador Base
do diretório de Páginas
Tabela de Página
Entrada Tabela Página
30
15