Escolar Documentos
Profissional Documentos
Cultura Documentos
3
Multiprogramação com Partições Fixas
4
Modelando Multiprogamação
Degree of multiprogramming
Utilização da CPU = 1 – pn
Utilização da CPU em função do número de processos na
memória 5
Análise da performance de sistemas
Multiprogramados
6
Relocação e Proteção
7
Swapping (1)
8
Swapping (2)
12
Alocação First Fit (primeiro
encaixe)
O gerenciador de memória procura ao longo da
lista de segmentos de memória por um segmento
livre que seja suficientemente grande para esse
processo.
Esse segmento é quebrado em duas parles, uma
das quais é alocada ao processo, e a parte
restante transforma-se em um segmento de
memória livre de tamanho menor
13
Next fit (próximo encaixe)
Alteração menor no algoritmo first fit
funciona como o FirstFit exceto pelo fato de
sempre memorizar a posição em que encontra
um segmento de memória disponível de tamanho
suficiente.
⚫ Quando o algoritmo next fit tomar a ser chamado para
encontrar um novo segmento de memória livre, ele
inicializará sua busca a partir desse ponto
Simulações feitas por Bays (1977) mostraram
que o nextfit fornece um desempenho
ligeiramente inferior ao do firstfit.
14
best fit (melhor encaixe)
Pesquisa a lista inteira e escolhe o menor
segmento de memória livre que seja adequado ao
processo
É mais lento que o algoritmo firstfit
⚫ precisa pesquisar a lista inteira cada vez que for chamado
surpreendentemente, também resulta em maior
desperdício de memória do que firstfit e nextfit,
⚫ tende a deixar disponíveis inúmeros segmentos
minúsculos de memória e consequentemente inúteis.
Em média, o algoritmo firstfit gera segmentos de
memória disponíveis maiores
15
worst fit (melhor encaixe)
Pesquisa a lista inteira e escolhe o maior
segmento que seja adequado ao processo
Deveria gerar segmentos livres grandes
16
Exemplo
Um segmento de memória de
tamanho 2 for necessário:
⚫ Qual será alocado pelo firstfit, nextfit,
bestfit e worstfit?
17
Resolver agora
18
Memoria Virtual
Paginação (1)
Relação entre
endereços virtuais
e endereços físicos
dados pela tabela
de páginas
20
Tabelas de Páginas (1) 16 bits de
endereçamento virtual
Top-level
page table
26
Solução do exercício
27
Tabelas de Páginas(3)
28
TLBs – Translation Lookaside Buffers
(Memória associativa)
29
Tabelas de Páginas Invertidas
Estimativa por …
⚫ logging das páginas usadas em rexecuções
anteriores do processo
⚫ … não é prático…
32
Algorítmo Not Recently Used
Desvantagem
⚫ Uma página carregada a muito tempo pode ser usada
frequentemente
34
Segunda Chance
36
Least Recently Used (LRU)
Assume que páginas usadas recentemente serão
usadas novamente em breve
⚫ Descarta a página não usada por mais tempo
Deve manter uma lista ligada de todas as páginas
⚫ Usadas mais recentemente na frente, menos usadas no
fundo
⚫ Atualiza esta lista a cada referência à memória !!
Alternativamente, mantém um contador em cada
entrada de página
⚫ Escolhe a página com o menor contador
⚫ Periodicamente zera o contador
37
Simulando LRU em Software (1)
41
Relógio do Conjunto de Trabalho (WSClock)
42
Resolver
43
Revisão dos Algoritmos de Substituição de Páginas
44
5 min –
45
46
47
48
49
50
51
Uma máquina tem um
endereçamento virtual de 48 bits e
um endereçamento físico de 32 bits.
As páginas são de 8 KB.
Quantas entradas são necessárias
para a tabela de páginas?
52
Um computador com um endereçamento de
32 bits usa uma tabela de páginas de dois
níveis. Os endereços são quebrados em um
campo de 9 bits para a tabela de páginas
de nível 1, um campo de 11 bits para a
tabela de páginas de nível 2 e um
deslocamento.
⚫ Qual o tamanho das páginas e quantas existem
no espaço de endereçamento citado?
53
54
Alocação “Companheira” buddy
baseada em um algoritmo de alocação de
memória que divide a memória em partições para
tentar satisfazer uma requisição de memória da forma
mais adequada possível.
utiliza a divisão da memória em metades para tentar
proporcionar um best-fit.
De acordo com Donald Knuth, o sistema buddy foi
inventado em 1963 por Harry Markowitz, que ganhou
em 1990 o Prêmio de Ciências Econômicas em
Memória de Alfred Nobel, e foi descrito pela primeira
vez por Kenneth C. Knowlton (publicado em 1965)
55
Alocação “Companheira” buddy
Aloca memória em potências de 2, ou seja 2x , onde x
é um inteiro positivo.
Por exemplo, se o sistema tem 2000K de memória
física, o limite superior de x seria 10, sendo 210K
(1024K) o maior bloco possível de alocar.
Isto tem como resultado a impossibilidade de alocar
toda a memória em um único pedaço, os restantes
976K de memória deverão ser alocados em blocos
menores.
56
57
A partir do exemplo, é possível verificar que o que
acontece quando uma requisição de memória é feita
é o seguinte
• Quando a memória é alocada
1. Procura um bloco de memória de tamanho adequado (o menor 2k bloco que é
maior ou igual a memória requisitada)
1. Se encontrado, o mesmo é alocado para o Processo
2. Senão, ele tenta fazer um bloco de memória que seja adequado. O sistema faz isto
tentando o seguinte:
1. Divide um bloco livre de memória, maior que a memória solicitada, pela metade.
2. Se o limite inferior é encontrado, então aloca aquela quantidade de memória
3. Volte para o passo 1
4. Repita este processo até encontrar um bloco de memória adequado
• Quando a memória é liberada
1. Libera o bloco de memória
2. Verifica se o bloco vizinho é livre também?
3. Se é, combina os dois e volta para o passo 2, repetindo este processo até
encontrar o limite superior (toda memória está liberada) ou até encontrar um
vizinho que não está livre.
58
O Algoritmo Buddy no Linux
Inicialização:
59
O Algoritmo Buddy no Linux
Inicialização Exemplo:
60
O Algoritmo Buddy no Linux
Qual é a diferença entre DMA e DMA32?:
61
O Algoritmo Buddy no Linux
Inicialização Exemplo:
62
O Algoritmo Buddy no Linux
Desalocação de Memória:
63
O Algoritmo Buddy no Linux
Verificação dos blocos disponíveis:
cat /proc/buddyinfo
64
O Algoritmo Buddy no Linux
Verificação dos blocos disponíveis - exemplo:
65
O Algoritmo Buddy no Linux
Fragmentação de Memória:
67
O Algoritmo Buddy no Linux
Otimizações:
⚫ O alocador usado pelo Linux adiciona vários
aprimoramentos ao algoritmo
Conjunto de páginas por CPU
Alocador de amigos de partições
Agrupar por tipos de migração
⚫ O conjunto de páginas por CPU é, na verdade, uma maneira
de reduzir a contenção de bloqueio entre os processadores
e otimizar a alocação de página única
⚫ Agrupar por tipos de migração é uma extensão adicionada
para limitar a fragmentação da memória externa:
este é um problema antigo e vários métodos (e, portanto, vários
patches) foram enviados para tentar lidar com isso. Alguns deles,
embora talvez controversos, foram realmente fundidos.
68
O Algoritmo Buddy no Linux
cat /proc/pagetypeinfo
69
O Algoritmo Buddy no Linux
Falta de Memória:
70
Modelando Algoritmos de susbtituição de
Páginas – Anomalia de Belady
71
Modelando Algoritmos de susbtituição de
Páginas – Anomalia de Belady
72
Modelando Algoritmos de susbtituição de Páginas –
Anomalia de Belady
Funções de Densidade de
Probabilidade para duas Strings de
Distância Hipotéticas
75
A String de Distância
Configuração Original
Substituição de página Local
Substituição de página Global
77
Políticas de Alocação Global vs Alocação Local (2)
Pequeno
Vantagens
Desvantagem
80
Tamanho de Página(2)
s e p
overhead = + internal
p 2 fragmentation
Onde
⚫ s = tamanho médio do processo em bytes
⚫ p = tamanho da página em bytes
⚫ e = entrada de página Optimized when
p = 2se
81
Separar espaços de instruções e Dados
Um espaço de endereçamento
Espaços separados para I e D
82
Páginas Compartilhadas
83
Política de Limpeza
Requerida para um processo em
background process, daemon de
paginação
⚫ Periodicamente inspeciona a memória
Quando poucas molduras estão livres
⚫ Seleciona uma página para ser descartada
Pode usar mesmo algoritmo(clock)
⚫ Como o algoritmos regular de troca de
páginas mas com parâmetros diferentes
84
Tópicos de Implementação
Envolvimento do So com Paginação
1. Criação do processo
− Determina tamanho do programa
− Cria a tabela de páginas
2. Execução do processo
MMU iniciada para o novo processo
− TLB flushed
3. Momento da falta de página
− Determina endereço virtual causando a falta
− swap página alvo fora e requerida para dentro
4. Termino do processo
− Libera tabela de páginas e páginas
85
Administração de Falta de páginas (1)
86
Administração de Falta de páginas (2)
87
Backup de Instrução
Uma instrução Instrução de 6 bytes
provocando uma Para reinicializar essa instrução, o
sistema operacional deve determinar
falta de página onde se encontra o primeiro byte da
instrução.
O valor do PC no instante da
interrupção depende de qual
operando causou a falta de página e
de como o microcódigo da CPU foi
implementado
88
Backup de Instrução
89
Travando páginas em memória
Memória virtual e ES interagem
ocasionalmente
Processo faz uma chamada para uma
leitura de um dispositivo em um buffer
⚫ Enquanto espera por ES, outro processo inicia
⚫ Ocorre uma falta de página
⚫ O buffer do primeiro processo pode ser escolhido
para page-out
É necessário especificar algumas páginas
“travadas”(locked)
90
Backing Store
100
Segmentação com paginação : MULTICS (2)
101
Segmentação com paginação : MULTICS (3)
Um seletor Pentium
104
Segmentação com paginação: Pentium (2)
Level
Proteção no Pentium
108
109
110
111
112