SO - 07 - Memoriavirtual
SO - 07 - Memoriavirtual
SO - 07 - Memoriavirtual
Fortaleza-CE, Brasil
Introdução Memória Virtual Paginação Segmentação
Sumário
Introdução
Memória Virtual
Paginação
Substituição de Páginas
Segmentação
Segmentação com Paginação
Introdução Memória Virtual Paginação Segmentação
Introdução
Ocupação da memória
◮ Todas as estratégias apresentadas até agora mantêm processos
inteiros na memória.
◮ O swapping apenas remove o processo da memória e armazena no
disco até a próxima execução
Introdução
Otimização
Em muitos casos, não é necessário o programa inteiro estar na memória:
◮ códigos de tratamento de erro;
◮ vetores, listas e tabelas, geralmente alocam mais memória do que
usam;
◮ certas opções e caracterı́sticas de programas são raramente
utilizadas.
Introdução
Consequência
Através de uma otimização do gerenciamento de memória, poder-se-ia
inserir mais processos, deixando na memória apenas os dados que estão
efetivamente sendo usados.
Introdução Memória Virtual Paginação Segmentação
Exemplo
Objetivo
Determinar quanto de cada processo deve existir na memória em um
computador de 1MB para rodar a mesma quantidade de processos em uma
máquina com 3MB utilizando o gerenciamento de memória particionada.
Modelo de Multiprogramação
Eficiência da CPU
◮ Seja p a fração do tempo total gasto com E/S
◮ e n processos na memória, logo p n (probabilidade de todos estarem
em E/S)
Utilização da CPU
η = 1 − pn
Introdução Memória Virtual Paginação Segmentação
Modelo de Multiprogramação
100
Eficiência (η)
80
60
40
20 20% de I/O
50% de I/O
80% de I/O
0
0 2 4 6 8 10
Número de processos na memória
Figura 1: Variação da eficiência em função do número de processos em execução.
Fonte: [3].
Introdução Memória Virtual Paginação Segmentação
Memória Virtual
Definição
Trata-se de uma técnica de Gerência de Memória que combina as memórias
principal e secundária, dando ao usuário a ilusão de existir um espaço de
endereçamento muito maior do que aquele presente na memória principal.
Fundamento
Não vincular o endereçamento dos programas aos endereços fı́sicos da
memória principal.
Introdução Memória Virtual Paginação Segmentação
Memória Virtual
Vantagens
◮ O espaço de endereçamento fı́sico não precisa ser contı́guo;
◮ Programas não ficam mais limitados ao tamanho da memória
principal disponı́vel;
◮ Minimiza o problema de fragmentação;
◮ Há um número maior de programas do que poderia residir na
memória em um dado instante.
Desvantagem
◮ Necessita “mapear” o espaço lógico (virtual) no espaço fı́sico (real).
Introdução Memória Virtual Paginação Segmentação
Memória Virtual
Mapeamento
No momento da execução de uma instrução, o endereço virtual referenciado
é traduzido para um endereço fı́sico.
Introdução Memória Virtual Paginação Segmentação
Mapeamento
Endereçamento Virtual
Figura 3: exemplo de
mapeamento. Um
programa 2 vezes maior
que a memória pode
executar. Fonte: [3]
Introdução Memória Virtual Paginação Segmentação
Funcionamento
Conjunto residente
É o conjunto de páginas de um processo presente na MP. Incialmente,
algumas páginas são carregadas a partir da página 0.
Mapeamento I
Cada processo com uma tabela de mapeamento própria
Realizado por hardware + S.O. nos sistemas atuais através da Memory
Management Unit (MMU) (Memory Management Unit - Unidade de
Gerenciamento de Memória).
No momento da execução
◮ O endereço virtual é mapeado para o endereço fı́sico, pois o
processador só acessa endereços do espaço real;
◮ Nas trocas de contexto, um registrador é responsável por indicar
qual a tabela que deve ser utilizada.
Quando um programa é executado
Somente uma parte do seu código fica residente, permanecendo o restante
na memória secundária até o momento de ser referenciado.Por causa do
mapeamento, um programa não mais precisa estar necessariamente em
endereços contı́guos na memória principal.
Introdução Memória Virtual Paginação Segmentação
Tabela de Mapeamento
Formas de realização
Overlays
O programa é dividido em módulos e cabe ao programador escolher quais
módulos estarão na memória.
Paginação
A memória é dividida em blocos de tamanho fixo.
Segmentação
A memória é dividida em blocos de tamanho variável.
Paginação
Tamanho da página
Paginação
As páginas dos
processos podem
ocupar qualquer
quadro disponı́vel.
Entrada na Tabela
de Paginas (ETP)
Cada página virtual
do processo tem uma
entrada na tabela, que
possui informações
do mapeamento para
localizar a página Figura 5: exemplo de entradas na tabela de páginas. Fonte:
real. [1].
Introdução Memória Virtual Paginação Segmentação
Caracterı́sticas da paginação
Fragmentação
◮ Processo não precisa ocupar área contı́gua em memória para não
gerar fragmentação externa.
◮ Páginas/Molduras são de pequeno tamanho para gerar uma
pequena fragmentação interna (é restrita apenas a última página).
Observação
◮ Visão do usuário: espaço de endereçamento contı́guo.
◮ Visão do sistema: processo é espalhado na memória fı́sica.
◮ Facilita implementação de proteção e compartilhamento.
Introdução Memória Virtual Paginação Segmentação
Gerência de Páginas
Paginação
Endereçamento
Endereço Virtual
Número da página virtual (NPV) + deslocamento
Page-fault (trap)
Interrupção por falta de página na memória principal.
Taxa de Paginação
Número de Page Fault em um intervalo de tempo.
Exemplo
Paginação
Compartilhamento de Páginas
Código compartilhado
◮ Uma cópia do código (read-only, re-entrante) pode ser
compartilhada entre vários processos (exemplo: editores de texto,
compiladores, etc...);
◮ O código compartilhado pertence ao espaço lógico de todos os
processos.
Page fault
Solução
NPV1
Localiza a tabela de páginas na tabela-diretório.
NPV2
Localiza o frame desejado na tabela de páginas.
Introdução Memória Virtual Paginação Segmentação
Campos da TLB
◮ Tag(endereço virtual sem o deslocamento);
◮ Modificação (bit que indica se a página foi alterada);
◮ Referência (bit que indica se a página foi referenciada),
◮ Proteção (define a permissão de acesso à página);
◮ Endereço Fı́sico (posição do frame na memória principal).
Introdução Memória Virtual Paginação Segmentação
Proteção
Proteção
L G Descrição
0 0 Sem acesso
1 0 Somente Leitura
1 1 Leitura/Gravação
Introdução Memória Virtual Paginação Segmentação
Substituição de Páginas
Algoritmo ótimo:
◮ Baseado no uso futuro de uma página.
◮ Impossı́vel de ser implementado.
◮ Pode ser simulado (segunda execução do mesmo processo com a
mesma entrada).
◮ Útil para medidas de desempenho.
Introdução Memória Virtual Paginação Segmentação
Polı́ticas:
◮ busca;
◮ onde colocar pedaços na MP;
◮ que páginas retirar;
◮ tamanho do conjunto residente;
◮ polı́tica de limpeza;
◮ controle de carregamento;
◮ que processo suspender.
Introdução Memória Virtual Paginação Segmentação
Paginação antecipada
◮ Além da página referenciada, são carregadas outras páginas que
também podem (ou não) ser referenciadas futuramente.
◮ Economia de tempo na cópia do conjunto de páginas.
◮ Risco de trabalho desnecessário.
Introdução Memória Virtual Paginação Segmentação
Polı́ticas de Substituição
Alocação Fixa
◮ Substituição Local.
Alocação Variável
◮ Substituição Global.
◮ Substituição Local.
◮ O SO avalia a taxa de paginação de um processo e altera o seu
limite máximo de frames.
Introdução Memória Virtual Paginação Segmentação
Substituição de páginas
Segmentos
Técnica de gerência de memória em que o espaço de endereçamento é
dividido em blocos de tamanhos diferentes.
Exemplo
Segmentação
Segmentação
Campos da ETS
◮ Tamanho
◮ Bit de Validade
◮ Bit de Modificação
◮ Bit de Referência
◮ Proteção
Segmentação x Paginação
Vantagem da segmentação
Possibilita estruturas de dados dinâmicas.
Desvantagem da segmentação
Aplicações precisam ser desenvolvidas em módulos, pois, do contrário,
grandes segmentos estarão na memória, reduzindo o grau de
multiprogramação.
Fragmentação
◮ Paginação = fragmentação interna;
1
◮ Segmentação = fragmentação externa;
1
sempre que há áreas livres na memória, mas nenhuma suficiente para alocar um novo segmento. Neste caso, é
necessária a relocação dos segmentos.
Introdução Memória Virtual Paginação Segmentação
Segmentação x Paginação
Proteção
Mais simples em sistemas com segmentação do que em sistemas que
utilizam paginação, já que os segmentos têm conteúdos bem definidos.
Compartilhamento de memória
Mais simples na segmentação relativamente à paginação, pois é preciso
apenas que as ETS dos processos apontem para o mesmo segmento.
Introdução Memória Virtual Paginação Segmentação
Resumo
Objetivo
Reunir as vantagens da técnica de paginação e da segmentação.
Introdução Memória Virtual Paginação Segmentação
Componentes
O endereço virtual é formado pelo número do segmento virtual (NSV), um
número de página virtual (NPV) e um deslocamento.
Na visão do programador,
o programa continua sendo mapeado em segmentos de tamanhos
diferentes, em função de sub-rotinas e estruturas de dados definidas na
aplicação.
Na visão do SO,
cada segmento é tratado como um conjunto de páginas do mesmo
tamanho, mapeadas por uma tabela de páginas associada ao segmento.
Como os segmentos não precisam estar contı́guos, elimina-se a
fragmentação externa.
Introdução Memória Virtual Paginação Segmentação
Trashing
Na segmentação:
◮ Ocorre no nı́vel do processo, por causa da modularização extrema
do programa.
◮ Ocorre no nı́vel do sistema, da mesma forma que na paginação, com
o sistema tendo que liberar memória através de swapping de
processos.
Introdução Memória Virtual Paginação Segmentação
Trashing
Na Paginação:
◮ Ocorre no nı́vel do processo, devido ao elevado número de page
faults gerado pelo programa em execução.
◮ Ocorre no nı́vel do sistema, quando existem mais processos
competindo por memória principal do que o espaço disponı́vel.
Introdução Memória Virtual Paginação Segmentação
Exercı́cios I
1. Comente sobre a importância da Gerência de Memória em sistemas operacionais.
2. Explique a diferença entre os endereços lógico e fı́sico. Quando e por que ambos
são iguais em alguns casos?
3. Como é dividida a MP através da alocação contı́gua simples? Cite um problema
e a solução encontrada nesse tipo de alocação.
4. De que forma é feita a proteção na alocação contı́gua simples?
5. Por que era necessário a alocação de endereços no esquema de alocação
contı́gua da memória e como funcionam os registradores de base e de limite?
6. Explique as vantagens de se utilizar as bibliotecas dinâmicas.
7. Qual a diferença entre os mecanismos de proteção da alocação contigua simples
e a alocação particionada?
8. Defina alocação particionada estática e mostre a diferença entre alocação
particionada estática absoluta e alocação particionada estática relocável.
9. Qual o problema enfrentado na alocação particionada estática absoluta e
relocável, que foi melhorado na alocação particionada dinâmica?
10. Quais as soluções encontradas na alocação particionada dinâmica para o
problema de fragmentação?
11. Compare as técnicas Overlay e Swapping.
Introdução Memória Virtual Paginação Segmentação
Exercı́cios II
12. Explique por meio de um desenho ilustrativo as fragmentações interna e externa.
13. Defina fragmentação interna e externa e cite quais as formas de evitá-las.
14. O que é Swapping? Qual a vantagem de existir o Swapping?
15. O que é swap in e swap out?
16. O que é memória virtual?
17. Defina espaço de endereçamento e explique espaço de endereçamento real e
virtual.
18. Descreva o princı́pio de funcionamento dos seguintes algoritmos de substituição
de página: best fit, worst fit and first fit.
19. Em um sistema com partições variáveis, considere as seguintes partições livres:
10K, 20K, 4K, 7K, 9K, 12K, 15K e 18K. Como os algoritmos First-fit, Best-fit,
Worst-fit e Nextfit alocariam partições para as seguintes requisições: a. 12K, b.
10K e c. 9K.
20. Explique o efeito da fragmentação externa no exercı́cio anterior.
21. Quais são as três estratégias de alocação utilizada pelos sistemas operacionais?
22. Tendo-se partições de memória de tamanho 100K, 400K, 200K, 300K e 600K
(nesta ordem), como seriam alocados os processos de tamanho 215K, 420K,
113K e 427K (nesta ordem) pelos algoritmos do exercı́cio anterior? Qual
algoritmo é o mais eficiente?
Introdução Memória Virtual Paginação Segmentação
Exercı́cios III
23. Considere um espaço de endereço lógico formado por oito páginas de 1024
endereços cada, as quais são mapeadas para uma memória fı́sica de 32 frames.
Quantos bits há no endereço lógico? E no endereço fı́sico?
24. Explique a diferença entre endereços lógico e fı́sico. Existe algum caso em que
ambos são iguais? Se sim, dê um exemplo.
25. Explique uma forma de diminuir as diferentes fragmentações.
26. Considere um sistema que possua as seguintes áreas livres na memória principal,
ordenadas crescentemente: 10 Kb, 4 Kb, 20 Kb, 18 Kb, 7 Kb, 9 Kb, 12 Kb e 15
Kb. Considere ainda três programas, com respectivos tamanhos iguais a 9 Kb,
12 Kb e 10 Kb. Na alocação destes três programas, determine quais seriam as
respectivas partições escolhidas utilizando-se - uma por vez - as estratégias
first-fit, best-fit e worst-fit.
27. Em um sistema que utiliza uma alocação particionada dinamicamente como
mecanismo de gerência de memória. O SO aloca uma área total de 50 KB para
os programas. Inicialmente existem 4 processos A, B, C, D após a inicialização,
com tamanhos iguais à 5, 3, 10 e 6 KB, respectivamente. Realize as seguintes
operações a seguir, sequencialmente, mostrando o estado da memória após cada
uma delas, utilizando duas estratégias a sua escolha a. Tire C da memória e
aloque um processo E que possui 6 KB. b. Tire A da memória e aloque um
processo F que possui 4 KB.
Introdução Memória Virtual Paginação Segmentação
Abreviaturas I
Referências I