Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 07 - Gerencia - Memoria - So - 2019
Aula 07 - Gerencia - Memoria - So - 2019
Gerenciamento de Memória
Gerenciamento de Memória Hierarquia de Memória
• Idealmente os programadores querem uma memória que seja: • Cache
• Grande • Pequena quantidade
• Rápida
• k bytes
•
•
Não Volátil
Baixo custo • Alto custo por byte • Disco
• Muito rápida • Grande quantidade –
• Infelizmente a tecnologia atual não comporta tais memórias • Volátil • G bytes
• Baixo custo por byte
• A maioria dos computadores utiliza Hierarquia de Memórias que • Lenta
combina: • Memória Principal
• Uma pequena quantidade de memória cache, volátil, muito rápida e de alto custo • Quantidade intermediária • Não volátil
• Uma grande memória principal (RAM), volátil, com centenas de MB ou poucos GB, • M bytes
de velocidade e custo médios
• Uma memória secundária, não volátil em disco, com gigabytes (ou terabytes), • Custo médio por byte
velocidade e custo baixos • Velocidade média
3 4
• Volátil
Gerenciamento de Memória
Hierarquia de Memória
❙ Cabe ao Gerenciador de Memória gerenciar a
hierarquia de memória
1
Gerenciamento de Memória Gerenciamento Básico de Memória
• Para cada tipo de memória: • Sistemas de Gerenciamento de Memória, podem
• Gerenciar espaços livres/ocupados; ser divididos em 2 classes:
• Alocar processos/dados na memória; • Sistemas que, durante a execução levam e
• Localizar dado. trazem processos entre a memória principal e
• Entre os níveis de memória, deve-se: o disco (troca de processos e paginação)
• Gerenciar as trocas. • Sistemas mais simples, que não fazem troca de
• Gerenciador de memória: processos e nem paginação
• Responsável por alocar e liberar espaços na memória
para os processos em execução;
• Responsável por gerenciar chaveamento entre a
memória principal e o disco, e memória principal e 7 8
memória cache;
Modelagem da Multiprogramação
Multiprogramação com partições Fixas
• Modelo de Multiprogramação
❙ Sistemas Monoprogramados: raramente usados • Múltiplos processos sendo executados;
atualmente. • Eficiência de CPU;
2
Modelagem da Multiprogramação Gerenciamento de Memória
O uso da Multiprogramação pode melhorar a utilização da
CPU • Multiprogramação à Vários processos na memória:
Considerando a utilização da CPU de modo probabilístico: • Proteção: Como proteger os processos uns dos outros
• Suponha que um processo gaste uma fração p de seu e o kernel de todos os processos?
tempo esperando pela finalização de sua solicitação de E/S • Necessidade de realocação: Como tratar a realocação?
• Com n processos simultâneos na memória, a probabilidade O processo pode estar em diferentes posições da
de todos os n processos estarem esperando por E/S
(situação em que a CPU está ociosa) é pn memória.
• Todas as soluções envolvem equipar a CPU com um
• A utilização da CPU é dada pela fórmula: hardware especial à MMU (memory management
utilização da CPU = 1 - pn unit).
13 14
3
Gerenciamento de Memória Gerenciamento de Memória
Registradores base e limite
Partições/Alocação
• Particionamento da memória pode ser realizado
b) MMU mais de duas maneiras:
sofisticada à • Partições fixas (ou alocação estática);
dois pares de • Partições variáveis (ou alocação dinâmica);
registradores: • Partições Fixas:
segmento de
• Tamanho e número de partições são fixos (estáticos);
dados usa um
par separado; • Não é atrativo, porque partições fixas tendem a
desperdiçar memória (Qualquer espaço não utilizado é
§ MMU literalmente perdido)
modernas
• Mais simples.
têm mais pares
20
de registradores.
19
23 24
4
Gerenciamento de Memória Gerenciamento de Memória
Partições Variáveis
• Minimizar espaço de memória inutilizados:
• Partições Variáveis: Tempo
• Compactação: necessária para recuperar os espaços
perdidos por fragmentação; no entanto, muito custosa
para a CPU;
C C C C C
• Técnicas para alocação dinâmica de memória:
B B B B • Bitmaps;
A
A A A • Listas Encadeadas.
D D D
SO SO SO SO SO SO SO
(a) (b) (c) (d) (e) (f) (g) 25 26
Memória livre
P 0 5 H 5 3 P 8 6 ....... H 29 3 x
5
Gerenciamento de memória com Mapas de Bits
Gerenciamento de Memória
33 34
❙ Principais Consequências
6
Gerenciamento de Memória Gerenciamento de Memória
O que fazer quando não existe espaço suficiente para • Swapping
todos os processos ativos?
• Chaveamento de processos inteiros entre a
memória principal e o disco;
• Swapping
• Chaveamento de processos inteiros entre a memória principal e o • Transferência do processo da memória
disco. principal para a memória secundária
(normalmente o disco): Swap-out;
• Overlays – Memória Virtual
• Programa de são divididos em pedaços menores • Transferência do processo da memória
• Pedaços são chaveados entre a memória principal e o disco. secundária para a memória principal: Swap-in;
• Pode ser utilizado tanto com partições fixas
37 38
quanto variáveis.
Gerenciamento de Memória
Gerenciamento de Memória
Memória Virtual (MV)
Memória Virtual (MV)
• Sistema operacional é responsável por dividir
o programa em overlays; • Com MV existe a sensação de se ter mais
• Sistema operacional realiza o chaveamento memória principal do que realmente se
desses pedaços entre a memória principal e o tem;
disco; • O hardware muitas vezes implementa
• Década de 60: ATLAS à primeiro sistema com funções da gerência de memória virtual:
MV (Universidade Manchester - Reino Unido); • SO deve considerar características da
• 1972: sistema comercial: IBM System/370. arquitetura.
41 42
7
Gerenciamento de Memória
Memória Virtual Gerenciamento de
Memória Memória Virtual
• Espaço de Endereçamento Virtual de um processo é
• Um processo em Memória Virtual faz referência
formado por todos os endereços virtuais que esse
a endereços virtuais e não a endereço reais de
processo pode gerar;
memória RAM;
• Espaço de Endereçamento Físico de um processo é
• No momento da execução de uma instrução, o
formado por todos os endereços físicos/reais aceitos
endereço virtual é traduzido para um endereço
pela memória principal (RAM).
real, pois a CPU manipula apenas endereços
reais da memória RAM à MAPEAMENTO.
43 44
Gerenciamento de
Memória Mapeamento MV Gerenciamento de Memória
Memória Virtual
• Endereços virtuais formam um espaço de
• MMU: Realiza mapeamento dos endereços endereçamento virtual;
lógicos (usados pelos processos) para endereços
físicos;
• Mapeamento entre endereços reais e
virtuais é realizado pela MMU;
Endereço
• Técnicas de MV:
Endereço
Lógico Físico Memória
• Paginação;
Processador MMU
Principal • Segmentação.
Unidade de Processamento 45 46
8
Gerenciamento de Memória
Gerenciamento de Memória
Memória Virtual - Paginação
E sp a ço d e Memória Virtual
• Exemplo:
e n d e re ça m e n to
virtu a l d e A
Ta b e la d e
E n d e re ço virtu a l 1 m a p e a m e n to
• Páginas de 4Kb
de A
.
.
. • 4096 bytes/endereços (0-4095);
M e m ó ria Prin cip a l
E sp a ço d e
e n d e re ça m e n to
virtu a l d e B
• Temos:
E n d e re ço virtu a l 1
Ta b e la d e
m a p e a m e n to
de B
• 16 páginas virtuais;
.
.
• 8 páginas reais;
.
49 50
Pro ce ss o B
9
Gerenciamento de Memória
Mapeamento da MMU
Gerência de Memória
Memória Virtual - Paginação
§ Número da página Memória Virtual - Paginação
virtual é usado como
índice; • Algumas questões que surgem com
§ Se página está na relação à Paginação:
memória RAM, então o • Onde armazenar a tabela de páginas?
nº da página real (110)
é copiado para os três
bits mais significativos
do endereço de saída
índice
(real), juntamente com
o deslocamento sem
alteração;
§ Endereço real com 15 55 56
bits é enviado à
memória.
10
Gerências de Memória Gerências de Memória
Memória Virtual - Paginação Memória Virtual - Paginação
Tabela de Página Multinível • 1o. nível com 1024
• O objetivo é evitar manter toda a tabela de páginas na entradas
memória durante todo o tempo • Cada uma dessas
• Apresenta-se como uma solução para o dimensionamento da entradas representa
4 MB
tabela de páginas
• 4 GB / 1024
• Uso de dois apontadores e um deslocamento
• Exemplo: Tabela de dois níveis
• O endereço de 32 bits de endereço divido em 3 campos
• PT1 [10 bits] : indexa o primeiro nível da tabela
• PT2 [10 bits] : indexa o segundo nível da tabela
• Deslocamento [12 bits]: => paginas de 4 KB
61 62
11
Gerências de Memória Gerências de Memória
Memória Virtual - Paginação Memória Virtual - Paginação
• Para entender as vantagens, considere o exemplo anterior • Paginação de três níveis
(endereço virtual de 32 bits – página de 4kB) • Típicos de arquiteturas de processadores de 64 bits
• Usando tabela de páginas tradicional:
• 1 tabela de 220 entradas (1 M entradas)
• Usando tabela de páginas em 2 níveis
• 4 tabelas de 210 entradas cada (1 K entradas)
• Se cada entrada da tab. de páginas ocupa 16 bits
• primeiro caso: 220 x 24 = 16 Mbits p/ armazenar a tabela de
páginas
• segundo caso: 4 x 210 x 24 = 64 Kbits p/ armazenar a tabela de 2
níveis
67 68
12
Gerências de Memória Gerências de Memória
Memória Virtual - Paginação Memória Virtual - Paginação
TLB – Translation Lookaside Buffer
• Como diminuir o número de referências à MP introduzido
pelo mecanismo de paginação?
• Os programas tendem a fazer um grande número de
referências a um mesmo pequeno conjunto de páginas
virtuais
• Princípio da localidade temporal e espacial
• Solução: equipar a MMU com uma TLB
• Também chamada de Memória Associativa
• Dispositivo de hardware implementado com um reduzido
número de entradas
73 • Contém algumas entradas (linhas) da tabela de páginas do 74
processo em execução
Exemplo de TLB
• Loop acessando pag. 19, 20, 21
75 • Dados principais: pag. 129, 130, 141 76
• Pilha: 860, 861
Memória associativa (TLB) - De 64 a 4096 entradas
13
Gerência de Memória
Gerenciamento de Memória
Memória Virtual - Paginação Memória Virtual - Paginação
• Algumas questões que surgem com • Estrutura de uma tabela de páginas: 32 bits (mais comum)
relação à Paginação:
Número da Moldura de Página
• Onde armazenar a tabela de páginas?
• Qual a estrutura de uma entrada na tabela de
páginas?
Identifica a página real;
Campo mais importante;
79 80
Bits de Proteção:
Indicam tipos de acessos permitidos:
Bit de Residência: 1 bit à 0 – leitura/escrita
Se valor igual 1, então entrada válida para uso; 1 – leitura
Se valor igual 0, então entrada inválida, pois 3 bits à 0 – Leitura
página virtual correspondente não está na memória; 1 – Escrita
2 - Execução
81 82
14
Gerência de Memória
Gerenciamento de Memória
Memória Virtual - Paginação Memória Virtual - Paginação
• Estrutura de uma tabela de páginas: 32 bits (mais comum) • Algumas questões que surgem com
relação à Paginação:
Número da Moldura de Página
• Onde armazenar a tabela de páginas?
• Qual a estrutura de uma entrada na tabela de
páginas?
Bit de Cache: • Quantas páginas reais serão alocadas a um processo?
Necessário quando os dispositivos de entrada/saída
são mapeados na memória e não em um endereçamento
específico de E/S;
85 86
Gerência de Memória
Gerenciamento de Memória
Memória Virtual - Paginação Paginação - Busca de Página
• Algumas questões que surgem com Políticas de busca determinam quando uma página deve
ser carregada para a memória.
relação à Paginação: • Paginação simples:
• Onde armazenar a tabela de páginas? • Todas as páginas virtuais do processo são carregadas para a
memória principal;
• Qual a estrutura de uma entrada na tabela de • Assim, sempre todas as páginas são válidas.
páginas? • Paginação por demanda (Demand Paging):
• Quantas páginas reais serão alocadas a um processo? • Apenas as páginas efetivamente acessadas pelo processo são
carregadas na memória principal;
• Quando uma página deve ser carregada para a • Quais páginas virtuais foram carregadas à Bit de controle (bit de
memória? residência);
• Página inválida.
• Paginação antecipada (Antecipatory Paging):
89 • Carrega para a memória principal, além da página referenciada, 90
outras páginas que podem ou não ser necessárias para o processo.
15
Gerência de Memória
Gerenciamento de Memória
Memória Virtual - Paginação Paginação - Busca de Página
• Algumas questões que surgem com
• Página inválida: MMU gera uma interrupção de
relação à Paginação: proteção e aciona o sistema operacional;
• Onde armazenar a tabela de páginas? • Se a página está fora do espaço de
• Qual a estrutura de uma entrada na tabela de endereçamento do processo, o processo é
páginas? abortado;
• Quantas páginas reais serão alocadas a um processo? • Se a página ainda não foi carregada na
• Quando uma página deve ser carregada para a memória principal, ocorre uma falta de página
memória? (page fault).
• Como trazer uma página para a memória?
91 92
Gerência de Memória
Gerenciamento de Memória
Memória Virtual - Paginação Paginação - Troca de Páginas
• Algumas questões que surgem com A liberação é feita por meio da troca de página.
relação à Paginação:
• Política de Substituição Local: páginas dos próprios
• Onde armazenar a tabela de páginas?
processos são utilizadas na troca;
• Qual a estrutura de uma entrada na tabela de
• Dificuldade: definir quantas páginas cada processo pode
páginas?
utilizar;
• Quantas páginas reais serão alocadas a um processo?
• Política de Substituição Global: páginas de todos os
• Quando uma página deve ser carregada para a
memória? processos são utilizadas na troca;
• Como trazer uma página para a memória? • Problema: processos com menor prioridade podem ter um
número muito reduzido de páginas, e com isso, acontecem
• Como liberar espaço na memória? 95 96
muitas faltas de páginas;
16
Gerenciamento de Memória Gerenciamento de Memória
Paginação - Troca de Páginas Troca de Páginas
• Algoritmos de substituição local alocam uma
fração fixa de memória para cada processo;
• a) Configuração inicial.
enquanto que algoritmos de substituição global
• b) Alocação local.
alocam molduras de páginas entre os processos
• c) Alocação global.
em execução, variando o número de páginas no
tempo;
97 98
17
Gerenciamento de Memória
Gerenciamento de Memória Troca de Páginas - Paginação
Troca de Páginas - Paginação
• Algoritmos: • Algoritmo Ótimo:
• Ótimo; • Retira da memória a página que tem menos
• NRU; chance de ser referenciada;
• FIFO; • Praticamente impossível de se saber;
• Segunda Chance; • Impraticável;
• Relógio; • Usado em simulações para comparação com outros
algoritmos.
• LRU;
• Working set;
• WSClock.
103 104
18
Gerenciamento de Memória Gerenciamento de Memória
Troca de Páginas - Paginação Troca de Páginas - Paginação
Se R=0 Se R=1
- troca de página -R=0
- desloca o ponteiro - desloca o ponteiro
- continua busca 109 110
Gerenciamento de Memória
Gerenciamento de Memória
Troca de Páginas - Paginação Troca de Páginas - Paginação
• LRU – Hardware
• Matriz nxn bits
• Software: NRU
• Quando se faz uma referência à página k -> • Para cada página existe um contador à
• Todos os bits da linha k recebem valor 1 iniciado com zero e incrementado a cada
• Todos os bits da coluna k recebem o valor 0 referência à pagina;
• Página com menor valor do contador é
candidata a troca;
• Como esse algoritmo não se esquece de
nada
• Problema: pode retirar páginas que estão sendo
113
referenciadas com frequência; 114
• Compilador com vários passos: passo 1 tem mais tempo
de execução que os outros passos à páginas do passo 1
terão mais referências armazenadas;
19
Gerenciamento de Memória
Gerenciamento de Memória Troca de Páginas - Paginação
Troca de Páginas - Paginação • Algoritmo aging
Bits R para páginas 0-5
• Software: Algoritmo aging clock tick 0 clock tick 1 clock tick 2 clock tick 3 clock tick 4
101011 110010 110101 100010 011000
• Modificação do NRU, resolvendo o problema Contadores
descrito anteriormente; 0 10000000 11000000 11100000 11110000 01111000
• Além de saber quantas vezes a página foi
1 00000000 10000000 11000000 01100000 10110000
referenciada, também controla quando ela foi
referenciada; 2 10000000 01000000 00100000 00100000 10001000
• Geralmente, 8 bits são suficientes para o controle 3 00000000 00000000 10000000 01000000 00100000
se as interrupções de relógio (clock ticks) ocorrem a 4 10000000 11000000 01100000 10110000 01011000
cada 20ms (10-3); 5 10000000 01000000 10100000 01010000 00101000
115 116
a) b) c) d) e)
Gerenciamento de Memória
Troca de Páginas - Paginação Gerenciamento de Memória
§ Algoritmo Working Set: Tempo virtual atual (CVT): 2204
Troca de Páginas - Paginação
Bit R
age = CVT – TLU • Algoritmo WSClock:
(Ex.: 2204-2084 = 120)
Tempo do último τ = múltiplos clock ticks • Clock + Working Set;
Uso (TLU) 2084 1
• Lista circular de páginas formando um anel a
2003 1 Percorrer as páginas examinando bit R; cada página carregada na memória;
* Se todas as páginas
estiverem com R=1, 1980 1 Se (R==1)*
uma página é página foi referenciada; • Utiliza bit R e o tempo da última vez que a
escolhida
1213 0 faz TLU da página igual ao CVT; página foi referenciada;
Randomicamente; 2014 1 Se (R==0 e age > τ) • Bit M utilizado para agendar escrita em disco.
** Se todas as páginas página não está no working set;
2020 1 remove a página;
estiverem no WS, a
página mais velha 2032 1 Se (R==0 e age <= τ) **
com página está no working set; 119 120
1620 0
R=0 é escolhida; guarda página com maior age;
Tabela de Páginas
20
Gerenciamento de Memória
Gerenciamento de Memória Troca de Páginas - Paginação
Troca de Páginas - Paginação
Tempo virtual atual: 2204 Tempo virtual atual: 2204
• Algoritmo WSClock: • Algoritmo WSClock:
1620 0 1620 0 1620 0 1620 0
Gerenciamento de Memória
Troca de Páginas - Paginação Gerenciamento de Memória
Troca de Páginas - Paginação
Tempo virtual atual: 2204
• Algoritmo WSClock: • Algoritmo WSClock:
2204 1
1620 0
2032 1 • Se todas estiverem com M==1; então escreve
2084 0
2084 1 2032 1 Nova página página atual no disco, e troca a página;
2003 0 2020 1 • Melhor desempenho à menos acessos ao
2003 1 2020 1 disco.
1980 0 2014 0
1980 1 2014 0
1213 0
1213 0
c) d)
R==0 e age>t 123 124
M==1 (agenda escrita e continua procura)
21
Gerenciamento de Memória Gerenciamento de Memória
Implementação da Paginação Implementação da Paginação
Até agora – somente como uma página é selecionada para • Memória Secundária – Disco
remoção. Mas onde essa página descartada da memória é
colocada? • Possibilidade B - Nada é alocado
• Memória Secundária – Disco antecipadamente, espaço é alocado em disco
• A área de troca (swap area) é gerenciada como uma lista de quando a página for enviada para lá. Assim,
espaços disponíveis;
processo na memória RAM não fica
• O endereço da área de troca de cada processo é mantido na
tabela de processos; “amarrado” a uma área específica.
• Cálculo do endereço: MMU;
• Possibilidade A - Assim que o processo é criado, ele é copiado
todo para sua área de troca no disco, sendo carregado para
memória quando necessário;
• Área de troca diferente para dados, pilha e programa, pois área de 127 128
dados pode crescer e a área de pilha crescerá certamente.
131 132
22
Gerenciamento de Memória Gerenciamento de Memória
Memória Virtual - Segmentação Memória Virtual - Segmentação
Memória Lógica P1
0k 0k 0k 0k 0k Memória Física
Espaço de 133 Segmento 1 134
Endereçamento Segmentos (0-4)
Virtual
Gerenciamento de Memória
Gerenciamento de Memória Segmentação-Paginada
Segmentação-Paginada
Tabela de Páginas
• Espaço lógico é formado por segmentos s p d Segmento 0
p.f d
• Cada segmento é dividido em páginas lógicas;
• Cada segmento possui uma tabela de páginas à
mapear o endereço de página lógica do segmento em
endereço de página física;
• No endereçamento, a tabela de segmentos indica, Tabela de Segmentos
Tabela de Páginas
para cada segmento, onde sua respectiva tabela de Segmento 3
páginas está;
135 136
Gerenciamento de Memória
Thrashing Gerenciamento de Memória
Thrashing
• Thrashing (paginação excessiva)
• Evitar o problema (paginação):
• Associado com o problema de definição do • Taxa máxima aceitável de troca de páginas;
número de páginas/segmentos à troca de • Suspender alguns processos, liberando páginas físicas
páginas/segmentos é uma tarefa cara e lenta; (swapping);
• Risco de aumentar o tempo de resposta dos processos.
• Se o processo tiver um número de páginas muito • Determinar periodicamente o número de processos
reduzido, ele pode ficar muito tempo esperando em execução e alocar para cada um mesmo número
pelo atendimento de uma falta de página à de páginas;
• Problema: processos grandes teriam o mesmo número de
muitos processos bloqueados. páginas de processos pequenos, causando paginação
excessiva.
137 138
23
Gerenciamento de Memória
Thrashing Gerenciamento de Memória
Memória Virtual
Consideração Paginação Segmentação
• Possível solução: Número de páginas Programador deve saber da técnica? Não Sim
proporcional ao tamanho do processo à
alocação dinâmica durante a execução dos
processos; Espaços de endereçamento existentes 1 Vários
Gerenciamento de Memória
Memória Virtual
Consideração Paginação Segmentação
Tabelas de tamanho Não Sim
variável podem ser
acomodadas sem
problemas?
Compartilhamento Não Sim
de procedimentos
entre usuário é
facilitado?
Por que? Para obter Para permitir que programas e
espaço de dados possam ser divididos em
endereçamento espaços de endereçamento
maior sem logicamente independentes;
aumentar compartilhamento e proteção 141
memória física
24