• Nenhum resultado encontrado

Aula11 MemoriaVirtual

N/A
N/A
Protected

Academic year: 2021

Share "Aula11 MemoriaVirtual"

Copied!
65
0
0

Texto

(1)

Sistemas Operacionais

(2)
(3)

O que vimos na aula

passda?

• Gerenciamento de memória • Paginação

• Segmentação

(4)
(5)
(6)

Memória Virtual

• Normalmente, os programas são maiores do que a

memória física disponível.

• Normalmente, não executamos todo o programa de

uma só vez.

• A memória virtual é uma técnica que permite a

execução de processos que não estão completamente na memória.

• Livra os programadores dos problemas de limitação

(7)

Memória Virtual

• Em muitos casos não precisamos executar o

programa inteiro, o que facilita o uso da memória virtual.

• Por exemplo:

• Código para condições de erros

• Arrays, listas e tabelas recebem mais memória do que devia

(8)

Memória Virtual

• Essa abordagem gera alguns benefícios: • Um programa não é mais restrito pela

quantidade de memória física livre

(9)
(10)

Memória Virtual

A memória virtual é implementada utilizando uma paginação

por demanda

• A paginação por demanda faz uso de swap

• Os processos residem na memória secundária e estes

são passados para memória principal quando forem executados.

• No entanto, apenas as páginas que são necessárias são

passadas para memória (lazzy swapper).

O responsável por essa troca é o swapper ou paginador

(11)
(12)

Memória Virtual

• Na paginação por demanda, o paginador só carregar

na memória as páginas necessárias.

• Sendo assim, haverá páginas que estarão

armazenadas na memória principal e páginas que estarão armazenadas na memória física.

• Precisamos de um mecanismo que indique na tabela

de página quais páginas serão buscadas na memória e quais serão buscadas na memória secundária.

(13)

Memória Virtual

• Como implementar isso?

• Através dos bits válido/inválido na tabela de página. • Válido: a página associada é válida e está na

memória

• Inválido: a página não é válida (ou seja, não está no

espaço de endereços lógicos do processo) ou é válida, mas atualmente está no disco.

• Durante o processo de tradução, se o bit válido-inválido

(14)
(15)

Page Fault

• Para tratar a falta de página:

• Verificamos um tabela interna para esse processo, a fim de determinar se a

referência foi um acesso de memória válido ou inválido.

• Se a referência foi inválida, terminamos o processo. Se foi válida, mas ainda

não trouxemos essa página, então a página é trazida para a memória.

• Encontramos um quadro livre

• Preparamos uma operação de disco para ler a página desejada para o quadro

recém-alocado.

• Quando a leitura do disco tiver sido concluída, modificamos a tabela interna

mantida com o processo e a tabela de página, para indicar que a página agora está na memória.

(16)
(17)

Paginação por Demanda

• O suporte de hardware para a paginação por

demanda é composto por:

Tabela de página: armazena uma entrada como

inválida por meio de um bit válido-inválido ou de um valor especial de bits de proteção.

Memória secundária: mantém as páginas que não

estão presentes na memória principal.

• swap space: espaço alocado no disco para

(18)

Desempenho

• A paginação por demanda pode afetar o desempenho de

um sistema computacional.

O desempenho é medido calculando o tempo de acesso

efetivo para a memória paginada por demanda.

• te = (1 - p) * ma + p * tf, onde: • te: tempo de acesso efetivo

• ma: tempo de acesso à memória

(19)

Desempenho

• A falha de página ocasiona em uma série de ações

do sistema computacional, que podem ser resumidas a três passos:

1. Atender a interrupção de falha de página 2. Ler a página para a memória

(20)

Desempenho

• Se considerarmos:

• ma = 200 nanosegundos • tf = 8 milisegundos

• Se um acesso entre 1000 causar falta de página

• O tempo de acesso efetivo é de 8,2 microsegundos. Causando um atraso de 40x.

• É importante manter baixa a taxa de falha de página em um

sistema de paginação por demanda. Caso contrário, o tempo de acesso efetivo aumenta, atrasando bastante a execução do

(21)

Substituição de Página

• O objetivo da paginação é aumentar o grau de

multiprogramação dos sistemas computacionais, o que nos leve a uma superalocação de memória.

• Isso ocorre quando um processo que está em

execução dispara um falha de página. O SO determina onde está a página no disco, mas

descobre que não existe quadros disponíveis na memória principal.

(22)

Substituição de Página

• O que fazer?

• Terminar o processo

• Retirar um processo inteiro da memória,

diminuindo a multiprogramação (Thrashing)

(23)

Substituição de Página

• A substituição de página consiste em:

• Se nenhum quadro estiver disponível, encontramos

um que não esteja sendo usado e o liberamos.

• Podemos liberar um quadro escrevendo seu

conteúdo no swap space e alterando a tabela de página para indicar que a página não está mais na memória.

• Podemos utilizar o espaço liberado para manter a

(24)

Substituição de Página

• Se nenhum quadro estiver livre, a substituição aumenta o

tempo para tratamento da falta de página.

• São realizadas 2 transferência de página (uma para fora

da memória e outra pra dentro).

• Isso ocasiona o aumento do tempo acesso efetivo da

memória.

• Solução: bit de modificação (ou bit de sujo)

• indica se a página que está na memória foi modificada

(25)

Substituição de Página

• Cada sistema operacional possui seu próprio esquema

de substituição.

• Os algoritmos são avaliados através da taxa de falha

de página.

• Avaliamos um algoritmo executando-o em um

determinado conjunto de referências à memória e calculamos a quantidade de falhas de página.

Esse conjunto de referência é denominado de string

(26)

Substituição de Página

• Se utilizarmos 100 bytes por página, podemos

reduzir a string de referência para:

• 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1

0100 0432 0101 0612 0102 0103 0104 0101 0611 0102 0103 0104 0101 0610 0102 0103 0104 0101 0609 0102 0105

(27)

Substituição de Página

• Para determinar a quantidade de falhas de

páginas para um determinada string de referência e algoritmo de substituição, precisamos saber a

quantidade de quadros disponíveis.

• Quanto mais quadros disponíveis, menor o número

(28)
(29)

Substituição de Página

• Serão apresentados diversos algoritmos de

substituição de página

• Com a finalidade de compará-los, vamos adotar: • String de referência:

• 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 • Três quadros na memória

(30)

FIFO

• Algoritmo mais simples de substituição • Substitui a página mais antiga

(31)

FIFO

• Algoritmo mais simples de substituição • Substitui a página mais antiga

(32)

FIFO

• Desvantagens:

• Nem sempre o desempenho é bom

• A página escolhida para substituição pode ser

uma página que é usada com freqüência.

• Isso causaria uma nova substituição de página

quase que imediatamente.

(33)

FIFO

• Considere a seguinte string de referência: • 1,2,3,4,1,2,5,1,2,3,4,5

(34)

Algoritmo Ótimo

• Um algoritmo de substituição de página ótimo

possui a menor taxa de falha de página de todos os algoritmos

• Não sofre a anomalia de Belady

• Também chamado de OPT ou MIN

• Consiste em substituir a página que não será

(35)

Algoritmo Ótimo

• Esse algortimo é melhor ou pior do que o FIFO? • Quantas falhas de página?

(36)

Algoritmo Ótimo

• Esse algortimo é melhor ou pior do que o FIFO? • Melhor

• Quantas falhas de página? • 9

(37)

Algoritmo Ótimo

• Nenhum algoritmo de substituição é melhor pode

processar essa string de referência em três quadros com menos de nove falhas.

• No entanto, ele é difícil de implementar já que é

preciso ter um conhecimento prévio de toda string de referência.

• Por ser um algoritmo ótimo, ele é mais usado para

(38)

LRU

• O LRU é uma aproximação do algoritmo OPT

• Ao invés de utilizar a hora que a página deverá ser

utilizada (OPT), utilizamos a informação do passado recente.

• Ou seja, substituimos a página que não foi usada

(39)

LRU

• Nessa caso, o algoritmo LRU produz 12 falhas de

página.

(40)

LRU

• Podemos implementar o LRU de duas formas:

Contadores: a cada tabela de página associamos um

contador. A cada referência da página, esse contador é incrementado. Será substituída a página com menor

valor do contador.

Pilha: Nessa técnica é mantida uma pilha de números

de página. Sempre que uma página é referenciada ela vai para o topo da pilha. A página substituída será

aquela no final da pilha.

(41)

Aproximação LRU

• Nem sempre o hardware permite implementar um

mecanismo como o do LRU.

• Nestes casos, podemos utilizar um hardware mais

simples para implementar os algoritmos de substituição.

• Os resultados são aproximados aos valores do

(42)

Aproximação LRU

• Existem três métodos:

• Algoritmo de bits de referência • Algoritmo de segunda chance

(43)

Aproximação LRU

• Bit de referência

• Cada página é referenciada por um bit, inicialmente = 0 • Quando uma página é referenciada, marca-se seu bit de

referência para 1

• A substituição será feita na página que tiver o bit de

referência igual a 0 (se existir).

• No entanto, não se sabe a ordem.

• Uma outra opção é usar 8 bits permitindo obter informações

(44)

Aproximação LRU

• Algoritmo de segunda chance (também chamado de algoritmo de relógio)

• Consiste em um algoritmo FIFO

• No entanto, quando uma página for selecionada para substituição analisamos seu bit de referência:

• Se for 0, substituimos essa página

• Se for 1, damos uma segunda chance • Marcamos o bit como zero

(45)
(46)

Aproximação LRU

• Algoritmo da segunda chance melhorado

• Funciona da mesma forma que o algoritmo segunda chance,

no entanto ao invés de considerar apenas um bit, considera um par ordenado de bits 


(bit de referência, bit modificação):

• (0,0): nem usada recentemente e nem modificada • (0,1): não usada recentemente, mas modificada

• (1,0): usada recentemente, mas ainda não modificada • (1,1) usada recentemente e modificada

(47)

Aproximação LRU

• Algoritmo da segunda chance melhorado

• Funciona da mesma forma que o algoritmo segunda chance, no entanto ao invés de considerar

apenas um bit, considera um par ordenado de bits 
 (bit de referência, bit modificação):

• (0,0): nem usada recentemente e nem modificada • melhor página para substituir

• (0,1): não usada recentemente, mas modificada

• não tão bom, pois a página precisará ser escrita antes de substituir • (1,0): usada recentemente, mas ainda não modificada

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

• é provável que logo seja usada novamente, e a página terá de ser escrita no disco

(48)

Contagem

• Algoritmo que mantém um contador do número de referências

feitas a cada página.

• Pode ser de dois tipos:

• LFU (Least Frequently Used - Menos frequentemente usada) • Substitui a página com menor valor do contador

• MFU (Most Frequently Used - Mais frequentemente usada) • Baseado no argumento de que a página com menor

contagem provavelmente acabou de ser trazida para a memória e ainda está para ser usada.

(49)

Alocação de Quadros

• Um outro ponto importante do gerenciamento de

memória virtual é como alocamos os quadros entre diversos processos?

• A alocação de quadros é limitada:

• Não podemos alocar mais do que a quantidade total

de quadros disponíveis (ao menos que tenha compartilhamento de quadros)

• Cada processo deve receber uma quantidade

(50)

Alocação de Quadros

• A alocação de uma quantidade mínima está

diretamente relacionada ao desempenho.

• A medida que a quantidade de quadros alojados

diminui, a taxa de falha de página aumenta, atrasando a execução do processo.

• A quantidade mínima de quadros é definida pela

(51)

Alocação de Quadros

• Algoritmos para alocação

Alocação igual (equal allocation)

• Modo mais simples de dividir os quadros entre

processos.

• Os quadros são divididos em fatias iguais: • m quadros, n processos

(52)

Alocação de Quadros

• Algoritmos para alocação

Alocação igual (equal allocation)

• Não garante uma boa divisão dos quadros entre os processos • Considere o seguinte cenário:

• Quadros livres: 62 | Tamanho do quadro: 1KB • Processo A: 10KB | Processo B: 127 KB

• Divisão: 31 quadros para A e 31 para B • Podemos dividir melhor? Como?

(53)

Alocação de Quadros

• Algoritmos para alocação

Alocação proporcional (proportional allocation)

• Alocamos a quantidade disponível a cada processo de acordo com seu tamanho.

• O número de quadros para cada processo é dado por:

• a_i = s_i/S x m, onde S é tamanho total da memória virtual, s_i o tamanho do processo i e m o número de quadros

disponíveis

• No exemplo do slide anterior, teríamos 4 quadros para o processo A e 57 para o processo B

(54)

Alocação de Quadros

• Algoritmos para alocação

Alocação proporcional (proportional allocation)

• Nesse tipo de alocação podemos variar o

número de quadros por processo de acordo com o grau de multiprogramação

• Maior grau -> os processos perdem quadros

(55)

Alocação de Quadros

• Algoritmos para alocação

Alocação proporcional (proportional allocation)

• Pode ser usado a prioridade para distribuir os quadros

• Processos com maior prioridade recebem mais quadros

• Pode usar também a combinação de ambas informações: tamanho e prioridade.

(56)

Alocação global versus local

Alocação global: permite que um processo

selecione um quadro de substituição do conjunto de todos os quadros; ou seja, um processo pode apanhar um quadro do outro.

Alocação local: exige a cada processo selecionar

somente a partir do seu próprio conjunto de quadros alocados.

(57)

Thrashing

• Acontece quando o processo não possui páginas

suficientes

• Um processo está realizando thrashing quando

este está gastando mais tempo fazendo paginação do que executando.

• O thrashing resulta em grandes problemas de

(58)

Thrashing

• Se um processo não possui páginas suficientes, a taxa de falha de página será alta. Isso ocasiona:

• Baixa utilização da CPU

• O sistema operacional pensa que é necessário aumentar o grau de multiprogramação e adiciona um novo processo ao sistema • Essa ação aumenta ainda mais a taxa de falha de página que

resulta e uma utilização mais baixa de CPU

• Essa nova ação leva ao SO adicionar mais um processo ao

sistema e assim por diante em um ciclo que prejudica cada vez mais o sistema.

(59)
(60)

Thrashing

• Uma forma de evitar o thrashing é controlar a

freqüência de falha de página

Se a taxa passar um determinado threshold

máximo fornecemos mais quadros

Se a taxar passar um determinado threshold

(61)

Arquivos Mapeados na

Memória

• Podemos utilizar o espaço de endereçamento virtual

para endereçar arquivos que são muito usados.

• O mapeamento de um arquivo na memória é realizado

pelo mapeamento de um bloco de disco a uma página (ou páginas) na memória.

• A atualização do arquivo no disco é realizado

periodicamente.

• Quando o arquivo é fechado todos os dados são

(62)

Arquivos Mapeados na

Memória

• Esse esquema permite o compartilhamento do

(63)

Outras Considerações

• Pré paginação

• Tamanho da página • Alcance da TLB

• Estrutura do programa

(64)
(65)

Referências

Referências

Documentos relacionados

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

[r]

Nossa vivência durante o processo de doutoramento e na formação do Curso EPS em Movimento, assim como outros estudos (KLEBA et al., 2007; TOMBINI, 2010;

A partir de pesquisa realizada junto ao Comitê Popular da Copa e das Olimpíadas do Rio de Janeiro, o artigo analisa alguns efeitos colaterais do processo de preparação e

A) Considera-se, para efeito de aplicação do Banco de Horas, a jornada semanal de trabalho prevista no contrato de trabalho do empregado. B) As horas excedentes ao estabelecido

 Tempo consumido pela MMU para a tradução (inclui o hit/miss ratio na TLB e eventuais tempo de acesso tabela de página em memória).. eventuais tempo de acesso tabela de página

bastando igualar-se ao último lance ofertado,o que não interfere na continuidade da disputa, nesse caso, o interessado deverá avisar ao Leiloeiro no início do leilão sobre

Projetos Projeto sujeito aos Princípios do Equador Projeto não sujeito aos Princípios do Equador Projeto de Crédito Imobiliário Garantias Análises feitas em conjunto com