8/15/2019 s.o Memorias
1/61
Prof.ª Ms. Ana Cláudia Melo Tiessi Gomes de Oliveira
SISTEMAS OPERACIONAIS I
Aula 9 e 10 – Gerenciamento de Memória
8/15/2019 s.o Memorias
2/61
2
GERENCIAMENTO DE MEMÓRIA
•
Gerenciamento básico de memória• Troca de processos• Memória virtual• Algoritmos de substituição de páginas•
Modelagem de algoritmos de substituição de páginas• Questões de projeto para sistemas de paginação• Questões de implementação• Segmentação
8/15/2019 s.o Memorias
3/61
3
Conteúdo• Gerenciamento básico de memória
– Monoprogramação sem troca de processos ou paginação
– Multiprogramação com partições fixas – Modelagem de multiprogramação
– Análise de desempenho de sistemas de
multiprogramação
8/15/2019 s.o Memorias
4/61
4
Gerenciamento de Memória
• A memória é um recurso importante e por isso deve sergerenciado com cuidado.
• Idealmente, o que todo programador deseja é dispor deuma memória que seja – grande – rápida – não volátil
8/15/2019 s.o Memorias
5/61
5
Hierarquia de memórias•
Esta hierarquia combina – CACHE : pequena quantidade de memória rápida, de alto
custo. – MEMÓRIA PRINCIPAL (RAM): quantidade considerável
de memória principal de velocidade média, custo médio – MEMÓRIA SECUNDÁRIA: centenas de gigabytes de
armazenamento em disco de velocidade e custo baixos
• O SO quem coordena a utilização destas memórias. Éa parte do SO responsável por esta tarefa éGerenciador de Memória.
8/15/2019 s.o Memorias
6/61
6
Gerenciamento de Memória
• Ele tem como função manter o controle dequais partes de memória estão em uso e quaisnão estão, alocando memória aos processosquando eles precisam e liberando quando os processos não necessitam mais.
• Gerencia a troca de processos entre a memóriae o disco.
8/15/2019 s.o Memorias
7/61
7
Gerenciamento básico de Memória
• Os sistemas de gerenciamento de memória sãodivididos em duas classes: – Sistemas que, durante a execução levam e trazem
processos entre a memória principal e o disco. – Sistemas mais simples que não necessitam de
troca.
8/15/2019 s.o Memorias
8/61
8
Monoprogramação sem Troca de Processos ou Paginação
Três maneiras simples de organizar a memória- um sistema operacional e um processo de usuário
8/15/2019 s.o Memorias
9/61
9
Monoprogramação sem Troca de Processos ouPaginação
• (a) Foi inicialmente, empregado emcomputadores de grande porte eminicomputadores. Já não existe mais.
• (b) É utilizado em alguns palmtops e emsistemas embarcados.
• (c) Faz parte dos primeiros pc´s (MS DOS). As
parte contidas em ROM são denominadas deBIOS ( Basic Input Output System).
8/15/2019 s.o Memorias
10/61
10
Multiprogramação com Partições Fixas
• A maneira mais simples de realizar a multiprogramaçãoconsiste em simplesmente dividir a memória e, n
partições (tamanhos diferentes). Essa partição é feitadurante o BOOT.
• Ao chegar, um job poder ser colocado em uma fila deentrada associada à menor partição. Como o tamanho das
partições é fixo nesse esquema, todo o espaço de uma partição usado pelo job é perdido.
• Hoje poucos (nenhum) sistemas suportam esse modelo.
8/15/2019 s.o Memorias
11/61
11
Multiprogramação com Partições Fixas
• Partições fixas de memóriaa) filas de entrada separadas para cada partição
b) fila única de entrada
8/15/2019 s.o Memorias
12/61
12
Multiprogramação com Partições Fixas
•
Desvantagens: – fila grande para partição pequena e fila pequena para uma partiçãogrande.
• Soluções: –
Manter uma única fila. – Pesquisar na fila de entrada e alocar a partição disponível ao maior
job.• Problema: Prejudica job pequenos (entrada e saída)• Solução:
• Haver pelo menos uma partição pequena para atender Jobs pequenos.• Criar uma regra que definisse que um job pronto para execução não poderia
ser preterido de receber uma partição mais do que K vezes, este ganharia um ponto. Quando alcançasse K pontos ele teria uma partição (mesmo quedesperdiçasse memória)
8/15/2019 s.o Memorias
13/61
13
• Modelo otimista: – De modo genérico, se em média, um processo
permanece em execução apenas 20 por cento do
tempo em que reside em memória, com cinco processos simultaneamente na memória a CPUdeveria permanecer ocupada durante todo o tempo.
Modelagem de Multiprogramação
8/15/2019 s.o Memorias
14/61
14
Modelagem de Multiprogramação
• Modelo probabilístico: – Um processo gasta uma fração p de seu tempo esperando
pela finalização de sua solicitação de E/S. Com n processossimultâneos na memória, chega-se a esta fórmula.
Utilização da CPU =
8/15/2019 s.o Memorias
15/61
15
Modelagem de Multiprogramação
Utilização da CPU como uma função do número de processos na memória
8/15/2019 s.o Memorias
16/61
16
Análise de Desempenho de Sistemas de Multiprogramação
8/15/2019 s.o Memorias
17/61
Análise de Desempenho de Sistemas de Multiprogramação
•
Chegada de 4 Jobs e suas necessidades de trabalho• Utilização da CPU por até 4 Jobs com 80% de espera por E/S• Sequência de eventos entre chegada e término dos Jobs
– Note que os números mostram quanto tempo da CPU cada job obtémem cada intervalo
8/15/2019 s.o Memorias
18/61
18
Troca de Processos (Swapping )
• Alterações na alocação de memória à medida que processosentram e saem da memória
• Regiões sombreadas correspondem a regiões de memória nãoutilizadas naquele instante
8/15/2019 s.o Memorias
19/61
19
• Alocação de memória muda com a entrada e saída de processos da memória.
• Duas maneiras:
•
Swapping –
programa todo em memória. Carregadodo disco para memória.
• Memória Virtual – Só parte do programa é carregado para a memória.
Troca de Processos (Swapping )
8/15/2019 s.o Memorias
20/61
20
Troca de Processos (2)
a) Alocação de espaço para uma área de dados em expansão b) Alocação de espaço para uma pilha e uma área de dados,
ambos em expansão
8/15/2019 s.o Memorias
21/61
21
Gerenciamento de Memória com Mapas de Bits
a) 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
b) Mapa de bits correspondente
c) Mesmas informações em uma lista encadeada
8/15/2019 s.o Memorias
22/61
22
Gerenciamento de Memória com Mapas de Bits
Desvantagens:• Se for necessário carregar na memória um
processo com tamanho de K unidades, o
gerenciador de memória precisa encontrarespaço disponível na memória procurando nomapa de bits uma seqüência de k bitsconsecutivos operação é lenta.
8/15/2019 s.o Memorias
23/61
23
Gerenciamento de Memória com Listas Encadeadas
• Quatro combinações de vizinhança para o
processo X em término de execução• Algoritmos de busca: First-Fit, Next-Fit, Best-Fit,
Worst-Fit e Quick-Fit
8/15/2019 s.o Memorias
24/61
24
Alguns métodos
• Foram desenvolvidos alguns métodos paraminimizar a fragmentação externa.
Os principais são: – Overlays – Paginação
– Segmentação
8/15/2019 s.o Memorias
25/61
25
Princípio da Memória Virtual
Overlay• Conceito nascido no tempo em que os computadores
possuíam pouca memória, e não comportavam programas grandes
• Idéia principal: dividir o programa em partes (módulos),de modo que cada um caiba na memória.
• Neste tipo de técnica, o programador é responsável por: – Dividir o programa; – Decidir onde armazenar cada parte, e – Transportar cada parte entre a e memória principal e
secundária.
8/15/2019 s.o Memorias
26/61
26
A automatização do Overlay
• Um grupo de pesquisa com o objetivo deautomatizar o Overlay criou o métodochamada
MEMÓRIA VIRTUAL
8/15/2019 s.o Memorias
27/61
27
Memória Virtual
• Memória física é limitada.
• Programas necessitam de mais memória
•
Solução a nível da aplicação: divisão do programa em blocos distintos.
• Programador tinha de retirar e carregar em
memória os blocos ( o SO não intervinha)
8/15/2019 s.o Memorias
28/61
28
Memória Virtual Paginação (1)
Localização e função da MMU
Memória Virt al
8/15/2019 s.o Memorias
29/61
29
A relação entreendereços virtuais eendereços físicos dememória dada pelatabela de páginas
Memória VirtualPaginação (2)
8/15/2019 s.o Memorias
30/61
30
Paginação• Separar os conceitos de espaço de endereçamento e posições de memória.
Exemplo:
– Um computador com um campo de endereço de 16 bits e uma memória principal de 4096 bytes (4K).
– Qualquer programa neste computador pode, então, gerar endereços que variam
de 0 à 62 KB, apesar das posições de endereços acima de 4096 não existiremfisicamente.
• O Hardware forçava uma correspondência de um para um entre espaços deendereçamento e endereços reais.
• Paginação melhora o problema de fragmentação, diminuindo-a, pois todos
os tamanhos dos blocos são iguais, aumentando o desempenho dohardware.
8/15/2019 s.o Memorias
31/61
31
Paginação• Suposição: há sempre espaço suficiente na memóriasecundária para armazenar um programa completo e
seus dados.• A paginação dá ao programador a ilusão de uma
memória principal grande, linear e contínua, domesmo tamanho do espaço de endereçamento,quando, de fato, a memória principal disponível podeser menor que o espaço de endereçamento.
• A simulação desta memória ampla não pode ser
detectada por programa: é um mecanismostransparente ao usuário.
8/15/2019 s.o Memorias
32/61
32
Termos Importantes
• Espaço de endereçamento virtual: são osendereços que o programa pode referenciar.
• Endereço físico: são os endereços reais dememória.
• Tabela de páginas: relaciona os endereços virtuais
com endereços físicos.
8/15/2019 s.o Memorias
33/61
33
Implementação da Paginação
•
Existência de uma memória secundária para manterum programa completo.• A cópia de um programa na memória secundária
poder ser considerado o original.
• As partes trazidas da memória principal, de vez emquando, podem ser consideradas cópias.
• Quando modificações são feitas na cópia da memória principal, elas devem ser refletidas no original.
8/15/2019 s.o Memorias
34/61
34
Características da Implementação
•
O espaço de endereçamento virtual é dividido em páginas de tamanhos iguais (geralmente de 512 a4096 endereços por página).
• O espaço de endereçamento físico tem tamanhode página idêntico ao do endereçamento virtual
(estas páginas são chamadas páginas físicas)
8/15/2019 s.o Memorias
35/61
35
Tabelas de Páginas (1)
Operação interna de uma MMU com 16 páginas de 4KB26
8/15/2019 s.o Memorias
36/61
36
Tabelas de Páginas (1)
•
Tradução do endereço lógico para o endereçofísico é feito pelo hardware do processador , daseguinte forma:
0 0 00 0 1 0 1 1 1 0 1 1 1 1 0
0 0 10 1 0 0 1 1 1 0 1 1 1 1 0
0 0 10 0 10 0 10 1 0
0 1 01 0 1
Endereço lógico
01
2
Endereço físico
Tabela de Página
8/15/2019 s.o Memorias
37/61
37
Tabelas de Páginas(2)
a) Endereço de 32 bits com 2 campos para endereçamento detabelas de páginas
b) Tabelas de páginas com 2 níveis
8/15/2019 s.o Memorias
38/61
38
Tabelas de Páginas(3)
Entrada típica de uma tabela de páginas
8/15/2019 s.o Memorias
39/61
39
Memória Associativa ou TLB
TLB para acelerar a paginação
8/15/2019 s.o Memorias
40/61
Questões de Projetos paraSistemas de Paginação
8/15/2019 s.o Memorias
41/61
41
Política de Alocação Local x Global (1)
(a) Configuração original; (b) Substituição local; (c) Substituição global
8/15/2019 s.o Memorias
42/61
42
Política de Alocação - Local x Global (2)
Freqüência de faltas de página como função donúmero de molduras de página alocado
8/15/2019 s.o Memorias
43/61
43
Controle de Carga
• Mesmo com um bom projeto, o sistema ainda pode sofrer paginação excessiva (thrashing)
• Quando o algoritmo PFF indica – alguns processos precisam de mais memória – mas nenhum processo precisa de menos
• Solução :Reduzir o número de processos que competem pelamemória – levar alguns deles para disco e liberar a memória a eles alocada – reconsiderar grau de multiprogramação
8/15/2019 s.o Memorias
44/61
44
Tamanho de Página (1)
Tamanho de página pequeno
• Vantagens
– menos fragmentação interna – menos programa não usado na memória
• Desvantagens
– programas precisam de mais páginas, tabelas de página maiores
8/15/2019 s.o Memorias
45/61
45
Tamanho de Página (2)• Custo adicional da tabela de páginas e
fragmentação interna
• Onde – s = tamano médio do processo em bytes
– p = tamanho da página em bytes
–
e = tamanho da entrada da tabela de página
2
s e poverhead
p
Espaço da tabelade páginas
Fragmentação
interna
O resultado é: 2 p se
custo adicional
8/15/2019 s.o Memorias
46/61
46
Espaços Separados de Instruções e Dados
a) Espaço de endereçamento único b) Espaços separados de instruções (I) e dados (D)
8/15/2019 s.o Memorias
47/61
47
Páginas Compartilhadas
Dois processos quecompartilham o mesmocódigo de programa e,
por conseqüência, amesma tabela de páginas para instruções
8/15/2019 s.o Memorias
48/61
48
Política de Limpeza
•
Precisa de um processo que executa em background, umdaemon de paginação – Inspeciona periodicamente o estado da memória
• Quando apenas algumas molduras de página estão
disponíveis – Seleciona páginas a serem removidas usando um algoritmo de
substituição
• Pode ser implementada através de lista circular (relógio)
com dois ponteiros – Ponteiro da frente controlado pelo daemon de paginação – Ponteiro de trás usado para substituição de página (como no do
relógio)
8/15/2019 s.o Memorias
49/61
49
Questões de Implementação
Envolvimento do S.O. com a Paginação
Quatro circunstâncias de envolvimento:
1. Criação de processo determina tamanho do programa cria tabela de página
2. Execução de processo
MMU reinicia tabela para novo processo TLB é esvaziada
3. Ocorrência de falta de página determina endereço virtual que causou a falta descarta, se necessário, página antiga carrega página requisitada para a memória
4. Terminação de processo Libera tabela de páginas, páginas, e espaço em disco que as
páginas ocupam
8/15/2019 s.o Memorias
50/61
8/15/2019 s.o Memorias
51/61
8/15/2019 s.o Memorias
52/61
SEGMENTAÇÃO
8/15/2019 s.o Memorias
53/61
53
Segmentação (1)
• Espaço de endereçamento unidimensional com tabelas crescentes• Uma tabela pode atingir outra
8/15/2019 s.o Memorias
54/61
54
Segmentação (2)
Permite que cada tabela cresça ou encolha, independentemente
Comparação entre paginação e segmentação
8/15/2019 s.o Memorias
55/61
55
p ç p g ç g ç
8/15/2019 s.o Memorias
56/61
56
Implementação de Segmentação Pura
(a)-(d) Desenvolvimento de fragmentação externa(e) Remoção da fragmentação via compactação
S t ã P i ã P ti (1)
8/15/2019 s.o Memorias
57/61
57
Segmentação com Paginação: Pentium (1)
Um seletor do Pentium
8/15/2019 s.o Memorias
58/61
58
Segmentação com Paginação:Pentium (2)
• Descritor de segmento de código do Pentium• Segmentos de dados diferem ligeiramente
8/15/2019 s.o Memorias
59/61
59
Segmentação com Paginação: Pentium (3)
Conversão de um par (seletor, deslocamento) para umendereço linear
8/15/2019 s.o Memorias
60/61
60
Mapeamento de um endereço linear sobre um endereço físico
Segmentação com Paginação: Pentium (4)
S ( )
8/15/2019 s.o Memorias
61/61
Proteção no Pentium
Segmentação com Paginação: Pentium (5)