Memória

Propaganda
BC1518-Sistemas Operacionais
Gerenciamento Básico
de Memória
Aula 07
Prof. Marcelo Z. do Nascimento
[email protected]
Roteiro
Introdução
Espaço de Endereçamento Lógico vs. Físico
Estratégias para escolha de uma partição
Alocação contígua de Memória
Swapping
Paginação
Segmentação
Leituras sugeridas
Exercícios
29/03/09
2
Introdução
Propósito geral de um sistema computacional é
executar programas:
Programa (código + dados) deve estar na
memória;
Para garantir uso da CPU
vários programas são
colocados na memória (Multi-programação);
Necessidade de uma política de gerenciamento
da memória;
Diferentes estratégias são aplicadas de acordo com
requisitos, algoritmos e suporte de hardware.
29/03/09
3
Introdução
Memória:
Uma “longa matriz” de bytes => com seus
endereços:
Um processo quer ler dados deve especificar o
endereço desejado.
Instruções são buscadas na memória assim como os
dados;
O processador somente executa instruções
localizadas na memória principal (não há acesso
direto a disco).
http://www.youtube.com/watch?v=mYbYGFWeG_Y
29/03/09
4
Introdução
Tendência atual do software
Lei de Parkinson: “Os programas se expandem para
preencher toda a memória disponível para eles”
(adaptação);
Gerenciador de memória:
Responsável por alocar e liberar espaços na memória
para os processos em execução;
Responsável por gerenciar o chaveamento entre a
memória principal e o disco rigído;
29/03/09
5
Hardware Básico
Instruções pegam endereços de memória como
argumento, mas não endereço de disco;
Para garantir que cada processo tenha um espaço de
memória separada:
O registrador de alocação contém o endereço base para
realizar a tradução;
Hardware Básico
Proteção ocorre quando o hardware da CPU
compara os endereços gerados no modo usuário
com os registradores;
Qualquer tentativa de violar a região, uma trap é
enviada para o monitor;
O SO que carrega os registradores base e limite.
Espaço de endereço Logico e
Físico
Endereço Lógico
◦ Gerado pela CPU;
◦ Também referenciado como endereço virtual;
◦ Programas de usuário trabalham com endereço
lógico, não vê o endereço físico real.
Endereço Físico
◦ Endereço que a unidade de memória trabalha.
8
Espaço de endereço Logico e
Físico
Ambos são os mesmos se a criação dos endereços
ocorrem em
◦ Tempo de compilação ou
◦ Tempo de carregamento
Pode ser diferente se o endereço é criado em
◦ Tempo de execução
◦ necessidade de mapeamento de endereço lógico
para físico
9
Unidade de Gerenciamento de
Memória (MMU)
Dispositivo que tem a função de mapear o
endereço físico para um endereço virtual;
Numa MMU, o valor no registrador realocado é
adicionado em todos os endereços gerados por um
usuário e enviado para memória;
O programa de usuário trabalha com endereço
lógico, ele nunca trabalha com endereço físico;
Registrador base é chamado de registrador de
realocação.
Unidade de Gerenciamento de
Memória (MMU)
Carregamento dinâmico
Rotina não é carregada até ser chamada;
Melhor utilização de espaço de memória, a rotina
não utilizada nunca é carregada;
Útil quando grande quantidade de código é
necessário para tratar de casos que ocorrem com
pouca frequência;
Não exige suporte do sistema operacional, é
responsabilidade dos usuários.
Swapping (Troca de
processos)
Técnica para resolver o problema da insuficiência
de memória:
antes: O programa ficava na memória até o fim
da sua execução, enquanto os outros esperavam
por memória livre.
swapping: O sistema retira temporariamente um
programa da memória, coloca-o no disco (swapp
out), para a entrada de outro.
29/03/09
13
Swapping (Troca de
processos)
Exemplo: Algoritmo de alternância circular
Quando o quantum expirar, o gerenciador de memória
começará a descarregar o processo que acabou e
carregará outro processo para o espaço da memória
liberada.
Exemplo: Escalonamento por
prioridade:
• Alta prioridade aloca
mémoria e baixa é
eliminado dessa área
29/03/09
14
Swapping (Troca de
processos)
Pode ocorrer de duas maneiras:
Com partições fixas:
Cada vez que um processo é bloqueado, ele é retirado
dando o lugar a outro;
Não é interessante porque aspartições fixas tendem a
desperdiçar espaços de memória;
Com partições variáveis:
Tamanho e número de partições variam com os processos;
Otimiza a utilização da memória, mas é mais complicado na
alocação e liberação da memória;
29/03/09
15
Alocação de Memória
Tipos básicos de gerenciamento:
Alocação não contígua: com chaveamento
(Multiprogramação):
Processos
são movidos entre a memória
principal e o disco;
artifício
usado para resolver o problema da
falta de memória;
Se
existe MEMÓRIA PRINCIPAL suficiente não
há necessidade de se ter divisões;
Contígua: não há chaveamento entre processos;
29/03/09
16
Alocação de Memória
Sem troca de Processos - Contíguo
Sem chaveamento entre processos: gerenciamento
mais simples;
Desvantagem: apenas um processo na memória;
Palmtop
0xFFF...
S.O.
ROM
USUÁRIO
RAM
DRIVERS
ROM
USUÁRIO
RAM
RAM
USUÁRIO
S.O.
(a)
S.O.
0
(b)
(c)
29/03/09
MS-DOS
17
Alocação de Memória –
Partições fixas
Múltiplos processos sendo executados;
Eficiência da CPU;
Dividir a memória em n partições;
N processos na memória;
Ocorria de modo manual => quando o sistema
era inicializado;
29/03/09
18
Alocação de Memória Partições fixas
Memória Principal
Tabela de partições
Partição
Tamanho
1
2 Kb
2
5 Kb
3
8 Kb
Sistema Operacional
Programas a serem executados:
E
D
C
B
A
3 Kb
6 Kb
1 Kb
4 Kb
2 Kb
29/03/09
Partição 1
2 Kb
Partição 2
5 Kb
Partição 3
8 Kb
19
Alocação de Memória Partições fixas
800 k
Partição 4
Partição 4
700 k
Fila de entrada
Partição 3
Partição 3
Partição 2
Partição 2
Partição 1
Partição 1
S.O.
S.O.
0
Partição está cheia
0
OS/360 (IBM)
29/03/09
20
Alocação de Memória Partições fixas
Tabela de Alocação de Partições: área livre e
ocupada pelos processos.
Memória Principal
Partição
Tamanho
Livre
1
2 Kb
Não
2
5 Kb
Sim
3
8 Kb
Não
Sistema Operacional
1
Programa C
2
Área livre
3
Programa B
29/03/09
21
Alocação de Memória Partições fixas
Vantagem:
Multiprogramação:
Partições fixas.
Desvantagens:
Utilização
parcial das partições fixas
Concomitante
criação de espaços ociosos:
fragmentação interna – programa é carregado
em uma partição um pouco maior que o
necessário.
29/03/09
22
Alocação de Memória Partições fixas
Fragmentação Interna
Memória Principal
Sistema Operacional
Programa C
1 Kb
Programa A
D
B
6 Kb
4 Kb
3 Kb
Programa E
5 Kb
29/03/09
23
Alocação de Memória Partições fixas
Pergunta: Descreva os benefícios e desvantagens de
tamanhos de partições grandes e pequenos.
• Partições maiores permitem que programas grandes
executem, mas resultam em fragmentação interna para
programas pequenos.
• Partições pequenas reduzem a quantidade de
fragmentação interna e aumenta o nível da
multiprogramação, permitindo que mais programas residam
na memória ao mesmo tempo, mas limita o tamanho do
programa.
29/03/09
24
Alocação de Memória Partições Dinâmicas
O processo recebe apenas o volume de memória que
requisita quando é carregado para processamento;
A
E
C
B
2 Kb
3 Kb
1 Kb
4 Kb
Memória Principal
Memória Principal
Sistema Operacional
Sistema Operacional
Programa B
4 Kb
Programa C
1 Kb
Programa E
3 Kb
Programa A
2 Kb
15 Kb
5 Kb
29/03/09
25
Alocação de Memória Partições Dinâmicas
Fragmentação Externa
Memória Principal
Sistema Operacional
4 Kb
Programa C
3 Kb
D
6 Kb
Programa A
5 Kb
29/03/09
26
Alocação de Memória Partições Dinâmicas
Solução para a Fragmentação Externa
Memória Principal
Memória Principal
Sistema Operacional
Sistema Operacional
4 Kb
Espaços livres
adjacentes
são reunídos
8 Kb
Programa C
3 Kb
Programa A
Programa A
5 Kb
5 Kb
29/03/09
27
Alocação de Memória Partições Dinâmicas
Solução para a Fragmentação Externa
Memória Principal
Memória Principal
Sistema Operacional
Sistema Operacional
Programa C
4 Kb
Programa A
Realocação
dinámica
Programa C
Relocação
3 Kb
Programa A
12 Kb
5 Kb
29/03/09
28
Estratégias para escolha da
partição
Para evitar ou diminuir o problema da fragmentação;
São propostos 3 técnicas na alocação dinâmica:
Best-fit:
Escolhe
a melhor segmento, ou seja, aquela em que o
programa deixa o menor espaço sem utilização;
A
tendência é que a memória fique cada vez mais com
pequenas áreas livres não contíguas
29/03/09
29
Estratégias para escolha da
partição
Sistema Operacional
Best-fit:
Memória Principal
Programa C
Sistema Operacional
4 Kb
(a
t- f
s
e
)B
it
Programa A
Programa C
Programa F
F
1 Kb
Área livre
5 Kb
2 Kb
Programa A
3 Kb
29/03/09
30
Estratégias para escolha da
partição
Worst-fit:
Escolhe o pior segmento, ou seja, aquela em que
o programa deixa o maior espaço sem utilização;
Deixando
espaços maiores, a tendência é
permitir que um maior número de programas
utilize a memória, diminuindo o problema da
fragmentação.
29/03/09
31
Estratégias para escolha da
partição
Worst-fit:
Memória Principal
Sistema Operacional
Sistema Operacional
4 Kb
Programa C
(b) Worst-fit
Programa C
Programa F
F
1 Kb
5 Kb
Área livre
Programa A
4 Kb
Programa A
3 Kb
29/03/09
32
Estratégias para escolha da
partição
First-fit:
escolhe o primeiro segmento livre que seja
suficiente para carregar o programa.
É
a estratégia mais rápida entre elas.
29/03/09
33
Estratégias para escolha da
partição
Memória Principal
Sistema Operacional
Sistema Operacional
4 Kb
Programa F
F
Área livre
3 Kb
Programa C
it
1 Kb
5 Kb
t- f
irs
)F
(c
Programa C
Programa A
Programa A
3 Kb
29/03/09
34
Proteção e Mapeamento da
Memória
Vinculação de endereços feita em execution time
faz com que endereços físicos e lógicos se
diferenciem:
Esquema de tradução é necessário.
O mapeamento de endereços em tempo de
execução é feita pela MMU (Memory Management
Unit);
Mapeamento permite escolher entre os métodos
diferentes de alocação de memória (Paginação,
segmentação).
O registrado base (base register) => chamado de
relocation register.
29/03/09
35
Proteção e Mapeamento da
Memória
O registrador de relocação contém o endereço
base para realizar a tradução.
É adicionado a todo endereço gerado por um
processo de usuário no momento em que este é
enviado à memória.
Proteção e Mapeamento da
Memória
Endereço base
29/03/09
37
Gerenciamento de memória com
Mapa de Bits
O SO deve gerenciar a memória atribuída de
forma dinâmica;
Duas técnicas são empregadas:
Gerenciamento de memória com listas
encadeadas
Técnica com Mapa de Bits:
Memória é dividida em unidades de alocação => kbytes;
Cada unidade corresponde a um bit no mapa:
0 - livre
1 – ocupado
29/03/09
38
Gerenciamento de memória com
Mapa de Bits
a)
b)
c)
Parte da memória com 5 segmentos de processos e 3
segmentos de memória livre
− pequenos riscos simétricos denotam as unidades de
alocação
− regiões sombreadas denotam segmentos livres
Mapa de bits correspondente
Mesmas informações em uma lista encadeada
39
Gerenciamento de memória com
Mapa de Bits
Gerenciamento de memória com listas encadeadas:
Cada item da lista encadeada construída tem 2
estados (P - processo, H - livre):
Endereço de início
Comprimento
Ponteiro para próximo item
Quando termina um determinado processo =>
junta o espaço liberado com seus vizinhos.
29/03/09
40
Gerenciamento de memória com
Lista Encadeada
Quatro combinações de vizinhança para o
processo X em término de execução
41
Paginação: Alocação de
memória não contíguo
Processo é alocado na memória onde há espaço
disponível;
Divide a memória física com tamanho de blocos fixos
denominado quadros (definidos pelo hardware).
◦ O tamanho da página é uma potência de 2, variando de 512
bytes até 16 MB
◦ O S.O. guarda todos os quadros livres
Divide a memória lógica em blocos do mesmo
tamanho chamado de página.
◦ Para executar um programa com tamanho de n páginas, é
necessário encontrar n páginas livre para carregá-lo.
◦ Configura uma tabela de páginas para traduzir o endereço
lógico em endereço físico
42
Esquema de tradução de
Endereço
O endereço gerado pela CPU é dividido em :
◦ Número de Página (p) – usado como um indice dentro de uma
tabela de páginas a qual contém o endereço base de cada
página na memória física
◦ Página offset – deslocamento (d) – combinada com endereço
base define o endereço de memória física que é enviado para
unidade de memória
page number
page offset
p
d
m-n
n
◦ Para um dado espaço de endereço lógico 2m e tamanho de
página 2n
43
Esquema de tradução de
Endereço
44
Esquema de tradução de
Endereço
45
Exemplo de Páginação
Tamanho da página = 4 bytes
Tamanho da memória = 8 páginas =
32 bytes
Endereço lógico 0:
página = 0/4 = 0, offset = 0%4 = 0
mapeado quadro 5 + offset 0 endereço físico 20
Endereço lógico 13:
página = 13/4 = 3, offset = 13%4 = 1
mapeado quadro 2 + offset 1 endereço físico 9
46
Quadros Livres
Before allocation
After allocation
Todo o processo deve ter sua própria tabela de página
47
Implementação da tabela de páginas
Tabela de página é guardada na memória principal
◦ Registrador de base da tabela de páginas (PTBR)
aponta para a tabela de página;
◦ Page-table length register – PRLR => indica o
tamanho da tabela de página.
Mas qual a desvantagem de guardar a tabela de
páginas na memória?
◦ Todo acesso a instruções requer dois acessos a
memória: um para tabela de página e outro para as
instruções.
48
Implementação da tabela de páginas
Solução:
Usar uma cache especial, menor, de pesquisa rápida
chamada Tranlation Look-aside Buffer (TLB)
É uma memória associativa de alta velocidade
Cada entrada da TLB consistem em duas partes
◦ Uma chave e um valor
Quando recebe um item, o item é comparado com
todas as chaves.
◦ Atualmente: Intel Pentium Core i7 - com 512 entradas
49
Paginação com TLB
Falha
50
Proteção
Proteção de memória é realizada pela
proteção dos bits associadas a cada quadro.
Esses bits costumam ser mantidos na tabela
de páginas
◦ Um bit pode definir uma página como sendo de leitura/escrita
ou somente leitura
Outro bit (valid-invalid) pode ser usado
◦ “valid” indica onde a página esta no espaço do endereço do
processo, isto é, uma página válida para acesso
◦ “invalid” indica que a página não está no espaço de endereço
do processo
51
O bit Valid (v) or Invalid (i) na
tabela de página
52
Estrutura de tabela de página
A maioria dos sistemas computadorizados modernos
admite um grande espaço de endereço;
Nesse contexto, a própria tabela de página se torna
excessivamente grande;
Uma solução é usar um algoritmo de paginação com
dois níveis, em que a própria tabela de página
também é paginada:
◦ Exemplo: máquina de 32 bits => 20 bits ficam para páginas e
12 para deslocamento
Número da página
pi
p2
descolcamento
d
53
Estrutura de tabela de página
54
Estrutura de tabela de página
• O SO cria a tabela de página externa e a página da
tabela de página.
55
Estrutura de tabela de página
• Em um espaço de endereçamento lógico de 64 bits,
o esquema de endereço em 2 níveis não é mais
adequado
• Usa-se um esquema de 3 níveis.
56
Tabela de página invertida
Uma entrada para cada quadro da memória física;
A entrada consiste no endereço virtual da página
armazenado nesse local da memória física com
informações sobre o precesso que possui essa
página.
57
Gerenciamento de Memória
Segmentação
Esquema de gerenciamento de memória que suporta
visão do usuário da memória.
Diferente da paginação?
◦ Difere fundamentalmente da paginação, onde o
programa é dividido em páginas de iguais
tamanhos que muitas vezes contêm instruções de
mais de um módulo de programa.
06/04/09
58
Gerenciamento de Memória
Segmentação
Segmentação:
Aproveita a modularidade do programa: a memória
não é dividida em tamanhos fixos e sim conforme a
estruturação do programa.
Isso permite que os programas sejam divididos
logicamente em sub-rotinas e estruturas de dados e
colocados em blocos de informações na memória.
06/04/09
59
Gerenciamento de Memória
Segmentação
Compilador cria segmentos:
As variáveis globais;
Chamadas de procedimento que
parâmetros e endereços de retorno;
A porção do código para cada procedimento ou
função;
As variáveis locais do procedimento ou função;
06/04/09
armazena
60
Gerenciamento de Memória
Segmentação
1
4
1
2
2
4
3
Espaço do usuário
Espaço de memória física
Gerenciamento de Memória
Segmentação
Tarefa: Compilação
Livre
Pilha
20k
Árvore
de Parse
Constantes
12k
Tabela
de
Símbolos
Fonte
Fonte
Tabela
de Símbolos
Espaço de
Endereçamento
Virtual
12k
0k
Pilha
02k
Constantes
0k
0k
0k
Segmentos (0-3)
06/04/09
62
Arquitetura de Segmentação
Tabela de segmento – mapeia o endereço físico;
cada tabela é composta por:
◦ base – contém o endereço físico inicial onde o
segmento reside na memória
◦ limite – especifica o tamanho do segmento
Segment-table base register (STBR) aponta para
a localização da tabela de segmento na memória
Segment-table length register (STLR) indica o
número de segmento usado por um programa;
número do segmento s é legal se s < STLR
63
Gerenciamento de Memória
Virtual - Segmentação
Segmentação – Proteção:
◦ Cada segmento representa uma porção semântica
do programa – segmentos que são instruções,
enquanto outros são dados.
◦ Os segmentos de instruções podem ser definidos
como somente de leitura ou de execução;
◦ O hardware de mapeamento verifica o bit de
proteção associado com cada entrada na tabela de
segmentos para evitar acesso ilegal.
06/04/09
64
Arquitetura de Segmentação
65
Arquitetura de Segmentação
66
Gerenciamento de Memória
Segmentação
Segmentação:
◦ Problemas encontrados => embora haja espaço na
memória, não há espaço contínuo:
Política de re-alocação: um ou mais blocos são realocados
para abrir espaço contínuo (pode criar fragmentação
externa);
◦ Necessidade:
Política de compactação: para que todos os espaços
sejam compactados;
Política (bloquear): fila de espera;
Política de troca: substituição de segmentos;
06/04/09
67
Gerenciamento de Memória
Virtual – Segmentação com Paginação
◦ Técnica de gerenciamento onde o endereçamento
lógico é divido em segmentos e, por sua vez, cada
segmento é dividido fisicamente em páginas.
◦ O endereço virtual é formado pelo nº do segmento
(NSV), um nº da página (NPV) dentro desse
segmento e um deslocamento dentro da página.
O nº do segmento aponta para uma entrada na tabela de
segmentos, que por sua vez aponta para uma tabela de
páginas.
06/04/09
68
Gerenciamento de Memória
Virtual – Segmentação com Paginação
◦ Para programador: sua aplicação continua sendo
mapeada por segmentos de tamanhos diferentes, em
função das subrotinas e estruturas definidas no
programa.
◦ O sistema trata cada segmento com um conjunto de
páginas de mesmo tamanho, mapeadas por uma tabela
de páginas associada ao segmento.
◦ Um segmento não precisa estar contíguo na memória
principal, eliminando o programa de fragmentação
externa.
Exemplo: Arquitetura Pentium
segue esse modelo
06/04/09
69
Exemplo: Intel Pentium
Suporta:
◦ Segmentação e segmentação com paginação
A CPU gera o endereço lógico:
◦ Que são dados à unidade de segmentação;
A unidade produz um endereço linear para cada
endereço lógico.
O enderço linear é dado à unidade de paginação, que
por sua vez gera o endereço físico na memória;
◦ Essas unidades foram o equivalente a unidade de gerência MMU.
70
Segmentação: Intel Pentium
Tamanho máximo do
segmento: 4 GB
Número máximo de
segmentos por processo
é 16 KB.
8 K privados mantidas na tabela de
descritor local
8 K compartilhado mantidados na tabela
de descritor global
71
Paginação: Intel Pentium
Tamanho da página :
4 KB paginação em 2
níveis ou
4 MB páginação em
um nível;
Os 10 bits mais alta
ordem referencia o
diretório de página
p
p
1
2
d
72
Linux com Paginação em 3 Níveis
No Pentium, tamanho do diretório do meio = 0
Sumário
CPU gera endereço lógico
Alocação de memória contíguo
Primeiro, Melhor ou Pior Ajuste
Paginação: alocação não contíguo de memória
Segmentação: tamanho variável de acordo com a
visao de usuário
Segmentação e Paginação no Pentium
74
Leituras Sugeridas
Silberschatz, A., Galvin, P. B. Gagne,
G. Sistemas Operacionais com Java.
7º edição. Editora Campus, 2008 .
TANENBAUM, A. Sistemas
Operacionais Modernos. Rio de
Janeiro: Pearson, 3 ed. 2010
Nota de Aula
Acesse o link abaixo:
http://hostel.ufabc.edu.br/~marcelo.nascime
nto/
Obrigado!!!
Exercícios
1 - Suponha um sistema de 128 Kb de memória principal e que utilize
um sistema operacional de 64 Kb que implemente alocação
particionada estática realocável. Considere também que o sistema
foi implementado em três partições: P1(8Kb), P2(24Kb) e
P3(32Kb). Calcule a fragmentação interna da memória principal
após a carga de três programas: PA, PB e PC.
A)P1->PA(6 Kb); P2->PB(20Kb); P3->PC(28Kb);
B) P1->PA(4 Kb); P2->PB(16 Kb); P3->PC(26Kb);
C)P1->PA(8 Kb); P2->PB(24Kb); P3->PC(32Kb);
2 – Considere o exercício anterior, seria possível executar quatro
programas concorrentemente utilizando apenas a técnica de
alocação de particionamento estática realocável? Se for possível,
como? Considerando ainda o mesmo exercício, seria possível
executar um programa de 36 Kb? Se for possível, como?
3 – O que é fragmentação interna e fragmentação externa? Qual o
tipo de fragmentação apresentado no método de gerenciamento de
partições fixas?
29/03/09
77
Download