Upload
ezequielbarros
View
182
Download
11
Embed Size (px)
DESCRIPTION
Gerenciamento de Memória
Citation preview
SOA
1
10.1
Gerenciamento de Memória
�Conceitos básicos
�Swapping
�Alocação contígua
�Paginação
�Segmentação
�Segmentação com paginação
10.2
Introdução
� Objetivo: suportar múltiplos processos “simultaneamente”
� Chaveamento de Processos:
� Troca de contexto: ~10ms
� Carregamento do disco para Memória: ~10ms/Kb
� Para carregar um processo de 10 MBytes: 10 segundos!
� Solução:
� Manter múltiplos processos simultaneamente namemória física
10.3
Gerenciamento de Memória
�Memória:
�Recurso importante
�Computadores modernos x antigos;
�Tendência atual do software:
�Lei de Parkison: “Os programas se
expandem para preencher a memória
disponível para eles”10.4
Considerando Mono-programação
� Técnica usual:
USUÁRIO
0
0xFFF...
RAM
S.O.
S.O.ROM
RAMUSUÁRIO
DRIVERS
USUÁRIO
S.O.
ROM
RAM
(a) (b) (c)
10.5
Memória Dedicada
�Um processo por vez;
�A localização do processo na memóriaé conhecida;
�Endereços são gerados em tempo decompilação;
�Não há necessidade de proteção dememória.
10.6
Alocação Particionada
� Multiprogramação.� Necessidade do uso da memória por vários usuários
simultaneamente.
� Ocupação mais eficiente do processador;� A memória foi dividida em pedaços de tamanho
fixo chamados partições;� O tamanho de cada partição era estabelecido na
inicialização do sistema;� Para alteração do particionamento, era necessário
uma nova inicialização com uma novaconfiguração.
SOA
2
10.7
Relocação e Proteção� Dois problemas da multiprogramação
� código relocável : Quando um programa é executado e não sesabe a-prior qual é a locação onde vai ser carregado.
� Portanto endereços de um programa não podem ser endereçosestáticos , absolutos.
� Terão que ser endereços relativos – relativos ao endereçoinicial do programa
� Proteção : Uma vez que são permitidos dois programas emmemória ao mesmo tempo, existe o perigo que um programaescrever no espaço de endereçamento de outro.
� Solução :
� Utilizar dois registros:
� registo base (contém o end. físico mais baixo da memória)
� registo limite (contém o end. físico mais elevado da memória).
� Uma vantagem adicional deste método é de possibilitar de mudar um processo de uma parte da memória para outra.
10.8
Multiprogramação com Partições Fixas
partição 4
partição 3
partição 2
partição 1
S.O.0
100 k
200 k
400 k
700 kpartição 4
partição 3
partição 2
partição 1
S.O.
FilasMúltiplas
FilaÚnica
...
(a) (b)
10.9
Problemas no Compartilhamento daMemória Física
�Endereçamento:�Compilador gera referência de memória;�Não se sabe onde o processo estará na
memória;
�Um processo pode modificar asposições de memória de outroprograma;
�Quanto mais processos, menos elestem individualidade,
10.10
• Um compilador tem a finalidade de converteruma linguagem – Linguagem Fonte – de fácilescrita e leitura para os programadores, numalinguagem – Linguagem alvo ou objeto – que possaser executada pelas máquinas.
• O código executável gerado pelo compilador édependente do sistema operacional, e dalinguagem de máquina para o qual o código fontefoi traduzido.
CompiladoresO que é um compiladorO que é um compilador
10.1111
Criação de programa executável
Programa
Fonte
(linguagem
fonte)
Compilador
(compiler)
Mensagens
de erro
Programa
Alvo
(linguagem
alvo)
10.12
Linqueditor
� Linker
Linker
Mód. Objeto
Mód. Objeto
Mód. Objeto
Prg. Executável
SOA
3
10.13
Conceitos básicos
�Um programa precisa ser alocado na memória e associado a um processo para que possa ser executado.
�Fila de entrada – coleção de processos que estão no disco esperando para serem colocados na memória para serem processados.
�Os programas passam por vários estágiosaté se tornarem executáveis.
10.14
Vinculação de código e dados na memória
� A vinculação de endereços de instruções e dados, para endereços físicos de memória podem ser feitos em três diferentes estágios:
� Tempo de compilação (estático) : Se alocalização na memória já é conhecida a priori,um código de endereçamento absoluto podeser gerado.� É necessário recompilar o código, caso o endereço
inicial mude.
10.15
Vinculação de código e dados na memória
� Tempo de carregamento (estático) : Precisagerar código relocável já que a localização emmemória não é conhecida em tempo decompilação.
� Tempo de execução (dinâmica): Vinculação éatrasada até o instante de execução, caso oprocesso possa ser movido durante sua execuçãode um segmento de memória, para outro.� Necessita de hardware para suportar mapeamento de
endereço como por exemplo: registradores base elimite.
10.16
Criação e processamento de um programa
10.17
Link Editor
programa(s)objeto
linkingloader
memória
programa(s)objeto
linkageeditorbiblioteca
linkedprogram
relocatingloader
memória
biblioteca
10.18
Espaços de endereçamento lógico e físico
� A separação entre espaço de endereçamentológico e físico é fundamental para gerenciamentode memória.
� Endereço lógico – gerado pela CPU; tambémconhecido como endereço virtual.
� Endereço físico – endereço visto por uma unidade dememória.
� Endereços lógicos e físicos são os mesmos emesquemas de vinculação de endereços emtempo de compilação e de carregamento;� porém, endereços lógicos (virtuais) e endereços
físicos diferem nos esquemas de vinculação deendereço em tempo de execução.
SOA
4
10.19
Memory-Management Unit (MMU)Unidade de gerenciamento de memória
� MMU é um dispositivo de hardware que mapeia
endereços virtuais em físicos.
� Dentro do esquema da MMU, o valor de um
registrador de relocação é adicionado a todo
endereço gerado pelo processo de um usuário,
antes de ser enviado para a memória.
� O programa do usuário lida sempre com
endereços lógicos:
� ele nunca trabalha com endereços físicos.10.20
Relocação dinâmica usando um registrador de relocação
10.21
CPUMEMÓRIA
MMU
42000
Endereço Lógico
346 42346
EndereçoFísico
Registrador de Relocação
Relocação dinâmica usando um registrador de relocação
10.22
Carregamento dinâmico
�Uma rotina não é carregada até que elaseja invocada;
�Proporciona uma utilização mais otimizadade memória;
�rotinas não utilizadas nunca são carregadas;
�Útil quando grandes quantidades decódigo são necessários para manipularcasos pouco freqüentes.
10.23
Ligação dinâmica
� Ligação é adiada até o tempo de execução.
� Pequeno pedaço de código, o stub, é usado paralocalizar a rotina apropriada, residente namemória.
� O stub substitui a si mesmo com o endereço darotina e inicia a sua execução.
� O sistema operacional necessita apenas checarse a rotina está no espaço de endereçamento doprocesso.
� Ligação dinâmica é particularmente útil parabibliotecas (DLL).
10.24
Overlays (sobreposições)
�Mantém na memória somente aquelasinstruções e dados que são necessáriosnum determinado instante.
�Necessário quando um processo é maiorque a quantidade de memória alocada paraele.
� Implementada pelo programador, sem necessidade de suporte especial pelo sistema operacional. �O projeto da estrutura de overlay é complexo.
SOA
5
10.25
Overlays para um montador de dois passos
10.26
� Problema : e se não houver memória RAM suficiente paraacomodar todos os processos?
� Solução : realizar uma troca de processos, ou swapping .
� Um dos processos da RAM é deslocado para uma memóriasecundária (swap out ) e dá lugar ao “novo” processo (swap in ).
� Opta-se por remover o processo em wait com menos chance deser executado (possivelmente pode optar por um processo emready ).
� Uma área do disco passa a ser usada como memória secundária(área de swap ).
� Mais tarde, o processo swapped out é escalonado e swappedin , voltando a ser executado.
Troca de Processos (Swapping):
10.27
� Swapping :
� exige relocação dinâmica;
� permite um maior compartilhamento;
� custo elevado p/ operações de swap in e swap out.
� Problema : não havendo espaço para crescimento ou relocação,
e/ou a área de swap estiver cheia, o processo poderá ficar em estado de espera ou ser terminado.
Troca de Processos (Swapping):
Memória Principal
Memória Principal
SistemaOperacional
SistemaOperacional
Programa A
Programa A
Programa G
Área LivreSwap in
Swap out
Arquivode Swap
Programa E
Programa E
Programa B
Programa H
H
B
B
10.28
Swapping
� Um processo pode ser trocado (swapped)temporariamente da memória para um meiode armazenamento (secundário ou backingstore), e reconduzido à memória paraposterior execução.
� Backing store – um disco rápido e grande osuficiente para acomodar cópias de todas asimagens de memória de todos os usuários;� precisa disponibilizar acesso direto a todas estas
imagens de memória.
10.29
Swapping
�Roll out, roll in – variante de swappingusada por algoritmos de escalonamentobaseados em prioridade;�processos de baixa prioridade são
armazenados no disco, para que outrosprocessos possam ser carregados eexecutados.
�O maior tempo do processo de troca égasto na transferências disco-memória;�tempo total de transferência é diretamente
proporcional à quantidade de memória sendoarmazenada no disco;
10.30
Visão esquemática de Swapping
SOA
6
10.31
Gerenciamento Simples de Memória� Não considera a possibilidade de utilização de memória
virtual;� Um processo em execução precisa ser carregado
inteiramente na memória principal (se não utilizaroverlays);
� Embora essas técnicas não sejam por si só utilizadas emsistemas operacionais comerciais, elas constituem a basepara discussão de SOs mais avançados;
� Algoritmos simplificados:� Particionamento fixo;� Particionamento dinâmico;� paginação simples;� Segmentação simples.
10.32
Particionamento fixo
� Particiona a memória principal num conjunto de de regiões não sobrepostas, denominadas de partições;
� As partições podem ser de tamanhos idênticos ou diferentes.
10.33
Particionamento fixo
� Qualquer processo de tamanho menor ou igualao tamanho da partição poderá ser carregadona partição;
� Caso todas partições estejam ocupadas, o SOpode realizar um swap para disco de umprocesso a fim de liberar uma partição;
� Um programa pode ser maior que o tamanho dapartição. Nesse caso, o programador necessitaprojetar o programa com overlays .
10.34
Particionamento fixo
� A utilização da memória principal é ineficiente.Qualquer programa, não importando seutamanho, ocupará uma partição inteira. Isto édenominado fragmentação interna .
� Partições de tamanhos diferenciados,minimizam esse problema, mas elespermanecem...
� Partições de tamanho fixo foram utilizadas nosprimeiros computadores da IBM, com SOdenominado OS/MFT (Multiprogramming with aFixed number of Tasks)
10.35
Algoritmo de Carga com Partições
�Partições de tamanho fixo:�Caso haja uma partição disponível, um
processo pode ser então carregado nessapartição:�Como todas partições apresentam mesmo
tamanho, não importa qual partição seráutilizada;
�Caso todas partições estejam ocupadas porprocessos bloqueados, escolher umprocesso para sofrer swap para disco, deforma a liberar uma partição para este novoprocesso.
10.36
Algoritmo de Carga com Partições
�Partições de tamanhos desiguais: uso de múltiplas filas�Atribui cada processo para
a menor partição que ele caiba;
�Mantém uma fila para cada tamanho de partição;
�Tenta minimizar a fragmentação interna;
�Problema: algumas filas podem permanecer vazias, caso nenhum processo de dimensão compatível for processado.
SOA
7
10.37
Algoritmo de Carga com Partições
� Partições de tamanhos desiguais: uso de uma única fila
� Quando for carregarum processo para amemória principal, amenor partição seráescolhida;
� Aumenta o nível demultiprogramaçãopara minimizar afragmentação interna.
10.38
Alocação contígua� Memória principal é vista como duas partições:
� A porção residente do Sistema Operacional, usualmentecarregado na memória baixa juntamente com o vetor deinterrupções.
� Processos do usuário, armazenados na área restante.
� Alocação com partição simples:
� Esquema de registrador de relocação usado para protegerprocessos de um usuário de outros processos, e também docódigo e dados do sistema operacional.
� Registrador de relocação contém valor do menor endereçofísico;� registrador-limite contém o intervalo de endereços lógicos
– cada endereço lógico precisa ser menor que oregistrador limite.
10.39
Hardware de Relocação
limite base
Endereço
LógicoCPU
Endereço
Físico
Memória
+<
Acesso Inválido
Suporte de hardware para registradores de relocação e limite
10.40
Alocação contígua (Cont.)
� Alocação com múltiplas partições:� Buraco – bloco de memória disponível; buracos de
vários tamanhos ficam distribuídos ao longo damemória.
� Quando um processo chega, ele é alocado em umburaco grande o suficiente para acomodá-lo.
� Sistemas operacional mantém informação sobre:a) partições alocadas b) partições livres (buracos)
SO
processo 5
processo 8
processo 2
SO
processo 5
processo 2
SO
processo 5
processo 2
SO
processo 5
processo 9
processo 2
processo 9
processo 10
10.41
Particionamento Dinâmico
� As partições são de tamanho e quantidadevariáveis;
� Cada processo é alocado em função da quantidadede memória requerida;
� Eventualmente, buracos são formados na memóriaprincipal. Isso é chamado de fragmentação externa;
� A compactação desloca os processos tornando-oscontíguos e toda memória livre é aglutinada num sóbloco;
� Utilizado no sistema operacional da IBM: OS/MVT(Multiprogramming with a Variable number of Tasks)
10.42
Particionamento Dinâmico: um exemplo
� Um buraco de 64K sobra após o carregamento de 3processos: não sobra espaço suficiente para outroprocesso;
� Para carregar um processo 4 de 128 Kb, o SO realiza umswap do processo 2.
SOA
8
10.43
c) Com a carga do processo 2, um outro buraco de 96 Kb écriado;
g) Para trazer de volta o processo 2, o processo 1 sofreswap, e cria-se um novo buraco de 96Kb...
� Compactação irá produzir um único buraco de 256Kb.
Particionamento Dinâmico: um exemplo
10.44
Problema da alocação de partiçõesComo satisfazer uma requisição de n bytes, a partir de uma lista de
partições livres?
� First-fit : alocar a primeira partição livre que acomoda oprocesso.
� Best-fit : Aloca a menor partição dentre as que podem acomodaro processo;� precisa varrer uma lista inteira de partições livres.
� Worst-fit : Aloca a maior partição dentre as que podem acomodaro processo;
� precisa também, varrer uma lista inteira de partições livres.
First-fit e best-fit são melhores que o worst-fit em termos de velocidade e armazenamento, respectivamente.
10.45 10.46
Fragmentação
�Fragmentação externa – existe memóriaem quantidade suficiente para satisfazeruma requisição, mas ela não é contígua.
�Fragmentação interna – a memóriaalocada pode ser levemente maior que amemória requisitada;�esta diferença é o que sobra da memória
interna de uma partição, mas que não estásendo usada.
10.47
� Reduzir a fragmentação externa por compactação:
�Reorganizar o conteúdo de memória para colocartoda a memória livre num único bloco.
�Compactação de memória é possível somentequando a relocação é dinâmica, e é feita em tempode execução.
�Problema de E/S:
�Armazenar uma tarefa em memória, enquantoela está envolvida em E/S.
�Realizar E/S usando somente buffers do SO.
Fragmentação
10.48
Paginação Simples� O espaço de endereçamento lógico de um processo pode
ser não contíguo;� Divide a memória física em blocos de tamanho fixo
chamados quadros (frames), normalmente potência de 2,entre 512 e 8192 bytes.
� Divide a memória lógica em blocos de mesmo tamanhochamados páginas .
� Mantém registro de todos os quadros livres.� Para rodar um programa dividido em n páginas, o SO
precisa encontrar n quadros livres e carregar o programa.� Usar uma tabela de páginas para traduzir o endereço
lógico para um endereço físico.� Pode ocorrer fragmentação interna.
SOA
9
10.4949
Paginação
10.50
Exemplo de carga de processo
� Agora suponha que o processo B sofra swap
10.51
Exemplo de carga de processo (cont.)
� Quando os processos A eC forem bloqueados, opáginador irá carregar umnovo processo D formadopor 5 páginas;
� Processo D não irá ocuparposições contíguas dememória;
� Não há fragmentaçãoexterna;
� Fragmentação Internaocorrerá somente naúltima página de cadaprocesso.
10.52
Tabela de páginas
� O SO necessita manter (na memória principal) uma tabelade páginas para cada processo;
� Cada entrada da tabela de páginas consiste de umnúmero de frame onde a correspondente página estáfisicamente localizada;
� A tabela de páginas é indexada pelo número da páginapara obter o número do quadro (frame);
� É também mantida uma lista de quadros disponíveis parapáginas.
10.53
Esquema de tradução de endereço
� Endereço gerado pela CPU é dividido em:
�Número da página (p) – usado como um índice natabela de páginas que contém o endereço-base decada página na memória física.
�Deslocamento (offset) na página (d) – combinadocom o endereço base para definir o endereço físicoque será enviado à unidade de memória.
10.54
Hardware de paginação
página offset frame offset
frame
Endereço
LógicoCPU
Endereço
Físico
Tabela dePáginas
Memória
Arquitetura de tradução de endereço
SOA
10
10.55
Tamanho do Bloco = 1000 wordsMemória = 1000 FramesMemória = ?
CPUCPU página offset
MemóriaFísica
page table
frame
frame offset
página
Assumindo que os endereçosAtingem 10.000.000, Qual será o tamanho da página?
Exemplo Decimal
10.56
Exemplo Decimal
Tamanho do Bloco = 1000 wordsMemória = 1000 FramesMemória = 1,000,000 words
CPUCPU página offset
MemóriaFísica
page table
frame
frame offset
página
Assumindo que os endereçosAtingem 10.000.000, Qual será o tamanho da página?
10.000 Entradas
10.57
Exemplo Decimal
Tamanho do Bloco = 1000 wordsMemória = 1000 FramesMemória = 1.000.000 words
CPUCPU 42 356
MemóriaFísica
page table
256
256 356
42
10.58
Exemplo de paginação
10.59
Exemplo de paginação
10.60
Quadros livres
Antes da alocação Depois da alocação
SOA
11
10.61
Implementação da tabela de páginas
�A tabela de páginas é mantida namemória principal.
�Registrador-base para a tabela depáginas (PTBR) aponta para a tabela depáginas.
�Registrador de tamanho da tabela depáginas (PRLR) indica o tamanho databela de páginas.
�Neste esquema, cada acesso adados/instrução requer dois acessos àmemória.�Um para a tabela de páginas, e outro para
dados/instrução.10.62
Implementação da tabela de páginas
�O problema dos dois acessos à memóriapode ser resolvido usando um hardwarecom cachê especial de busca rápida,chamado memória associativa ouregistradores associativos (translationlook-aside buffers (ou TLBs ) ).
�Um TLB armazena somente algumasentradas da tabela de páginas.
10.63
Memória Associativa
� Memória associativa: busca paralela
Tradução de endereço (A´, A´´)� Se A’ está no registrador associativo, devolva o
número do quadro A’’.� Caso contrário, carregar o número da página na
memória associativa, juntamente com o número doframe.
Número página Número quadro
10.64
Hardware de paginação com TLB
10.65
Proteção de memória
�Proteção de memória é implementadaassociando-se um bit de proteção com cadaquadro.
�Um bit de válido-não válido é associado comcada entrada na tabela de páginas:�“válido” indica que a página associada está no
espaço de endereçamento lógico do processo, eé uma página legal.
� “inválido” indica que a página não está noespaço de endereçamento lógico do processo.
10.66
Bits válido (v) ou inválido (i) Bit em uma tabela d e páginas
SOA
12
10.67
Estrutura da tabela de páginas
� paginação hierárquica
�Tabelas de paginação com hashing
�Tabelas com paginação invertida
10.68
Tabelas de paginação hierárquica
�Quebra o espaço de endereçamento
lógico em várias tabelas de páginas.
�Uma técnica simples é a paginação
em dois níveis.
10.69
Exemplo de paginação em dois níveis
�Um endereço lógico (em máquinas de 32bits com tamanho de página 4k) é divididoem:�Um número de página contendo 20 bits;�Um deslocamento na página de 12 bits.
�Como a tabela de páginas será paginada,o número da página é dividido em:�Um número de página com 10 bits;�Um deslocamento de página com 10 bits.
10.70
� Então, um endereço lógico é como:
onde pi é um índice numa tabela externa (outter-table),e p2 é o deslocamento dentro da tabela interna.
Exemplo de paginação em dois níveis
Número página Deslocamento de página
pi p2 d
10 10 12
10.71
Esquema de tabela de páginas em dois níveis
10.72
Esquema de tradução de endereço
� Esquema de tradução de endereço comarquitetura de paginação 32-bits em dois níveis.
SOA
13
10.73
Tabelas de paginação com hashing
� Comum em espaços de endereçamentomaiores que 32 bits.
� Utiliza-se hashing com o número da página.
�Na entrada correspondente a esta chave existeuma lista ligada de páginas mapeadas para amesma posição.
� Efetua-se uma busca nesta lista de páginas.Encontrando-se a página desejada, o númerodo quadro é retornado.
10.74
Tabela de paginação com hashing
10.75
Tabela de páginas invertida
� Uma entrada para cada página real na memória.� Entrada consiste de um endereço virtual da
página armazenada numa localização da memóriaprincipal, com informação sobre o processoproprietário desta página.
� Diminui o espaço de memória necessário paraarmazenar cada tabela de páginas, mas aumentao tempo necessário para buscar a tabela quandouma referência de página ocorre.
� Pode utilizar uma tabela de hashing para limitar abusca a um elemento ou, no máximo, poucasentradas na tabela de páginas.
10.76
Arquitetura de tabela de páginas invertidas
10.77
Páginas compartilhadas
� Código compartilhado� Uma cópia de código de somente leitura compartilhado
entre processos (código reentrante).�Exemplo: editores de texto, compiladores, sistemas de
janela;� O código compartilhado precisa aparecer na mesma
localização no espaço de endereçamento lógico de todosos processos.
� Código e dados privados� Cada processo mantém uma cópia separada de código e
dados;� As páginas para código privado e dados podem aparecer
em qualquer lugar no espaço de endereçamento lógico.10.78
Exemplo de páginas compartilhadas
SOA
14
10.79
Paginação
�A paginação permite que o programapossa ser espalhado por áreas nãocontíguas de memória. Características:� o espaço de endereçamento lógico de um processo
é dividido em páginas lógicas de tamanho fixo� a memória física é dividida em páginas com
tamanho fixo, com tamanho igual ao da páginalógica
� o programa é carregado página a página, cadapágina lógica ocupa uma página física
� as páginas físicas não são necessariamentecontíguas
10.80
Paginação
� o endereço lógico é inicialmente dividido emduas partes : um número de página lógica eum deslocamento dentro da página;
� o número da página lógica é usado comoíndice no acesso a tabela de páginas, deforma a obter o número da página físicacorrespondente;
� não existe fragmentação externa;� existe fragmentação interna (Ex: um programa que
ocupe 201kb, o tamanho de página é de 4 kb, serãoalocadas 51 páginas resultando uma fragmentação internade 3kb)
10.81
Paginação
� além da localização a tabela de páginasarmazena também o bit de validade, (1) se apágina está na memória, e zero (0) se a páginanão está na memória;
� a transferência das páginas de processo podemser transferidas para a memória por demanda,levando apenas o que é necessário para aexecução do programa;
� ou por paginação antecipada, onde o sistematenta prever as páginas que serão necessárias àexecução do programa.
10.82
Página 0
Página 1
Página 2Página 3Página 4
Paginação
� Paginas constantemente referenciadas em umprocesso devem permanecer na memória (workingset)
Inicialização
WHILE() DOBEGIN
END;imprime resultados
10.83
Realocação de Páginas no Working set
O maior problema de gerenciamento de memórianão é decidir que página carregar para amemória, mas que páginas remover
� antes de remover uma página o sistemaoperacional verifica se a mesma foi alterada (bitde modificação 0 (não ocorreu modificações) 1 (ocorreram
modificações) .
� A página removida é salva na memóriasecundária.
� Quando ela for referenciada é trazida novamentepara o working set
10.84
Estratégias de Realocação de Páginas
� Aleatória - não utiliza nenhum critério deseleção, todas as páginas têm a mesmachance
�FIFO - a página que primeiro foi utilizadaserá a primeira a ser escolhida
�Least-Recently-Used(LRU) - seleciona apágina que está a mais tempo sem serreferenciada
�Least-Frequently-Used(LFU) - seleciona apágina menos freqüentemente usada (mantémum contador)
SOA
15
10.85
Tamanho de Página
�o problema de fragmentação também éencontrado na paginação. Mas ocorreapenas na última página usada peloprograma;
�A fragmentação é conseqüência do tamanhoda página;
�páginas pequenas evitam o problema defragmentação, aumentam no entanto osacessos a memória secundária;
�a literatura indica o uso de páginaspequenas.