Buscar

Gerência de Memória em Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CCT0011 – Sistemas Operacionais
Aula 09 – Gerência de Memória (Parte 2)
Sistemas Operacionais
Conteúdo da Aula
Funções
Espaço de Endereçamento Físico
Espaço de Endereçamento Lógico
Sistemas Operacionais
Técnica de Overlay
Enquanto na alocação contígua 
simples os programas estão limitados ao 
tamanho da área disponível na memória 
principal para o usuário, na técnica de 
overlay os programas são divididos em 
módulos, deforma que seja possível a 
execução independente de cada 
módulo, utilizando uma mesma área da 
memória.
Memória Principal
Cadastramento
Impressão
Sistema Operacional2 Kb
3 Kb
4 Kb
4 Kb
2 Kb
2 Kb
1 Kb
Módulo principal
Área de overlay
Área livre
Área não
utilizada
Sistemas Operacionais
Técnica de Overlay
Um exemplo de overlay seria um programa que consista em um módulo principal e
outros dois módulos independentes, um correspondente ao cadastro e outro, à
impressão. Quando o programa é carregado, apenas o módulo principal é introduzido
na memória, os demais aguardam em memória secundária. Quando um dos outros
módulos for referenciado pelo módulo principal, aquele será carregado na memória
principal, na área de overlay.
Sistemas Operacionais
Técnica de Overlay
A definição das áreas de overlay é feita pelo próprio programador, através de 
comandos específicos da linguagem de programação. 
• O tamanho da área de overlay deve ser igual ou maior ao tamanho do maior 
módulo. 
• Como vantagem, a técnica de overlay possibilita um melhor aproveitamento da 
memória principal. 
• Sua utilização exige cuidado, pois pode trazer implicações tanto na manutenção 
como no desempenho das aplicações, devido à possibilidade de transferências 
excessivas dos módulos entre a memória principal e a memória secundária.
Sistemas Operacionais
Swapping
Técnica aplicada à gerência de memória para programas que esperam por memória 
livre para serem executados. A técnica de swapping pode ser aplicada em sistemas com 
memória virtual, permitindo aumentar o número de processos que compartilham a 
memória principal e, consequentemente, o grau de multiprogramação do sistema.
Quando existem novos processos para serem executados e não há espaço suficiente 
na memória principal para alocação, o sistema utiliza o swapping, selecionando um ou 
mais processos para saírem da memória e oferecer espaço para novos processos.
Sistemas Operacionais
Swapping
O sistema escolhe e retira os processos da memória principal para a memória 
secundária (swap out), onde as páginas ou segmentos são gravados em um arquivo de 
swap (swap file). Com os processos salvos na memória secundária, os frames ou 
segmentos alocados são liberados para novos processos. Posteriormente, os processos 
que foram retirados da memória devem retornar para a memória principal (swap in) 
para serem novamente executados.
Sistemas Operacionais
Swapping
• O processo precisa estar na memória para ser 
executado;
• Se não há mais espaço em memória é 
necessário fazer um rodízio de processos em 
memória;
• Prioriza a retirada da MP de processos com 
menores chances de ser executado;
• Um processo pode ser temporariamente 
movido para fora da memória (backing 
store) e então trazido de volta para a 
memória para continuar a execução .
Memória Principal
Memória Principal
Sistema
Operacional
Sistema
Operacional
Programa A
Programa A
Programa G
Área Livre
Swap in
Swap out
Arquivo
de Swap
Programa E
Programa E
Programa B
Programa H
H
B
B
Sistemas Operacionais
Swapping
Sistema operacional mantém uma 
fila de processos que estão prontos 
para executar, que possuem imagens 
da memória em disco.
Para a implementação da técnica é 
essencial que o S.O. execute relocação 
dinâmica de programas.
Sistemas Operacionais
Gerência de Memória Virtual
É uma técnica eficiente e poderosa de gerência que combina memória principal e 
secundária dando a ilusão de existir um espaço muito maior que a capacidade da MP.
O conceito de memória virtual fundamenta-se em não vincular o endereçamento 
necessário ao programa aos endereços físicos da memória principal deixando de estar 
limitados a ela.
Outra vantagem é a possibilidade de um maior número de processos compartilhando a 
MP, já que apenas partes de cada processos estarão residentes.
Sistemas Operacionais
Gerência de Memória Virtual
Existe uma relação muito 
estreita entre a gerência de 
memória virtual e a arquitetura 
de hardware. Por motivos de 
desempenho é comum que 
algumas funções da gerência 
sejam implementadas no 
hardware.
Sistemas Operacionais
Espaço de Endereçamento Virtual
O conceito de memória virtual é semelhante a ideia de um vetor.
Quando um programa faz referência a um elemento do vetor, não há preocupação 
em saber a posição de memória daquele dado. O compilador se encarrega de gerar 
instruções que implementam esse mecanismo.
Um programa no ambiente de memória virtual não faz referência a endereços 
físicos de memória (endereços reais), mas a endereços virtuais.
O espaço de endereçamento virtual (endereços virtuais) não tem nenhuma relação 
com o espaço de endereçamento real, permitindo que o programa faça referência a 
endereços virtuais que estejam fora dos limites da memória principal.
Sistemas Operacionais
Espaço de Endereçamento Virtual
Memória Virtual
Memória Principal
Mapeamento
.
.
.
.
.
.
Endereço Físico
500
501
502
503
504
.
.
.
599
VET [1]
VET [2]
VET [3]
VET [4]
VET [5]
.
.
.
.
.
.
VET [100]
O mecanismo de tradução de um endereço 
virtual para endereço físico é denominado 
mapeamento.
Sistemas Operacionais
Mapeamento 
O processador apenas executa instruções e referencia dados residentes no espaço de 
endereçamento real. Por esse motivo a necessidade de tradução dos endereços virtuais 
para os endereços reais.
A unidade de gerência de memória (Memory Management Unit - MMU) é a parte do 
hardware responsável pela tradução dos endereços junto com o S.O..
Tabelas de mapeamento são estruturas exclusivas para cada processo relacionando 
os endereços virtuais às suas posições reais. Essas tabelas mapeiam blocos de dados, cujo 
tamanho determina o número de entradas existentes nas tabelas de mapeamentos.
Sistemas Operacionais
Mapeamento 
Quanto maior o bloco de dados menor o número de entradas na tabela de 
mapeamento e menor espaço na memória.
Os sistemas operacionais podem trabalhar com os seguintes tipos de blocos;
• Blocos de tamanho fixo  Técnica da paginação.
• Blocos de tamanho variável  Técnica da segmentação
• Implementar as duas técnicas (paginação e segmentação)
Sistemas Operacionais
Memória Virtual por Paginação
A paginação permite que o programa possa ser espalhado por áreas não contíguas de 
memória.
Define que os espaços de endereçamento virtual e real, são divididos em blocos de 
mesmo tamanho chamados de páginas virtuais e páginas reais (ou frames), 
respectivamente.
O programa é carregado página a página, cada página lógica ocupa uma página física e 
as páginas físicas não são necessariamente contíguas.
Não existe fragmentação externa, porém existe fragmentação interna.
Sistemas Operacionais
Memória Virtual por Paginação
Sistemas Operacionais
Memória Virtual por Paginação
Cada processo possui sua própria tabela de páginas e cada página virtual uma 
entrada na tabela de páginas com informações do mapeamento para localizar o frame
correspondente.
O endereço virtual é formado por pois campos:
• Número da página virtual (NPV) - usado como um índice para a tabela de páginas que 
contém os endereços base de cadapágina em memória.
• Deslocamento - que indica a posição do endereço virtual em relação ao início da 
página na qual se encontra. 
Sistemas Operacionais
Memória Virtual por Paginação
O endereço físico é obtido combinando-se o 
endereço do frame, localizado na tabela de 
páginas, com o deslocamento, contido no 
endereço virtual.
Os espaços de endereçamento dos processos 
não são relacionados de modo linear com a 
memória física.
Cada vez que são usados, os endereços virtuais 
são convertidos pela MMU para endereços reais.
Sistemas Operacionais
Memória Virtual por Paginação
A tabela de páginas reside em memória 
e cada entrada da tabela dá informação 
sobre o estado das páginas do processo.
A ETP (entrada na tabela de páginas) 
também possui a informação (valid bit) que 
indica se uma pagina está ou não na 
memória principal.
Sistemas Operacionais
Memória Virtual por Paginação
Se a unidade de gerência de memória identifica que o endereço referenciado não está 
na MP (page fault) o sistema transfere a memória da memória secundária para a MP 
(page in ou paginação).
Sistemas Operacionais
Memória Virtual por Paginação
O bit de validade:
1 ou TRUE  se a página está na memória
0 ou FALSE  se a página não está na memória.
As páginas do processo podem ser transferidas para a memória por demanda, levando 
apenas o que é necessário para a execução do programa ou por paginação antecipada, 
onde o sistema tenta prever as páginas que serão necessárias à execução do programa.
Exemplo:
Um programa que ocupe 21kb, em um sistema que tenha o tamanho de página 4 kb, será 
alocado em 6 páginas resultando em uma fragmentação interna de 3kb.
Sistemas Operacionais
Memória Virtual por Paginação
O número de page faults gerado por um processo em um determinado intervalo 
de tempo é definido como taxa de paginação do processo.
A referencia que gera um page fault exige que a página seja transferida do disco para a 
memória, requerendo operação de E/S e colocando o processo em estado de bloqueio 
até que a solicitação seja atendida.
O overhead gerado pelo mecanismo de paginação é inerente da gerência de memória 
virtual, porém se a taxa de paginação dos processos atingir valores elevados, o excesso de 
operações de E/S poderá comprometer o desempenho do sistema.
Sistemas Operacionais
Paginação
Sistemas Operacionais
Politica de Busca de Páginas
A política de busca de páginas determina quando uma página deve ser carregada para 
a memória.
Basicamente, existem duas estratégias para este propósito:
• Paginação por demanda  as páginas dos processos são transferidas da memória 
secundária para a principal apenas quando são referenciadas.
• Paginação antecipada  o sistema carrega para a memória principal, além da 
página referenciada, outras páginas que podem ou não ser necessárias ao 
processo ao longo do seu processamento. 
Sistemas Operacionais
Tamanho da Página
O tamanho da página está associado a arquitetura de hardware e varia de acordo 
com o processador (entre 512 e 16 Mbytes).
Tabelas mapeiam blocos de dados, cujo tamanho determina o número de entradas 
existentes na tabela de mapeamento.
Sistemas Operacionais
Tabela de Páginas
Quanto maior o bloco, menos entradas nas tabelas de mapeamento e 
consequentemente, tabelas de mapeamento que ocupam um menor espaço de 
memória.
Suponha uma máquina de 32 bits de endereçamento, com páginas de 4k.
232 endereços virtuais possíveis
Páginas de 4k utilizam 12 bits  2 12 = 4096 = 4k (tamanho da página, 
deslocamento)
32 -12 bits = 20  220 entradas na tabela de páginas (número de páginas).
Se cada entrada ocupasse 4 bytes, poderíamos ter tabelas de páginas de 4Mb por 
processo (2^20 x 4). 
Sistemas Operacionais
Paginação em Múltiplos Níveis
Num sistema baseado em paginação, a tabela de páginas pode tornar-se muito 
grande e originar gastos excessivos de memória.
Uma boa solução para contornar o problema apresentado é a utilização de 
tabelas de páginas em múltiplos níveis.
Sistemas Operacionais
Paginação em Múltiplos Níveis
Na paginação a 2-níveis existe uma tabela diretório, onde cada entrada aponta 
para uma tabela de página.
Neste caso, podemos dividir o NPV em duas partes:
 Número da página virtual de nível 1 (NPV1) 
 Número da página virtual de nível 2 (NPV2)
O NPV1 permite localizar a tabela de páginas na tabela diretório; por sua vez, o 
NPV2 permite localizar o frame desejado na tabela de páginas.
Sistemas Operacionais
Paginação em Múltiplos Níveis
Utilizando-se o exemplo anterior, é 
possível que existam 1024 tabelas de 
páginas para cada processo. A grande 
vantagem da paginação em múltiplos 
níveis é que apenas estarão residentes na 
memória principal as tabelas realmente 
necessárias aos processos, reduzindo, 
dessa forma, o espaço ocupado na 
memória. 
Sistemas Operacionais
Paginação em Múltiplos Níveis
Em uma arquitetura de 64 bits, a estrutura em dois níveis já não é mais adequada 
devido ao espaço de endereçamento de 2^64.
Considerando páginas de 4 k endereços, NPV2 com 10 bits e NPV1 com 42 bits, 
teríamos tabelas com 2^42 entradas.
Novamente a solução passa por dividir a tabela diretório, criando uma estrutura 
em três níveis.
Por exemplo, NPV1 com 32 bits, NPV2 com 10 bits e NPV3 com 10 bits.
Sistemas Operacionais
Paginação em Múltiplos Níveis
Sistemas Operacionais
Paginação em Múltiplos Níveis
Sistemas Operacionais
Trashing
Trashing pode ser definido como sendo a excessiva transferência de páginas entre 
a memória principal e a memória secundária.
Esse problema está presente em sistemas que implementam tanto paginação 
como segmentação e faz com que o processo passe mais tempo esperando por páginas 
que realmente sendo executado.
O monitoramento de memória pode ser realizado por meio de estatísticas que 
permitem medir o fluxo de páginas da memória do sistema para os dispositivos de 
armazenamento de massa. Altas taxas de transferência entre esses dispositivos podem 
significar que o sistema tem pouca memória e acaba gastando mais recursos do sistema 
para mover páginas para dentro e para fora da memória do que rodar aplicações.
Sistemas Operacionais
Trashing
Na memória virtual por paginação, o trashing ocorre em dois níveis:
• No nível do processo  a excessiva paginação ocorre devido ao elevado 
número de page faults gerado pelo programa em execução. Esse problema faz 
com que o processo passe mais tempo esperando por páginas que realmente 
sendo executado.
• No nível do sistema  ocorre quando existem mais processos competindo por 
memória principal que espaço disponível. Nesse caso, o primeiro passo é a 
redução do número de páginas de cada processo na memória. Caso a redução não 
seja suficiente, o sistema inicia o swapping, retirando processos da memória 
principal para a memória secundária. Se esse mecanismo for levado ao extremo, o 
sistema passará mais tempo realizando swapping que atendendo aos processos.
Sistemas Operacionais
Working Set
O conceito de working set surgiu com o objetivo de reduzir o problema do trashing e 
está relacionado ao princípio da localidade.
Existem dois tipos de localidades que são observados durante a execução da maioria 
dos programas:
• A localidade espacial é a tendência de que após uma referência a uma posição de 
memória sejam realizadas novas referências a endereços próximos.
• A localidade temporal é a tendência de que após a referência a uma posição de 
memória esta mesma posição seja novamente referenciada em um curto intervalo 
de tempo.
Sistemas Operacionais
Working Set
O conceito de working set é definido como sendo o conjunto das páginas 
referenciadas por um processo durante determinado intervalo de tempo.A figura ilustra que no tempo t2, o working set do processo, W(t2, Dt), são as páginas 
referenciadas no intervalo Dt (t2 – t1), isto é, as páginas P2, P3 e P8. O intervalo de 
tempo Dt é denominado janela do working set.
Sistemas Operacionais
Working Set
Podemos observar, então, que o working set de um processo é uma função do
tempo e do tamanho da janela do working set e dentro da janela, o número de páginas 
distintas referenciadas é conhecido como tamanho do working set.
Sendo assim working set do processo no instante t2, corresponde às páginas P2, P3 e 
P8, e o tamanho do working set é igual a três páginas. 
Sistemas Operacionais
Memória Virtual por Segmentação
Memória virtual por segmentação é a 
técnica de gerência de memória onde o 
espaço de endereçamento virtual é 
dividido em blocos de tamanhos 
diferentes chamados segmentos.
Na técnica de segmentação, um 
programa é dividido logicamente em sub-
rotinas e estruturas de dados, que são 
alocadas em segmentos na memória 
principal.
Sistemas Operacionais
Memória Virtual por Segmentação
Na segmentação existe uma relação entre a lógica do programa e sua alocação na 
memória principal.
A principal diferença entre a paginação e a segmentação é a alocação da memória de 
maneira não fixa, a alocação depende da lógica do programa.
Normalmente, a definição dos segmentos é realizada pelo compilador, a partir do 
código fonte do programa, e cada segmento pode representar um procedimento, função, 
vetor ou pilha.
O espaço de endereçamento virtual de um processo possui um número máximo 
de segmentos que podem existir, onde cada segmento pode variar de tamanho dentro de 
um limite. 
Sistemas Operacionais
Memória Virtual por Segmentação
O mecanismo de mapeamento é muito semelhante ao da paginação. É feito através 
das tabelas de mapeamento de segmentos (TMS), e os endereços são compostos pelos 
números do segmento virtual (NSV) e um deslocamento dentro do segmento.
O NSV identifica unicamente o segmento virtual que contém o endereço, funcionando 
como um índice na TMS. O deslocamento indica a posição do endereço virtual em relação 
ao início do segmento no qual se encontra.
O endereço físico é obtido, então, combinando-se o endereço do segmento, localizado 
na TMS, com o deslocamento, contido no endereço virtual.
Sistemas Operacionais
Segmentação
Sistemas Operacionais
Memória Virtual por Segmentação
Uma grande vantagem da segmentação em relação à paginação é a sua facilidade 
em lidar com estruturas de dados dinâmicas.
Enquanto na paginação a expansão de um vetor implica a alocação de novas páginas 
e, consequentemente, o ajuste da tabela de paginação, na segmentação deve ser 
alterado apenas o tamanho do segmento.
Na técnica de segmentação, apenas os segmentos referenciados são transferidos 
da me
Se as aplicações não forem desenvolvidas em módulos, grandes segmentos estarão na 
memória desnecessariamente, reduzindo o compartilhamento da memória e o grau de 
multiprogramação. Logo, para que a segmentação funcione de forma eficiente, os 
programas devem estar bem modularizados.
Sistemas Operacionais
Memória Virtual por Segmentação com Paginação
Memória virtual por segmentação com paginação é a técnica de gerência de 
memória onde o espaço de endereçamento é dividido em segmentos e, por sua vez, cada 
segmento dividido em páginas. Esse esquema de gerência de memória tem o objetivo de 
oferecer as vantagens tanto da técnica de paginação quanto da segmentação.
Nessa técnica, um endereço virtual é formado pelo número do segmento virtual 
(NSV), um número de página virtual (NPV) e um deslocamento. Através do NSV, obtém-se 
uma entrada na tabela de segmentos, que contém informações da tabela de páginas 
do segmento. O NPV identifica unicamente a página virtual que contém o 
endereço, funcionando como um índice na tabela de páginas. O deslocamento indica a 
posição do endereço virtual em relação ao início da página na qual se encontra. O 
endereço físico é obtido, então, combinando-se o endereço do frame, localizado na tabela 
de páginas, com o deslocamento, contido no endereço virtual.
Sistemas Operacionais
Memória Virtual por Segmentação com Paginação
Na visão do programador, sua aplicação continua sendo mapeada em segmentos 
de tamanhos diferentes, em função das sub-rotinas e estruturas de dados definidas 
no programa. Por outro lado, o sistema trata cada segmento como um conjunto de 
páginas de mesmo tamanho, mapeadas por uma tabela de páginas associada ao 
segmento. Dessa forma, um segmento não precisa estar contíguo na memória principal, 
eliminando o problema da fragmentação externa encontrado na segmentação pura.
Sistemas Operacionais
Memória Virtual - Segmentação vs Paginação
Sistemas Operacionais
Dúvidas

Outros materiais