sistemas operacionais i memória virtual · memória dividida em unidades de alocação ......
TRANSCRIPT
May 6, 2008 1Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Sistemas Operacionais IMemória Virtual
Antônio Augusto FröhlichGeovani Ricardo Wiedenhoft
[email protected]://www.lisha.ufsc.br/~grw
May 6, 2008
May 6, 2008 2Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Motivação Limitação do espaço físico
Programas aumentam + do que o espaço físico
Armazenar todos espaços lógicos de um programa em espaços físicos
Armazenar todos os programas em espaços físicos
:(
May 6, 2008 3Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Motivação Técnica Simples – sem trocas/paginação
● Monoprogramação – 1 programa/vez
May 6, 2008 4Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Motivação
May 6, 2008 5Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Motivação Técnica Simples – sem trocas/paginação
● Monoprogramação – 1 programa/vez
● Multiprogramação – partições fixas na memória
May 6, 2008 6Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Motivação
May 6, 2008 7Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Motivação Problemas:
● Programa limitado pelo tamanho do espaço físico● Desperdício de memória – manter código ñ utilizado
(Rotinas de tratamento de erro)● Programas ficam na memória até o término – prejudica
programas que estão ativos e necessitam executar
Economia de memória caso o programa utilize apenas a memória necessária
May 6, 2008 8Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping Algoritmo:
● Carregar cada processo inteiro – Swap in
● Executar temporariamente
● Devolver o processo para o disco – Swap out
May 6, 2008 9Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping
May 6, 2008 10Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping Tamanhos e números da partições da memória
variam dinamicamente
Otimiza a utilização da memória
Problemas:● Lacunas entre alocações – Compactação de memória● Tamanho de memória que deve ser alocado?
●Mover processo para outra espaço físico●Trocar processos para o disco●Alocar um espaço extra
May 6, 2008 11Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping
May 6, 2008 12Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping – Gerenc. de Memória – Mapas de Bits Memória dividida em unidades de alocação Tamanho da unidade Menor unidade – Maior mapa de bits Maior unidade pode desperdiçar memória 0 – Livre | 1 – Ocupado Problema:
● Desempenho na busca de um espaço livre no mapa(0s consecutivos)
● Processo lento apesar de ser uma técnica simples
May 6, 2008 13Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping – Gerenc. de Memória – Listas Encadeadas Lista de segmentos alocados e livres Segmento
● processo (P) ou lacuna (H), ● endereço de início, ● comprimento e ● ponteiro para próxima entrada
Lista ordenada pelos endereços Processos liberados – lacunas vizinhas podem
ser agrupadas Algoritmos de localização
May 6, 2008 14Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping – Gerenc. de Memória – Listas Encadeadas Algoritmos de localização – 1 lista ordenada por
endereço● Primeiro ajuste
●Rápido, pesquisa o mínimo possível● Próximo ajuste
●Pesquisa começa do ponto em que parou da última pesquisa● Melhor ajuste
●Pesquisa a menor lacuna necessária, para ñ dividir lacunas●Mais lento●Tende a a gerar lacunas minúsculas e inúteis
● Pior ajuste●Pega a maior lacuna disponível
May 6, 2008 15Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping – Gerenc. de Memória – Listas Encadeadas Algoritmos de localização – listas separadas
(processos e lacunas) ordenada por tamanho● Otimização na alocação● Melhor ajuste semelhante a primeiro ajuste● Próximo ajuste sem sentidol● Ajuste rápido
●Possui listas separadas para alguns tamanhos comuns
● Problema: Verificar se lacunas vizinhas podem ser agrupadas é extremamente lentoCaso ñ ocorram os agrupamentos – a memória rapidamente estará fragmentada em lacunas pequenas
May 6, 2008 16Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Swapping – Gerenc. de Memória
May 6, 2008 17Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Memória Virtual Execução de um processo sem que ele esteja
completamente na memória Permite alocar + memória do que o tamanho da
memória física Manter em memória apenas os
segmentos/páginas necessários USER: Memória contínua e inacabável SO + Hardware: Mapeamento do endereço virtual
para o endereço físico
May 6, 2008 18Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Memória Virtual
May 6, 2008 19Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Memória Virtual Vantagens Aumenta o grau de multiprogramação Aumenta a utilização da CPU Reduz o sobrecusto de Swap – operações de E/S Capacidade de executar programas maiores que
a capacidade disponível da memória Sem desperdício de memória
May 6, 2008 20Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Memória Virtual Implementação Hardware deve suportar paginação e/ou
segmentação SO deve controlar o fluxo de páginas/segmentos
entre a memória secundária e a principal Necessidade de gerenciar
● Áreas livres e ocupadas● Mapeamento entre a memória virtual e física● Busca de páginas/segmentos “faltantes” ● Substituição de páginas/segmentos
Partição de swap● Área destinada a armazenar páginas/segmentos● Organizado diferente do sist. de arq. – otimizar acesso
May 6, 2008 21Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Memória Virtual Busca de páginas faltantes
● Paginação por demanda
● Paginação antecipada●Sistema tenta prevê a utilização da página e faz uma busca
antecipada – antes dela ser referenciada●Princípio da localidade – probabilidade que acessos a
instruções e a dados sejam limitados a um trecho●Ex: Execução da instrução i+1 segue a exec. da instr. i●Ex: Laços for, while, dowhile●Acessos a elementos de vetores
May 6, 2008 22Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Paginação por Demanda Forma mais comum de implementação de
memória virtual
Similar a paginação com Swapping● Invés de ser realizado o swapin e swapout de um
processo, se realiza o swapin e swapout de uma página (pagein/out)
Carrega uma página para a memória somente quando ela é necessária (página é referenciada)
May 6, 2008 23Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Paginação por Demanda Uma referência está sempre associada a uma
página● Página presente na memória● Não presente na memória (pagefault)
Necessita conhecimento de quais páginas estão na memória principal e quais estão no disco● Bit válido/inválido associado a cada entrada na tabela
de páginas MMU gera uma exceção (pagefault) sempre que
uma página ausente é acessada
May 6, 2008 24Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Paginação por Demanda Reduz operações de E/S
● Carrega apenas a(s) página(s) necessária(s)
Reduz a quantidade de memória por processo
Aumenta o grau de multiprogramação
May 6, 2008 25Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Paginação por Demanda
May 6, 2008 26Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Desempenho da Paginação por Demanda Fórmula:
p – taxa de falta de páginas
EX: tempo de acesso = 100ns tempo page_fault = 25ms = 25.000.000ns p = 1/1000te = (1p).100 + p.25000000te = 100 + 24999900.pte = 25us (250 . t_acesso)
tefetivo=1−p⋅t acessop⋅t pagefault
May 6, 2008 27Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Desempenho da Paginação por Demanda Exemplo:
Objetivo de aumetar no máximo em 10% o tempo de acesso
110 = 100 + p . 2500000010 = 25000000.p p = 0.0000004
1 page fault a cada 250000 acessos Melhorar o desempenho
● Diminuir a taxa de falta de páginas● Acelerar procedimentos de leitura de disco
●Procedimento de swap
May 6, 2008 28Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Política de Carga de Páginas Carrega uma página para uma moldura 2 situações
● Moldura livre: carrega página na moldura● Não existe moldura livre:
●Libera espaço – transfere página da memória para o disco (área de swap) – pageout
●Política de substituição para seleção da página “vítima” Otimizações:
● Carregar mais de uma página para a memória● Nem toda página necessita pageout
●Páginas não modificadas●Páginas readonly código
May 6, 2008 29Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Política de Localização Localiza na memória real as páginas de um
processo
Hardware de paginação/segmentação do processador – MMU● Transparente sob o ponto de vista do SO
May 6, 2008 30Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Política de Substituição de Páginas na Memória Possibilidade de todas as molduras da memória
fisíca estarem ocupadas Utilizado para liberar uma moldura atender a
falta de página Reponsável pela escolha de uma página “vítima”
● Determinar a página menos necessária Algoritmo ótimo Página que vai demorar mais
para ser acessada Algoritmos
● Firstcomefirstserved (FCFS)● Least Recently Used (LRU)● Baseado em contadores
May 6, 2008 31Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Bits Auxiliares Auxiliar os mecanismos de substituição de
páginas Bit de sujeira (dirty bit)
● Modificada ou não durante a execução do processo● Páginas não alteradas não necessitam de pagaout
Bit de referência (reference bit)● Página acessada dentro de um intervalo de tempo
Bit de tranca (lock bit)● Bloqueia página para não ser selecionada como
“vítima”
May 6, 2008 32Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Política de Substituição de Páginas na Memória Todas as molduras da memória ocupadas Liberar espaço atender a falta de página Reponsável pela escolha de uma página “vítima”
● Determinar a página menos necessária Critérios dos algoritmos
● Minimizar falhas de páginas● Minimizar E/S
Ex: Algoritmo ótimo● Firstcomefirstserved (FCFS)● Least Recently Used (LRU)● Baseado em contadores
May 6, 2008 33Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Bits Auxiliares Bit de sujeira (dirty bit)
● Modificada ou não durante a execução do processo● Páginas não alteradas não necessitam de pagaout
Bit de referência (reference bit)● Página acessada dentro de um intervalo de tempo
Bit de tranca (lock bit)● Bloqueia página para não ser selecionada como
“vítima”
May 6, 2008 34Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo Ótimo Página que vai demorar mais para ser acessada Número de instruções executadas antes da
página ser referenciada Adiar a falha de página Não implementável
● Necessita conhecimento do futuro Através de simulação
● Objetivo: avaliar algoritmos
May 6, 2008 35Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo Ótimo
May 6, 2008 36Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo FIFO Página Primeira a Entrar, Primeira a Sair FirstCome FirstServed (FCFS)
Substitui a página que está mais tempo na memória
Alocação através de um buffer circular – fila FIFO
Desvantagem: Página substituída pode ser utilizada logo em seguida
May 6, 2008 37Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo FIFO
May 6, 2008 38Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo FIFO Aumentar memória não significa diminuir número
de falha de página
May 6, 2008 39Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo NRU (Not Recently Used) Bit de referência Bit de modificação Início do processo – bits configurados para 0 Cada interrupção do relógio – bit de referência =0 Dividido em 4 categorias
● Classe 0: ñreferenciada, ñmodificada● Classe 1: ñreferenciada, modificada● Classe 2: referenciada, ñmodificada● Classe 3: referenciada, modificada
Melhor remover página modificada e ñreferenciada no período de um tique de relógio
May 6, 2008 40Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo LRU Least Recently Used Usa o passado recente para aproximar o futuro
próximo Substitui a página que não tem sido usada pelo
maior período de tempo● Princípio da localidade – menor probabilidade de ser
acessada em um futuro próximo
Desvantagem: Cada página deve ter a “data” da última referência● Overhead – atualização e seleção● Outras: Suporte em Hardware
May 6, 2008 41Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo LRU
May 6, 2008 42Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo NFU Not Frequently Used Contador associado a cada página Cada interrupção soma o valor do bit de
referencia Falha de página é selecionada a página com o
contador menor
Desvantagem: Algoritmo não esquece de nada
May 6, 2008 43Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo da Idade Modificação no algoritmo NFU Contador é deslocado 1 bit à direita antes de o bit
de referencia ser adicionado O bit de referencia é adicionado ao bit mais à
esquerda em vez de ao bit mais à direita
May 6, 2008 44Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo de Segunda Chance Modificação de FIFO Verifica o bit de referência
● Bit 0 – substitui a página● Bit 1 – atribui 0 e coloca no final da fila de substituição
Impede a substituição de uma página intensamente utilizada
Desvantagem: Move páginas na lista desnecessariamente
May 6, 2008 45Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo do Relógio Melhoria do algoritmo de segunda chance
implementação
Utiliza uma lista circular com um ponteiro para a página mais antiga
Verifica o bit de referência● Bit 0 –Substitui a página, ponteiro avança uma posição● Bit 1 –Atribui 0, avança o ponteiro e testa novamente
May 6, 2008 46Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmo do Relógio
May 6, 2008 47Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Política de Alocação de Molduras Como alocar molduras na presença de “n”
processos?
De onde alocar?● Alocação Local● Alocação Global
Quanto alocar para cada processo?
Mínimo necessário?
May 6, 2008 48Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Alocação Local Define o número de molduras que cada processo
deve dispor
Na falta de páginas a substituição ocorre entre as próprias páginas do processo que gerou a falta
Desvantagem: Definição do número de páginas● Processo necessecita mais molduras – ocorre mais
falhas de páginas● Processo ñ necessita – desperdício de memória● Impede a utilização de molduras disponíveis
pertencentes a outros processos
May 6, 2008 49Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Alocação Global Lista única de gerência de molduras para todos
os processos Processo pode receber uma moldura de outro
Desvantagem: Conjunto de molduras ocupadas de um processo depende do comportamento de outros● Processo de maior prioridade pode recuperar molduras
de um processo de menor prioridade
Método mais utilizado
May 6, 2008 50Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Algoritmos de Alocação Quantas molduras serão alocadas para cada
processo?
Alocação igualitária
Alocação proporcional
Alocação por Freqüência de falha de página
May 6, 2008 51Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Alocação Igualitária Divide as m molduras entre os n processos
● Cada processo recebe m/n molduras● Molduras restantes são utilizadas em casos de falhas
de páginas● Periodicamente é verificado o número de processos
para ajustar a divisão
Problema: Processos possuem necessidades diferentes● ex: Processo de 10K e de 300K necessitam de
números de molduras diferentes
May 6, 2008 52Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Alocação Proporcional Alocação proporcional ao tamanho do processo
Alocação reajustada conforme o número de processos
ex: Processo de 300K recebe 30 vezes mais molduras do que o de 10K
Verificar o mínimo de molduras para o processo executar
May 6, 2008 53Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Alocação Mínima de Molduras Processo necessita de uma alocação mínima
para executar● Dependente de arquitetura● Definido pelo conjundo de instruções da máquina● Caso contrário, processo não pode executar
Quanto menos o número de molduras alocadas maior é a taxa de falha de páginas● Queda de desempenho do sistema
May 6, 2008 54Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Alocação por Freqüência de Falha de Página Para certos algoritmos, taxa de falhas diminui à
medida que mais páginas são alocadas Taxa de falhas acima de um valor
● Processo recebe mais molduras Taxa de falhas abaixo de um valor
● Memória de mais para o processo● Molduras são retiradas
Algoritmo mantem a taxa de falhas dentro de limites aceitáveis
Controle de carga – processo pode ser removido
May 6, 2008 55Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Thrashing Tratamento de falta de página é caro em tempo
● Grande impacto no desempenho do sistema
Processo está em Thrashing quando ele gasta a maior parte do seu tempo de execução no processo de paginação
Efeito congelamento● Alocação local – congelamento do processo● Alocação global – congelamento do sistema
May 6, 2008 56Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Conseqüências do Thrashing Baixa utilização da CPU para exec. de processos● SO pode avaliar que está faltando processos prontos
para execução e permitir a criação de novos Adição de novos processos necessita mais
molduras – agrava a situação Multiprogramação pode comprometer o
desempenho do sistema Solução: Suspender alguns processos
temporariamente Prevenção: Processo deve ter o conjunto de
molduras que atenda sua demanda: conjunto funcional – páginas atuais de execução
May 6, 2008 57Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Considerações Finais Tamanho da página
● Grande ●Menos falta de páginas●Menos E/S●Menor tabela de páginas
● Pequena●Menor fragmentação interna – Menor Desperdício de memória
Em determinados sistemas os programadores podem acessar diretamente o mapa de memória● Compartilhamento de memória● Passagens de mensagens de alto desempenho● Memória compatilhada distribuída
May 6, 2008 58Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Exercício Acessos: 1 0 3 2 0 4 0 2 1 4 3 2 4 1 2 0 1 2 0 1
Número de falhas de páginas???ÓtimoFIFOLRU
May 6, 2008 59Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Solução
May 6, 2008 60Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Solução
May 6, 2008 61Antônio Augusto Fröhlich (http://www.lisha.ufsc.br)
Solução