81
Sistemas Operacionais - Gerência de Memória -

Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Sistemas Operacionais

- Gerência de Memória -

Page 2: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Memória Virtual

É uma técnica sofisticada de gerência de memória

As memórias principal e secundária são combinadas,

dando ao usuário a impressão de existir uma memória

muito maior do que a MP

O conceito da memória virtual está em desvincular o

endereçamento feito pelo programa dos endereços

físicos da MP

Assim, o programa não fica limitado ao tamanho da memória

física disponível

Page 3: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Memória Virtual

Anteriormente, vimos que o uso de registradores base e

limite eram usados para criar uma abstração de espaços

de endereçamento

Porque usar a memória virtual?

Ainda existe um outro problema: gerenciar programas que

utilizam quantidades excessivas de memória

Solução: usar a técnica de overlay?

A técnica de overlay exige que o programador se preocupe em

dividir o seu código de forma que os módulos possam ser trazidos

para a memória de forma independente → trabalho árduo e lento

A ideia é atribuir esta tarefa ao sistema

Page 4: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Memória Virtual

Um programa em um ambiente de memória virtual faz

referência a endereços virtuais

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

virtual é traduzido para um endereço físico

Esta tradução é chamada mapeamento

O conjunto de endereços virtuais que um processo pode

endereçar é chamado de espaço de endereçamento

virtual

Analogamente o conjunto de endereços reais é

chamado espaço de endereçamento real

Page 5: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Memória Virtual

O espaço de endereçamento virtual não possui relação

direta com o espaço de endereçamento real

Um programa pode fazer referência a endereços virtuais

que estejam fora dos limites do espaço real

Esp

aço

de e

nd

ere

ça

me

nto

vir

tua

l

Esp

aço

de e

nd

ere

çam

en

to r

ea

l

Endereço virtual 0

Endereço virtual 1

Endereço virtual 2

Endereço virtual 3

Endereço virtual 4

Endereço virtual 5

.

.

.

Endereço virtual V

Endereço real 0

Endereço real 1

Endereço real 2

Endereço real 3

.

.

.

Endereço real R

Page 6: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Mapeamento

Nos sistemas modernos a tarefa de tradução de endereços

virtuais é realizada pelo HW juntamente com o sistema

operacional

O dispositivo de HW responsável por esta tradução é

conhecido como MMU (Memory Management Unit)

O MMU é acionado sempre que é feita referência a um

endereço virtual

Cada processo tem seu próprio espaço de endereçamento

virtual

O mecanismo de tradução deve manter tabelas de mapeamento

exclusivas para cada processo

Page 7: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Mapeamento

O sistema deve fazer

referência a tabela de

mapeamento do processo

em execução

Um registrador é usado para

guardar o endereço da

tabela de mapeamento

corrente

As tabelas mapeiam blocos

de dados

O tamanho do bloco da

memória irá definir o

número de entradas da

tabela de mapeamento

Processo A

Espaço deendereçamento

virtual de A

Endereço virtual 1

.

.

.

Tabela demapeamento

de A

Espaço deendereçamento

virtual de B

Endereço virtual 1

.

.

.

Tabela demapeamento

de B

Processo B

Memória Principal

Page 8: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Memória Virtual

Quando o programa é executado só uma parte do código fica

residente na memória principal

O restante do código fica na memória secundária até o

momento em que for referenciado

Assim, o sistema operacional utiliza a memória secundária

como uma extensão da MP

O sistema operacional deve ser responsável por

Trazer parte do código referenciado que esteja na MP

Escolher qual parte do código residente na MP ira sofrer um

swap out

Page 9: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação

A memória virtual por paginação é uma técnica onde o

espaço de endereçamento virtual e real são divididos

em blocos do mesmo tamanho

Divide a memória física em blocos de tamanho fixo chamados

quadros (frames)

Divide a memória lógica em blocos de mesmo tamanho

chamados páginas

Evita o problema de ajustar trechos de memória de

tamanhos variáveis

Nos esquemas anteriores as partições tinham tamanhos

variáveis

Page 10: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação

Quando um processo precisa ser executado, suas páginas

são carregadas em qualquer quadro disponível

O mapeamento do endereço virtual em real é feito através da

tabela de páginas

Cada processo possui

sua própria tabela de

páginas

A MMU é responsável

por fazer a tradução

Memória Virtual

.

.

.

.

Página virtual 0

Página virtual 1

Página virtual 2

Página virtual V

Tabela depáginas

ETP

Memória Principal

Memória Secundária

.

.

.

Página real 0

Página real 1

Página real R

Page 11: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação

Cada endereço virtual é dividido em duas partes: número da

página (p) e deslocamento dentro da página (d)

O número da página é usado como índice da tabela de

página, que conterá o endereço base de cada quadro (f) na

memória física

O endereço real é

obtido combinando o

endereço do frame (f)

com o deslocamento

dentro da página (d)

Page 12: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação

Exemplo:

Memória lógica de 16 bytes

(16 bytes = 128 bits = 27 bits)

Páginas de 4 bytes

(4 bytes = 32 bits = 25 bits)

Memória física de 32 bytes

(32 bytes = 256 bits = 28 bits)

Entrada da tabela de páginas

possui 3 bits e pode referenciar

até 23 frames

f f f d d d d d

p p d d d d d

Page 13: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação

Em geral, uma entrada da

tabela de páginas possui

4 bytes

Com 4 bytes (32 bits) pode-se

referenciar até 232 quadros

Se o tamanho de um quadro é

4 Kbytes (4096 bits = 212 bits),

então é possível endereçar:

212 x 232 = 244 bits = 4Tbytes

Page 14: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Tabela de Páginas

Além da informação sobre a localização da página, a tabela

de páginas possui outras informações como:

Bit de validade: indica se uma página está (1) ou não (0) na

memória principal

Bit de proteção: indica qual tipo de acesso é permitido na

página, onde 3 bits podem ser usados para habilitar e desabilitar

cada uma das operações básicas em uma página (leitura,

escrita e execução)

Bit de modificação: indica 1 quando a página foi escrita na

memória principal

Bit de referência: indica 1 quando a página foi referenciada na

memória principal

Page 15: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação

Quando um processo faz referência a um endereço virtual, a MMU

verifica através do bit de validade se a página está na memória

Se for feita referência a um endereço de uma página que não está

carregada na MP, então ocorre um page fault (falha de página)

Neste caso, o sistema transfere a página da memória secundária para

a memória principal

O número de page faults gerados por cada processo em um

determinado intervalo de tempo é definido como taxa de paginação

do processo

Se a taxa de paginação dos processos atingir valores elevados, o

excesso de operação de E/S poderá comprometer o sistema

Page 16: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação Endereço virtual

Tabela de páginas

Bit de validade

0

Memória Principal

Memória secundária

Page fault

Tabela de páginas

Bit de validade

1

Memória Principal

Memória secundária

Page in

Page 17: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Busca de Páginas

Ao se carregar uma página para a memória pode-se adotar

duas estratégias diferentes: paginação por demanda e

paginação antecipada

Paginação por Demanda

As páginas do processo são transferidas da memória

secundária para a principal apenas quando são referenciadas

Leva para a MP apenas as páginas realmente necessárias à

execução do programa

Page 18: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Busca de Páginas

Paginação Antecipada

Além da página referenciada, carrega para a memória principal

outras páginas que podem ser necessárias ao processo ao

longo do processamento

Se o programa estiver armazenado sequencialmente no disco,

economiza-se tempo ao levar um conjunto de páginas

Caso o programa não necessite da paginação antecipada, o

sistema terá perdido tempo e ocupado memória

desnecessariamente

Page 19: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Busca de Páginas

Pode se usar uma estratégia combinada:

A técnica de paginação antecipada pode ser empregada no

momento da criação de um processo

Quando um processo é criado, diversas páginas do programa

que estão na memória secundária devem ser carregadas para a

MP gera um alto número de page faults

Se o sistema optar por carregar um conjunto de páginas, a taxa

de paginação do processo deverá cair imediatamente

Ao diminuir o número de page faults, diminui-se o tempo gasto

com operações de E/S e o desempenho do sistema aumenta

Page 20: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Working Set

MP contém páginas de diferentes processos

Durante a execução de um processo, algumas páginas são

carregadas e outras são swapped out

Ao se escolher uma página para ser retirada da MP, existe a

possibilidade de enviar para MS uma página de outro processo,

logo antes desta ser utilizada

É importante reduzir a taxa de page faults, sem prejudicar os

outros processos

Quando o sistema gasta a maior parte do tempo fazendo

swapping, ocorre um problema conhecido como thrashing

Page 21: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Working Set

Para evitar o thrashing é necessário adivinhar qual parte de

código será mais necessária no futuro → princípio da

localidade

Princípio da Localidade:

É a tendência do processador

referenciar instruções e

dados na memória principal

localizados em endereços

próximos

Por exemplo, esta tendência

pode ser justificada pela alta

incidência de estruturas de

repetição e acessos a vetores

Página 0

Página 1

Página 2

Página 3

Página 4

Inicialização

WHILE () DO BEGIN

END;

Imprime resultados

Page 22: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Princípio da Localidade

Localidade espacial:

quando um item é referenciado, existe grande

probabilidade que itens com endereços próximos

sejam referenciados em seguida

Localidade temporal:

Quando um item é referenciado, existe grande

probabilidade que ele seja referenciado novamente

em breve

Page 23: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Working Set

O conceito de working set está diretamente ligado ao

princípio da localidade

O working set de um processo é o conjunto de páginas

constantemente referenciadas pelo processo

O working set deve

permanecer na MP para que o processo execute eficientemente

ter um limite máximo de páginas permitidas

Se o tamanho do working set for muito grande

Então, menor será a chance de falhas de página

Porém, menos processos irão compartilhar a memória

Page 24: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Working Set

Uma maneira de implementar o modelo de working set é

analisar a taxa de paginação de cada processo

Caso um processo tenha uma taxa de paginação acima

de um limite definido pelo sistema

o limite de páginas reais deve ser aumentado na tentativa de

alcançar o working set

Caso um processo tenha uma taxa de paginação abaixo

de um certo limite

O sistema pode reduzir o limite de páginas sem comprometer o

seu desempenho

Page 25: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Alocação de Páginas

Determina quantos quadros (frames) um processo pode

manter na memória principal

Existem duas alternativas: fixa e variável

Na Política de Alocação Fixa

Cada processo tem um número máximo de frames que pode ser

usado durante a execução

Na Política de Alocação Variável

O número máximo de frames alocado para um processo durante

a sua execução pode variar

Page 26: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Alocação de Páginas

Política de Alocação Fixa

Se o número de frames alocado para um processo for pouco,

uma página do próprio processo deve ser descartada para que

outra seja carregada

O limite de frames deve ser definido no momento da criação do

processo com base no tipo de aplicação que será executada

Se o limite for pequeno → o processo terá alto índice de page faults

Se o limite for alto → poucos processos compartilharão a memória, podendo

aumentar o swapping de processos

O no de frames pode ou não ser igual para todos os processos

Alocar o mesmo número de frames parece justo, porém pode não ser uma

boa opção, pois os processos possuem necessidades diferentes

Page 27: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Alocação de Páginas

Política de Alocação Variável

Durante a execução dos processos o número máximo de frames

pode variar em função de sua taxa de paginação e ocupação da

memória principal

Um processo com alta taxa de paginação

Pode ter o limite máximo de frames aumentado para diminuir o alto índice de

page faults

Um processo com baixa taxa de paginação

Pode ter seus frames alocados para outros processos

Este mecanismo é mais flexível, porem exige que o SO monitore

constantemente o comportamento dos processos

Page 28: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Substituição de Páginas

A política de substituição pode ser classificada segundo

o seu escopo: local ou global

Escopo Local

Apenas as páginas do processo que gerou o page fault podem

ser candidatas a substituição

As páginas dos demais processos não são avaliadas para

substituição

Escopo Global

Todas as páginas alocadas na MP são candidatas a substituição

Page 29: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Política de Substituição de Páginas

Existe uma relação entre o escopo da política de

alocação e de substituição

A política de alocação fixa permite apenas a política de

substituição com escopo local

A política de alocação variável permite as políticas de

substituição com escopo local e global

Variável e Local: de tempos em tempos, o número de frames

pode ser recalculado, mas a substituição é só local

Variável e Global: o número de frames varia quando os

processos alocam frames de outros processos → Mais adotada

Page 30: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de Substituição de Páginas

O maior problema na gerência da memória virtual com

paginação não é decidir qual página será carregada na

memória principal

A dificuldade é decidir qual página será retirada da memória

principal

Os algoritmos de substituição de página têm o objetivo

de selecionar os frames que tenham menor chance de

serem referenciados em um futuro próximo

Quanto mais sofisticado o algoritmo de substituição de

páginas, maior será a sobrecarga para o sistema

operacional

Page 31: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

OPT ou MIN: Algoritmo Ótimo

Possui a melhor taxa de falha de página dentre todos os

algoritmos

Substitui a página que ficará mais tempo sem ser referenciada

no futuro

Difícil saber de antemão a string de referência (a ordem em que

as páginas serão referenciadas durante a execução)

Como produz um resultado ótimo, é usado para estudos

comparativos para se testar a eficiência de outros algoritmos

Page 32: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

OPT

String de Referência:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

9 falhas de página

Page 33: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

FIFO (First In First Out)

Quando uma página precisar ser substituída, a página mais

antiga será escolhida para sair da memória

Fácil de entender e programar

É razoável pensar que uma página que já foi carregada para a

MP há mais tempo, já tenha sido referenciada o suficiente

Porém, isto nem sempre é verdade e seu desempenho pode não

ser bom

Pode ser que a primeira página carregada seja a mais utilizada no

sistema

Page 34: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

FIFO

String de Referência:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

15 falhas de página

Page 35: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

FIFO

Anomalia de Belady: a taxa de falha de página pode

aumentar enquanto a quantidade de quadros aumenta

String de Referência: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Page 36: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

LRU (Least Recently Used)

Substitui a página menos recentemente usada, ou seja aquela

cuja última referência foi feita há mais tempo

Se for considerado o princípio da localidade, é provável que

uma página que não tenha sido referenciada recentemente não

seja usada novamente em um futuro próximo

Boa estratégia

Possui maior sobrecarga pois deve manter atualizado o

momento do último acesso a cada página (usa um timestamp)

Page 37: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

LRU

String de Referência:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1

12 falhas de página

Page 38: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

NRU (Not Recently Used)

Usa um bit de referência para indicar se a página foi usada

recentemente ou não

Inicialmente, quando uma página é trazida para a memória, o

seu bit de referência é zero

Quando uma página que já está na memória é referenciada o

seu bit muda para 1

O algoritmo substitui a página que não foi usada recentemente

Pode ser mais eficiente ao se usar bits de referência adicionais

Page 39: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

Bits de Referência adicionais (NRU diferenciado)

Ao invés de utilizar um bit para indicar se a página foi referenciada

recentemente, utiliza-se uma cadeia de bits

Por exemplo, uma cadeia de 1 byte poderia indicar a referência a

uma página nos 8 últimos períodos

Uma página com bits de referência:

00000000 Indica que a página não teve acesso nos 8 últimos

períodos

11111111 Indica que uma página teve pelo menos 1 referência a

cada período

11000100 foi usada mais recentemente do que a página 01110111

Page 40: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

Bits de referência adicionais (NRU diferenciado)

Neste caso o algoritmo NRU trabalha com o bit de referência e o

bit de modificação (dirty bit), criando 4 classes de páginas:

(0,0) não usada recentemente, nem modificada melhor página

para substituir

(0,1) não usada recentemente, mas modificada não tão boa,

pois precisará ser escrita antes da substituição

(1,0) usada recentemente, porém não modificada é provável que

logo seja usada novamente

(1,1) usada e modificada recentemente é provável que logo seja

usada novamente, além de ter que ser escrita no disco antes de ser

substituída

Page 41: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

No algoritmo que usa o bit de referência e o bit de

modificação

A página substituída será aquela de menor classe

Considera também as páginas modificadas, tentando minimizar

a quantidade de E/S necessária

Page 42: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

Segunda Chance

Cria uma modificação no algoritmo FIFO, com o objetivo de não

substituir uma página intensamente usada

O bit de referência da página mais antiga é inspecionado:

Se o bit = 0, então a substituição prossegue

Se o bit = 1, então a página recebe uma segunda chance, seu bit

de referência é zerado e sua hora de chegada é reiniciada (vai pro

fim da fila)

Se uma página é usada com frequência, e seu bit está sempre

1, então ela não será substituída

Page 43: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

Segunda Chance

Suponha uma falha de página no tempo 20

A página mais antiga é A

Suponha que A possui o bit de referência = 1 e não será

substituída

Page 44: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

Algoritmo do Relógio (Segunda Chance Melhorado)

É utilizado o mesmo algoritmo

do segunda chance

Inspeciona o bit de referência

Porém, ao invés de inserir

uma página que obteve uma

segunda chance no final da

fila, utiliza-se uma fila

circular para melhorar o

desempenho

Page 45: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Algoritmos de substituição de páginas

Algoritmos baseados em contadores

São mantidos contadores com o número de referências feito a

cada página

LFU (Least Frequently Used)

A página com a menor contagem é substituída

Privilegia páginas bastante utilizadas

Páginas recém trazidas terão contadores com valores baixos

MFU (Most Frequently Used)

A página com maior contagem é substituída

Baseia-se no argumento que a página com menor contagem acabou de ser

trazida para a memória e ainda está para ser usada

Page 46: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Tamanho da Página

Na paginação não existe fragmentação externa: todo quadro

livre de memória poderá ser alocado a algum processo

Pode acontecer alguma fragmentação interna se os requisitos

de memória de um processo não coincidirem com os limites

da página

O último quadro alocado pode não estar completamente cheio

Exemplo:

Tamanho de Página = 2.048 bytes

Memória requerida pelo processo = 21.480 bytes

Processo alocará 11 quadros 10 completos (20.480 bytes) + 1.000 bytes

Resulta em uma fragmentação interna de 1.048 bytes, no último quadro

Page 47: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Tamanho da página

O tamanho da página está associado a arquitetura do

hardware

O tamanho da página é uma potência de 2

Normalmente está entre 512bytes e 16Mbytes

Se o tamanho da página é pequeno:

a fragmentação interna é menor

porém a tabela de páginas pode ficar muito grande

custos de E/S são menos eficientes

Page 48: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Tamanho da Página

Considere o seguinte exemplo

32 bits para endereçamento virtual (232 endereços)

páginas de tamanho = 4 Kbytes = 212 bits

Qual seria o tamanho da tabela de página por processo se cada

entrada da tabela de páginas ocupasse 4 bytes?

Desta forma teríamos o endereço virtual configurado da

seguinte forma:

20 bits para indicar o número da página

12 bits para indicar o deslocamento dentro da página

Tamanho da página = 220 4 bytes = 4 Mbytes

p = 20 bits d = 12 bits

Page 49: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Exercício 1

Um sistema operacional implementa gerência de memória virtual

por paginação.

Considere endereços virtuais com 16 bits e a tabela de páginas de

um processo com no máximo 256 entradas.

Indique para cada endereço virtual a seguir a página virtual em que

o endereço se encontra e o respectivo deslocamento dentro da

página

a) 30710

b) 204910

c) 230410

256 entradas = 28 entradas

São necessários: 8 bits para referenciar o

número da página

Sobram 8 bits para o deslocamento

16 bits

p p p p p p p p d d d d d d d d

Page 50: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Exercício 1

a) 30710

b) 204910

c) 230410

0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1

Página Virtual: 1

Deslocamento: 51

0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1

Página Virtual: 8

Deslocamento: 1

0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0

Página Virtual: 9

Deslocamento: 0

Page 51: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Exercício 2

Uma memória virtual possui páginas de 1024 endereços (para este

exemplo, 1024 bytes).

Existem 8 páginas virtuais e 4096 bytes de memória real.

A tabela de páginas de um processo está descrita abaixo, sendo

que o asterisco indica que a página não está na MP.

a) Faça a lista/faixa de todos os

endereços virtuais que irão

causar page fault.

b) Indique o endereço real

correspondente aos

seguintes endereços virtuais:

0, 1023, 1024, 6500 e 3728.

Página Frame

0 3

1 1

2 *

3 *

4 2

5 *

6 0

7 *

Page 52: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Exercício 2

1024 endereços = 210 → 10 bits de deslocamento

8 páginas = 23 páginas → 3 bits para indicar o número da página

Endereço Virtual:

4096 bytes de memória virtual dividida em páginas de 1024 bytes

→ 4 frames = 22 frames → 2 bits para indicar o número do frame

Endereço Real:

p p p d d d d d d d d d d

f f d d d d d d d d d d

Page 53: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Exercício 2

Faça a lista/faixa de todos os endereços virtuais que irão causar

page fault.

Considerando que cada página possui 1024 endereços e as

páginas 2, 3, 5 e 7 não estão na MP, então as seguintes faixas de

endereços causarão page fault:

2048 – 3071

3072 – 4095

5120 – 6143

7168 – 8191

Página Frame

0 3

1 1

2 *

3 *

4 2

5 *

6 0

7 *

Page 54: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Exercício 2

Indique o endereço real correspondente

aos seguintes endereços virtuais:

0

1023

1024

6500

3728

virtual 0 0 0 0 0 0 0 0 0 0 0 0 0

real 0 0 0 0 0 0 0 0 0 0 0 0

Página Frame

0 3

1 1

2 *

3 *

4 2

5 *

6 0

7 * virtual 0 0 0 0 0 0 0 0 0 0 0 0 0

real 0 0 0 0 0 0 0 0 0 0 0 0

virtual 0 0 0 0 0 0 0 0 0 0 0 0 0

real 0 0 0 0 0 0 0 0 0 0 0 0

virtual 0 0 0 0 0 0 0 0 0 0 0 0 0

real 0 0 0 0 0 0 0 0 0 0 0 0

virtual 0 0 0 0 0 0 0 0 0 0 0 0 0

real 0 0 0 0 0 0 0 0 0 0 0 0

Page 55: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

TLB

Suporte do HW

Normalmente cada processo possui a sua própria tabela de páginas

A tabela de páginas pode ser implementada como um conjunto de

registradores dedicados

Porém, se a tabela de páginas for muito grande o uso de registradores

se torna inviável

Nestes casos, a tabela de página é mantida na MP e um registrador

(PTBR - Page Table Base Register) guarda o endereço da tabela de

página

O problema é o tempo gasto para acessar um local de memória

referenciado pelo usuário: são necessários dois acessos à memória (um

para a tabela de página e outro para o endereço efetivo)

Page 56: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

TLB

Solução padrão é usar a TLB (Translation Look-aside buffer)

A TLB é implementada em um cache especial e fornece uma

pesquisa rápida

Cada entrada da TLB consiste em duas partes: uma chave e um valor

A TLB contém apenas algumas entradas da tabela de páginas

Quando um endereço lógico é gerado pela CPU, seu número de página

é buscado na TLB

Se o número de página for encontrado, seu número de quadro estará

disponível imediatamente

Se o número de página não for encontrado (TLB miss), deve então ser feita

uma referência a tabela de página

Page 57: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Hardware de Paginação com TLB

Page 58: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação em Múltiplos Níveis

Em sistemas que implementam apenas um nível de

paginação, o tamanho das tabelas de páginas pode ser um

problema

Por exemplo, em um sistema

onde vários processos estejam residentes na MP, é difícil e

custoso gerenciar tabelas de 4 Mbytes

0

1

2

(2 -1)20

Tabela de páginas

Desloc.NPV

12 bits20 bits

Endereço Virtual

32 bits

4 Mb

Page 59: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação em Múltiplos Níveis

Uma boa solução é usar tabelas de páginas em múltiplos

níveis

No esquema da paginação com dois níveis existe uma tabela

diretório que possui uma entrada para cada tabela de página

Neste caso, cada entrada da tabela diretório possuirá:

O número da página de nível 1 (entrada da tabela de diretório)

Permite localizar e endereço da tabela de páginas na tabela diretório

O número da página de nível 2 (entrada da tabela de página)

Permite localizar o endereço do frame na tabela de páginas

O deslocamento dentro da página

Page 60: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação em Múltiplos Níveis

Paginação em 1 nível

220 entradas na TP e cada

entrada com 4 bytes

220 x 4 bytes = 4 Mbytes

Tamanho da TP = 4 Mbytes

Paginação em 2 níveis

210 entradas na tabela de

diretório e cada entrada

com 4 bytes

210 x 4 bytes = 4 Kbytes

Tamanho da Tabela de

diretório = 4 Kbytes

Tabela diretório

Desloc.12 bits

NPV 110 bits

Endereço Virtual

NPV 210 bits

Tabela de páginas

frame

Page 61: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação em Múltiplos Níveis

A paginação em 2 níveis pode ser estendida para mais

níveis

A vantagem da paginação em múltiplos níveis é que

estarão residentes na MP apenas as tabelas de páginas

realmente necessárias

Reduz o espaço ocupado na memória principal

Para evitar que ocorra muito page fault, a ideia é que o

princípio da localidade também seja aplicado às tabelas

de mapeamento

Page 62: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

TLB

A gerência de memória virtual utiliza a técnica de

mapeamento para traduzir endereços virtuais em reais

O mapeamento implica em pelo menos dois acessos à MP

Um acesso para a tabela de páginas

E outro acesso no endereço efetivo (frame)

Para agilizar o acesso:

A tabela de páginas pode ser implementada como um conjunto

de registradores dedicados

Porém, se a tabela de páginas for grande o uso de registradores

se torna inviável

Page 63: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

TLB

A solução:

Seguindo o princípio da localidade, a maioria das aplicações

referencia um número reduzido de frames na MP por vez

Logo, apenas uma parte da tabela de páginas é realmente

necessária na memória principal

Com base neste princípio foi introduzida uma memória

especial chamada TLB (Translation Lookaside Buffer)

A TLB é implementada como uma memória cache

Possui o mapeamento apenas dos endereços virtuais mais

recentemente referenciados

Page 64: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

TLB

A TLB fornece uma pesquisa rápida

Cada entrada da TLB consiste em duas partes: uma chave e um

valor

A TLB contém apenas algumas entradas da tabela de páginas

Quando um endereço lógico é gerado pela CPU, seu número de

página é buscado na TLB

Se o número de página for encontrado, seu número de quadro

estará disponível imediatamente

Se o número de página não for encontrado (TLB miss), deve então

ser feita uma referência a tabela de página

Page 65: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Hardware de Paginação com TLB

Page 66: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

É a técnica de gerência de memória onde o espaço de

endereçamento virtual é dividido em blocos de tamanhos

diferentes chamados segmentos

Um programa é dividido logicamente em sub-rotinas e

estruturas de dados, que são alocados em segmentos na

memória principal

PROGRAM Segmento;

VAR A: ARRAY... C: ...

PROCEDURE X;

END;

FUNCTION Y;

END;

BEGIN

END.

Procedimento X

Programa Principal

Função Y

Array A

Variável C

.

.

.

Page 67: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

A principal diferença entre paginação e segmentação é:

Na paginação os programas são divididos em páginas de

tamanho fixo sem qualquer ligação com a sua estrutura do

programa

A segmentação permite uma relação entre a lógica do

programa e a sua divisão na memória

Page 68: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

A definição dos segmentos é realizada pelo compilador

O espaço de endereçamento virtual de um processo possui

um número máximo de segmentos

Cada segmento pode variar de tamanho dentro de um limite

O tamanho do segmento pode ser alterado durante a

execução do programa

Espaço de endereçamento independentes permitem que uma

sub-rotina seja alterada sem a necessidade de recompilar o

programa principal e outras sub-rotinas

Page 69: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

Segmentos possuem espaço de endereçamento

independentes

Page 70: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

O mecanismo de mapeamento é semelhante ao da

paginação, neste caso, os segmentos são mapeados através

de tabelas de segmentos

Cada processo possui sua própria tabela de segmentos

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

e por um deslocamento

O número do segmento virtual identifica a entrada da tabela de

segmentos que contém o endereço do segmento físico

O deslocamento indica a posição do endereço virtual em relação ao

endereço inicial do segmento

O endereço físico é a combinação do endereço do segmento e do

deslocamento

No do segmento (sv) Deslocamento (d)

Page 71: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

Tradução do

endereço virtual

Deslocamento

Endereço virtual

Desloc.

End. do segmento

ETS

Tabela de segmentos

Desloc.

Segmento namemória principal

Deslocamento

Endereço físico

Segmento virtual

Page 72: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

Cada entrada da tabela de segmentos possui

informações adicionais como:

Tamanho: especifica o tamanho do segmento

Bit de validade: indica se o segmento está na MP

Bit de modificação: indica se o segmento foi alterado

Bit de referência: indica se o segmento foi referenciado

recentemente

Bit de proteção: indica o tipo de acesso ao segmento

Page 73: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

Uma vantagem da segmentação em relação a

paginação é

A facilidade em lidar com estruturas de dados dinâmicas

O tamanho do segmento pode ser facilmente alterado

Na paginação, a expansão de um vetor implica na alocação de

novas páginas e consequentemente no ajuste da TP

Diferentemente da paginação, a segmentação não

possui fragmentação interna

Existe a fragmentação externa, quando áreas livres não são

grandes o suficiente para alocar novos segmentos

Page 74: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

Fragmentação externa

Page 75: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

Apenas os segmentos referenciados são levados para a MP

Se as aplicações não forem desenvolvidas em módulos,

grandes segmentos estarão na MP desnecessariamente

Para alocar segmentos na MP, o sistema operacional

mantém informações com as áreas livres e ocupadas da

memória

Quando um novo segmento é referenciado o SO seleciona

um espaço livre suficiente para que o segmento seja alocado

na MP

Pode ser adotada a política best-fit, first-fit ou worst-fit

Page 76: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação com Paginação

Tem o objetivo de combinar vantagens das duas

técnicas

Paginação

Evita a fragmentação externa

Segmentação

Mais fácil para lidar com estruturas de dados dinâmicas, já

que o tamanho do segmento pode ser facilmente alterado

Page 77: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação com Paginação

Divide o espaço de endereçamento virtual em segmentos

Cada segmento é dividido em páginas

Na visão do programador a sua aplicação continua mapeada

em segmentos de tamanhos diferentes

Por outro lado, o sistema trata cada segmento como um

conjunto de páginas do mesmo tamanho

Assim, um segmento não precisa estar contíguo na memória

Elimina o problema da fragmentação externa encontrado na

segmentação pura

Page 78: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação com Paginação

O endereço virtual é formado por:

Número do segmento virtual

Número da página virtual

Deslocamento

O número do segmento virtual indica a entrada da tabela de

segmentos

A tabela de segmentos indica o endereço da tabela de páginas que contém o

endereço

O número da página identifica a entrada da tabela de páginas

O deslocamento indica a posição do endereço dentro da página

O endereço real é o endereço do frame encontrado na TP

combinado com o deslocamento

No do segmento (sv) No da página (p) Deslocamento (d)

Page 79: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Segmentação

com Paginação

Tradução do

endereço virtual

Endereço do frame Deslocamento

DeslocamentoNum.

segmentoNum.

página

Endereço virtual

Segmento virtual

End. da tabela de páginas

ETS

Tabela de segmentos

Endereço do frame

ETP

Tabela de páginas

Endereço físico

Page 80: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação ✕ Segmentação

Consideração Paginação Segmentação

O programador precisa saber qual técnica

está sendo usada? Não Sim

O espaço de endereçamento virtual pode

exceder o tamanho da memória física? Sim Sim

Quantos espaços de endereçamento

lineares existem? 1 Vários

Os procedimentos e dados podem ser

distinguidos e protegidos separadamente? Não Sim

O compartilhamento de procedimentos é

facilitado? Não Sim

Page 81: Gerência de Memóriaboeres/slidesSOI/SOSI-aula5-memoria... · A técnica de paginação antecipada pode ser empregada no momento da criação de um processo Quando um processo é

Paginação ✕ Segmentação

Consideração Paginação Segmentação

Os programas são divididos em

pedaços de tamanhos iguais Sim Não

Possui fragmentação Sim, interna Sim, externa

Por que esta técnica foi inventada?

Para se obter um

espaço de

endereçamento maior

do que a memória

física

Para permitir a divisão

dos programas

logicamente e facilitar o

compartilhamento e

proteção