15
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 na memó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 RAM USUÁ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 de compilação; Não há necessidade de proteção de memó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 nova configuração.

SOA05 - SO Gerenciamento de Memória

Embed Size (px)

DESCRIPTION

Gerenciamento de Memória

Citation preview

Page 1: SOA05 - SO Gerenciamento de Memória

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.

Page 2: SOA05 - SO Gerenciamento de Memória

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

Page 3: SOA05 - SO Gerenciamento de Memória

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.

Page 4: SOA05 - SO Gerenciamento de Memória

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.

Page 5: SOA05 - SO Gerenciamento de Memória

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

Page 6: SOA05 - SO Gerenciamento de Memória

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.

Page 7: SOA05 - SO Gerenciamento de Memória

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.

Page 8: SOA05 - SO Gerenciamento de Memória

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.

Page 9: SOA05 - SO Gerenciamento de Memória

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

Page 10: SOA05 - SO Gerenciamento de Memória

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

Page 11: SOA05 - SO Gerenciamento de Memória

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

Page 12: SOA05 - SO Gerenciamento de Memória

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.

Page 13: SOA05 - SO Gerenciamento de Memória

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

Page 14: SOA05 - SO Gerenciamento de Memória

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)

Page 15: SOA05 - SO Gerenciamento de Memória

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.