Você está na página 1de 67

Introdução Memória Virtual Paginação Segmentação

Aula 7: Gerência de Memória Virtual

Prof. M.Sc. Rodrigo Costa e Prof. M.Sc. Carlos Maurı́cio


rodccosta@gmail.com e cmauriciojd@gmail.com
Curso de Informática - Propriedades dos Sistemas Operacionais

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

Problemas com alocação particionada:


Necessidade de uma área contı́gua de memória (tamanho do processo);
Fragmentação interna (partições fixas) ou externa (partições variáveis).
Introdução Memória Virtual Paginação Segmentaçã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.

Vantagens de executar programas parcialmente:


◮ programa não é limitado pelo tamanho da memória;
◮ um maior número de processos pode ser carregado ao mesmo
tempo, aumentando a utilização da CPU;
◮ menor necessidade de E/S para carregar ou fazer swap de processos.
Introdução Memória Virtual Paginação Segmentação

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

Se os processos estiverem inteiros na Consequência


Para aumentar a eficiência, deve-se
memória
Em um computador, se os processos aumentar a memória.
possuı́rem as seguintes caracterı́sticas:
RAM com 1 MB
◮ Sistema Operacional (SO) ocupa 200 n = (1024KB -200KB)/ 200KB = 4
Kbytes; processos. Logo, η = 60%
◮ Cada programa ocupa 200 Kbytes; RAM com 2 MB
n = (2048KB -200KB)/ 200KB = 9
◮ Se cada programa gasta 80% em
processos. Logo, η = 87%
entrada e saı́da.
E levando em consideração que n é o número RAM com 3 MB
de programas e η é a eficiência. n = (3072KB -200KB)/ 200KB = 14
processos. Logo, η = 96%
Introdução Memória Virtual Paginação Segmentação

Exemplo com memória virtual

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.

Tamanho máximo por processo Tmax


Como é necessário 14 processos, todos eles e o SO devem ocupar a memória
como um todo. Assim:

14 × Tmax + 200KB = 1024KB ⇒ Tmax = 824KB/14 ⇒ Tmax = 59KB.

Se o Sistema Operacional (SO) carregar apenas 30% de cada processo na


memória, poder-se-ia ter a mesma eficiência que um computador de 3MB.
Introdução Memória Virtual Paginação Segmentação

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

No momento da execução de uma instrução, o endereço virtual referenciado


é traduzido para um endereço fı́sico, num mecanismo conhecido como
mapeamento.

Como o espaço de endereçamento virtual não tem nenhuma relação direta


com os endereços reais, um programa pode referenciar endereços que
estejam fora dos limites da memória principal.

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

Figura 2: Mapeamento de memória. Fonte: [2].


Introdução Memória Virtual Paginação Segmentação

Endereço Real x Endereço virtual

Endereçamento Real Endereço virtual


O endereço indicado pelo programa é Os endereços gerados pelos programas
exatamente o que está na memória fı́sica são convertidos em endereços fı́sicos que
da máquina. deixam de ter relação direta com a
◮ Único tipo de endereçamento
memória existente na máquina.
suportado pelos primeiros ◮ A palavra referenciada pelo
computadores; endereço virtual pode estar na
◮ Há várias desvantagens.Por
memória primária ou secundária;
exemplo, a dimensão dos ◮ Resolve vários problemas de
programas é limitada pela endereçamento real.
dimensão da memória fı́sica do
computador.
Introdução Memória Virtual Paginação Segmentação

Endereçamento Virtual

Espaço de Endereçamento Virtual


Em termos conceituais, aproxima-se da idéia de um
vetor existente em linguagens de alto nı́vel.
◮ Computador capaz de gerar endereços virtuais
de 16 bits (0→64k).
◮ Memória fı́sica de apenas 32k ⇒ programas
não podem ser carregados por completo na
memória fı́sica.

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.

Quando é necessário um endereço que não está presente na


MP
Uma interrupção é gerada
◮ SO coloca processo em estado bloqueado;
◮ SO faz pedido de E/S para trazer mais página(s).Enquanto isso, SO
escolhe outro processo para executar.

Quando a página é trazida para a memória


◮ o primeiro processo (o que ocasionou falta de páginas) passa para a
fila dos prontos;
◮ controlador envia interrupção (evento realizado).
Introdução Memória Virtual Paginação Segmentação

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

Mapeia blocos de dados, cujo tamanho determina o número de entradas


existentes nas tabelas de mapeamento. Quanto maior o bloco, menos
entradas nas tabelas de mapeamento e, claro, menos ocupação de memória
por essas tabelas.

Espaço de Tamanho do Número de Entradas na


Endereçamento bloco Blocos Tabela de
Virtual Mapeamento
32
2 endereços 512 endereços 223 223
232 endereços 4K endereços 220 220
264 endereços 4K endereços 252 252
264 endereços 64K endereços 248 248
Introdução Memória Virtual Paginação Segmentação

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.

Segmentação com paginação


A memória é dividida em blocos de tamanho fixo e variável.
Introdução Memória Virtual Paginação Segmentação

Paginação

Permite espaço de endereçamento não contı́guo


◮ Memória fı́sica dividida em quadros (frames.)
◮ Memória lógica dividida em páginas (pages.)

Quadros e páginas têm o mesmo tamanho


Normalmente entre 512 bytes e 16MB.

Paginação é um tipo de relocação (via hardware).


Introdução Memória Virtual Paginação Segmentação

Tamanho da página

Páginas grandes significam:


◮ Processos compostos por menos páginas (tabela de
páginas menores);
◮ Aumento da fragmentação interna na última página.

Páginas pequenas significam:


◮ Processos compostos por mais páginas (tabela de
página maiores);
Figura 4: exemplo de
◮ Diminuição da fragmentação interna na última página.
fragmentação interna. Fonte:
[1].
Introdução Memória Virtual Paginação Segmentação

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

Desafios de gerenciamento de memória virtual

1. Quando trocar uma página?


2. Qual página substituir?
3. Quando não é preciso salvar página sobrescrita no HD?
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

A gerência de memória deve manter controle de áreas livres e


ocupadas
Inclusão de mecanismos de proteção
◮ Evitar que um processo acesse área (páginas) de outros processos.
◮ Garantir que um processo acesse apenas endereços válidos.
◮ Garantir acessos autorizados a uma posição de memória.
◮ Exemplos: páginas read-only, read-write, etc.
Introdução Memória Virtual Paginação Segmentação

Paginação

Figura 6: acesso na tabela de páginas. Fonte: [2].


Introdução Memória Virtual Paginação Segmentação

Endereçamento

Endereço Virtual
Número da página virtual (NPV) + deslocamento

Bit de validade (na tabela de páginas)


Indica se a página já se encontra na memória principal ou não.

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.

Quando ocorre um page fault


o processo em questão passa ao estado de espera.
Introdução Memória Virtual Paginação Segmentação

Exemplo

Figura 7: mapeamento em um processo de paginação. Fonte: [2].


Introdução Memória Virtual Paginação Segmentação

Paginação

O overhead gerado pelo mecanismo de paginação é aceitável,


porém, se a taxa de paginação atingir valores elevados, pode haver
comprometimento do sistema.
Introdução Memória Virtual Paginação Segmentaçã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.

Dados e código próprios


Cada processo possui sua própria área de código e seus dados.
Introdução Memória Virtual Paginação Segmentação

Page fault

Quando ocorre uma


page fault
1. uma system call (trap)
invoca o SO que determina
se o endereço recebido é
valido. Se não, aborta o
processo.
2. um frame livre é
encontrado.
3. página é trazida p/ o frame.
4. tabelas são atualizadas
(v=1).
5. instrução que desencadeou
Figura 8: substituição de páginas. Fonte: [1].
esse procedimento é
reiniciada.
Introdução Memória Virtual Paginação Segmentação

Paginação em múltiplos nı́veis

O tamanho das tabelas de páginas em sistemas que implementam a


paginação em um nı́vel pode ser um problema.

Figura 9: paginação em um nı́vel. Fonte: [1].


Introdução Memória Virtual Paginação Segmentação

Solução

Uma boa solução é a utilização de tabelas de páginas em


vários nı́veis.
No esquema de dois nı́veis existe uma tabela-diretório onde cada entrada
aponta para uma tabela de páginas.

Divide-se o NPV em duas partes:


número da página virtual de nı́vel 1 (NPV 1) e número da página virtual
de nı́vel 2 (NPV 2).

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

Endereçamento Virtual em dois nı́veis

Figura 10: paginação em dois nı́veis. Fonte: [1].


Introdução Memória Virtual Paginação Segmentação

Translation Lookaside Buffer (TLB)

Translation Lookaside Buffer (TLB)


Trata-se de uma memória especial que mapeia endereços virtuais em
endereços fı́sicos sem a necessidade de acesso à tabela de páginas.

Funciona como uma memória cache


Mantém apenas as traduções dos endereços virtuais das páginas mais
recentes.

O TLB verifica a presença do endereço virtual simultaneamente em todas


as suas entradas, podendo, ainda, armazenar as traduções em qualquer
posição da cache.
Introdução Memória Virtual Paginação Segmentação

Figura 11: exemplo de Translation Lookaside Buffer. Fonte: [1].


Introdução Memória Virtual Paginação Segmentação

Translation Lookaside Buffer (TLB)

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

A proteção de acesso é feita utilizando-se as entradas das


tabelas de mapeamento com alguns bits indicando os acessos
permitidos.

Figura 12: exemplo de bits de proteção. Fonte: [1].


Introdução Memória Virtual Paginação Segmentação

Proteção

Definem-se dois tipos de acesso a uma página:


leitura e gravação.

Sempre que uma página é referenciada


o S.O.verifica se a solicitação é permitida.

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

O maior problema na gerência de MV por paginação não é decidir


que página carregar para a memória, mas quais remover.
Perda de dados
Sempre deve se considerar se uma página foi ou não modificada antes de
liberá-la para outro processo.

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 referentes à paginaçã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

Polı́ticas de Busca de Páginas

Paginação por demanda:


◮ Transferência de páginas para memória principal quando são
referenciadas;
◮ Apenas as páginas necessárias são transferidas.

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 Alocação de Páginas


Determina quantos frames cada processo pode manter na memória
principal.
Alocação Fixa
◮ Número máximo de frames (páginas) por processo.
◮ Caso o limite seja atingido, alguma página deve ser descartada.
◮ O limite de páginas é determinado na criação do processo.
◮ Limite de páginas mal dimensionado:
◮ Se for pequeno..
◮ Muitos page faults;
◮ Degradação do sistema.
◮ Se for grande..
◮ Espaço ocupado maior que o necessário;
◮ Reduz o grau de multiprogramação.
Introdução Memória Virtual Paginação Segmentação

Polı́ticas de Alocação de Páginas

Determina quantos frames cada processo pode manter na memória


principal.
Alocação Variável:
◮ O número máximo de frames de um processo pode variar em função
de sua taxa de paginação.
◮ Processos com alta taxa de paginação podem aumentar o seu limite
máximo de frames.
◮ Processos com baixa taxa de paginação podem ter os seus limites
máximos de frames reduzido.
Introdução Memória Virtual Paginação Segmentação

Polı́ticas de Alocação de Páginas

Polı́tica de Alocação Vantagem Desvantagem


Alocação Fixa Simplicidade O tamanho do número
máximo de páginas: se
pequeno, pode
acarretar muitas page
faults; se grande, pode
reduzir o grau de
multiprogramação.
Alocação Variável Flexibilidade Exige que o sistema
operacional monitore
frequentemente os
processos, gerando
maior overhead.
Introdução Memória Virtual Paginação Segmentação

Polı́ticas de Substituição de Páginas

◮ Seleção de qual página, entre as diversas alocadas, deve ser


liberada.
◮ Necessidade de verificar se a página foi alterada (bit de
modificação).
◮ Se a página liberada tiver sofrido modificação, esta deverá
antes ser gravada no Arquivo de Paginação (page out).
◮ Note que as páginas de código não podem ser modificadas,
logo, não sofrem page out.
Introdução Memória Virtual Paginação Segmentação

Polı́ticas de Substituição

Polı́tica de Substituição Local


Apenas as páginas do processo que gerou o page fault são candidatas à
relocação.

Polı́tica de Substituição Global


◮ Todas as páginas de todos os processos são candidatas à relocação.
◮ Algumas páginas nunca são candidatas à relocação, como, por
exemplo, as do núcleo do S.O.
Introdução Memória Virtual Paginação Segmentação

Relacionamento entre as Polı́ticas de Alocação e Polı́ticas


de Substituição de páginas

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

◮ O maior problema na memória virtual por paginação não é


decidir quais páginas devem ser carregadas para a memória
principal, mas quais páginas devem ser liberadas.
◮ Os algoritmos de substituição de páginas têm o objetivo de
selecionar os frames que tenham menores chances de serem
referenciados em um futuro próximo.
Introdução Memória Virtual Paginação Segmentação

Memória Virtual por Segmentação

Segmentos
Técnica de gerência de memória em que o espaço de endereçamento é
dividido em blocos de tamanhos diferentes.

Baseia-se na divisão lógica do programa em sub-rotinas e estruturas de


dados, que são alocadas em segmentos na memória principal.
Introdução Memória Virtual Paginação Segmentação

Exemplo

Figura 13: exemplo de Translation Lookaside Buffer. Fonte: [1].


Introdução Memória Virtual Paginação Segmentação

Segmentação

Geralmente, a definição dos segmentos é feita 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.

O tamanho do segmento pode variar durante a execução do programa o


que possibilita a implementação de estruturas de dados dinâmicas.
Introdução Memória Virtual Paginação Segmentação

Segmentação

Espaços de endereçamento independentes permitem que uma


sub-rotina seja alterada sem a necessidade do programa principal e
todas as sub-rotinas serem recompiladas e religadas, diferentemente
do que ocorre na técnica de paginação.
Mapeamento:
Ocorre através de Tabelas de Mapeamento de Segmentos (TMS).

Os endereços são compostos pelo número do segmento virtual


(NSV) e por um deslocamento.
O endereço fı́sico é a concatenação do endereço do segmento (localizado
na TMS) com o deslocamento.
Introdução Memória Virtual Paginação Segmentação

Campos da ETS
◮ Tamanho
◮ Bit de Validade
◮ Bit de Modificação
◮ Bit de Referência
◮ Proteção

Figura 14: exemplo campos na tabela de segmento.


Fonte: [1].
Introdução Memória Virtual Paginação Segmentaçã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

Caracterı́stica Paginação Segmentação


Tamanho dos Blocos Iguais Diferentes
Proteção Complexa Mais Simples
Compartilhamento Complexo Mais Simples
Estruturas Dinâmicas Complexo Mais Simples
Fragmentação Interna Pode existir Não existe
Fragmentação Externa Não existe Pode existir
Programação Modular Dispensável Indispensável
Alteração do Programa Mais Trabalhosa Mais simples
Introdução Memória Virtual Paginação Segmentação

Segmentação com Paginação

Segmentação com Paginação


Técnica de gerência de memória em que o espaço de endereçamento é
dividido em segmentos e, por sua vez, cada segmento dividido em páginas.

Objetivo
Reunir as vantagens da técnica de paginação e da segmentação.
Introdução Memória Virtual Paginação Segmentação

Segmentação com Paginaçã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.

Através do NSV, obtém-se uma entrada na tabela de


segmentos.
O NPV é 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.
Introdução Memória Virtual Paginação Segmentação

Segmentação com paginação

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

O Thrashing pode ser visto como a excessiva transferência de


páginas ou segmentos
É um problema comum tanto em sistemas que implementam paginação
quanto naqueles que utilizam segmentação.

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

ETP Entrada na Tabela de Paginas


MMU Memory Management Unit
NPV Número da página virtual
SO Sistema Operacional
TLB Translation Lookaside Buffer
TMS Tabelas de Mapeamento de Segmentos
Referências

Referências I

[1] F. M. Machado and L. P. Maia. Arquitetura de Sistemas Operacionais. Grupo Gen:


LTC, Rio de Janeiro, 4 edition, 2007.
[2] Prof. Ernesto Massa, 2010. URL http://ernestomassa-so.blogspot.com.
[3] Andrew S. Tanenbaum. Sistemas Operacionais Modernos. Pearson do Brasil, São
Paulo, 3 edition, 2010.

Você também pode gostar