memória virtual sistemas operacionais i
DESCRIPTION
Memória Virtual Sistemas Operacionais I. Módulo 9. FUNDAMENTOS. Execução de Programas O S.O carrega partes de um processo para a memória real Conjunto residente (Resident set) Configurável. FUNDAMENTOS. Execução de Programas - PowerPoint PPT PresentationTRANSCRIPT
Memória VirtualSistemas Operacionais I
Módulo 9
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-2
FUNDAMENTOS
Execução de Programas– O S.O carrega partes de um processo
para a memória realConjunto residente (Resident set)
– Configurável
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-3
FUNDAMENTOS
Execução de Programas– Uma falha (page-fault) é gerada quando
um endereço não presente na memória é acessado
Processo vai para BlockedParte que contém o endereço é carregado
para a M.R.– O S.O. emite uma requisição de leitura do disco– Outro processo é despachado para executar– Uma interrupção é emitida quando a E/S terminar
para que o S.O. mova o processo para a Ready
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-4
FUNDAMENTOS
Particionamento de programas (modularização)– Mais processos mantidos em memória
Só é necessário carregar alguns pedaços do processo
– Com muitos processos na memória é mais fácil colocar/estar no estado READY
– Torna-se possível executar processos com requisito de memória maior que a memória real
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-5
FUNDAMENTOS
Particionamento de programas (modularização)– Memória é definida em um dispositivo
secundárioProgramador está efetivamente limitado pelo
tamanho do seu disco
– Desnecessário carregar pedaços do processo que não serão utilizados
Economia de tempo: minimiza o swap-in
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-6
FUNDAMENTOS
Tipos de memória– Real
Principal
– Virtual Em disco
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-7
FUNDAMENTOS
Thrashing– “Swapping-out” pedaços de um processo
antes deste ser necessário– O processador gasta tempo em SWAP e
não em execução de processos
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-8
FUNDAMENTOS
Princípio da localidade– Referência a código e dados tendem a
ser localizadosLoopLogo, poucos pedaços precisam estar
presentes– É possível fazer uma aposta inteligente
sobre que páginas serão necessárias no futuro
Isto sugere que a Memória virtual funciona eficientemente?
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-9
FUNDAMENTOS
Memória virtual (M.V.)– Separação entre a memória lógica do
usuário e a memória física– Implementada em
Paginação sob demandaSegmentação sob demanda
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-10
FUNDAMENTOS
Suporte necessário a M.V.– Hardware precisa suportar paginação e
segmentação– O S.O precisa ser capaz de gerenciar o
movimento de páginas e segmentos entre a memória principal e a secundária
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-11
FUNDAMENTOS
Características da paginação e segmentação– Referências de memória
Transladadas em endereços físicos em tempo de execução
– Um processo Pode ser “swapped-out”Não precisa ser alocado de forma contínuaPode ser modular
– Todas as partes não precisam estar presentes na memória principal
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-12
PAGINAÇÃO
Tabela de páginas– Pode ocupar muita memória real– Poderia ser armazenada na memória
virtual– Quando o processo está em RUNNING
parte da tabela está em memória
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-13
PAGINAÇÃO
Proteção de memória– Implementado com um bit de proteção
em cada frame– Valid/Invalid bit em cada entrada da
tabela de página“valid” indica que a página está sendo
utilizada“invalid” indica que a página não está em uso
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-14
PAGINAÇÃO
Tabela de páginas multiníveis– Dois níveis
Memória
Tabela de Páginas
2 Nível
Tabela de Páginas
1 Nível
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-15
PAGINAÇÃO
Paginação multinível– Suponha um endereço lógico de 32-bits,
página de 4KBytes Page Number consiste de 20-bitsPage Offset (deslocamento) consiste de 12-
bits
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-16
PAGINAÇÃO
Paginação multinível– Supondo que a tabela de páginas é
paginada, temosPage Number consiste de 10-bits (p1)Page Offset consiste de 10-bits (p2)
page number page offset
pi p2 d
10 10 12
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-17
PAGINAÇÃO
Paginação multinível – Exemplo interessante
0
1
2
1024
10-bits
Deslocamento(10-Bits)
Nível 2(10-bits)
Nível 1(10-bits)
029
0
1
2
1024
10-bits
Deslocamento(10-Bits)
Frame(10-bits)
019
Endereço virtual
Endereço Real
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-18
PAGINAÇÃO
Paginação multinível – Considerações
Cada nível é armazenado como uma tabela separada
O tempo para converter endereço lógico em endereço físico é multiplicado pelo número de níveis
Embora o tempo possa ser multiplicado, o uso de cache permite minimizar o impacto
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-19
PAGINAÇÃO
Tabela de páginas invertida– Uma entrada para cada página existente
no sistema A entrada consiste de um endereço virtual da
página armazenada na memória real, com informações sobre o processo que é dono
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-20
PAGINAÇÃO
Tabela de páginas invertida– Vantagem
Diminui a memória necessária para armazenar a tabela de páginas
– DesvantagemAumenta o tempo necessário para encontrar
a página referenciada– Solução
Hash Table– Limita a procura a um, ou poucos, acessos
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-21
PAGINAÇÃO
Tabela de páginas invertida– Arquitetura
Memória Física
Endereço lógico/virtual
End. Físico
Busca
Endereço lógico
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-22
PAGINAÇÃO
Implementação de Tabela de Páginas– Mantida em memória– Dois registradores
Page-table base register (PTBR) – Aponta para a tabela de páginas
Page-table length register (PRLR) – Indica o número de páginas
Esse esquema implica em dois acessos a memória. Um para tabela de páginas e outra para a instrução/dados– Facilmente resolvível com o uso de Translation
Look-aside buffers (TLB)
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-23
PAGINAÇÃO
Translation Lookaside Buffer– Contém entradas da tabela de páginas
que foram utilizadas recentementeSimilar ao cache de memória
– Dado um endereço virtual, o processador examina a TLB
– Se a entrada esta presente (hit) o Frame e recuperado e o endereço real é formado
Caso contrário (miss) o page-number é utilizado para indexar a tabela de páginas
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-24
PAGINAÇÃO
Translation Lookaside Buffer– Primeiro verifica se a página já está em
memóriaCaso contrário um page-fault é gerado
– A TLB é atualizada com a entrada de página
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-25
PAGINAÇÃO
Translation Lookaside BufferEndereço virtual
TranslationLookaside Buffer
Tab. De Pág
TLB miss
Page fault
Endeço Real
TLB hit Offset
Mem. PrincipalMem. Secundária
CargaPág
Pág # Offset
Frame # Offset
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-26
PAGINAÇÃO
Tamanho da página– Pequena
Fragmentos internos pequenosMuitas páginas para um processoTabela de páginas muito grandeTabelas grandes resultam em grande
quantidade da tabela de página na memória virtual
A memória secundária é projetada para transferência de grandes blocos. Logo páginas grandes são bem-vindas
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-27
PAGINAÇÃO
Tamanho da página– Pequena
Um grande número de páginas estarão presentes na memória real– A medida que o tempo avança as páginas em
memória contém porções mais recentes do processo. Baixo Índice de page-fault
– GrandeAumenta a taxa de page-fault
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-28
PAGINAÇÃO
Tamanho da página– Múltiplos tamanhos
Flexibilidade no uso da TLBPáginas grandes podem ser utilizadas para
instruçõesPáginas pequenas podem ser utilizadas para
threads
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-29
SEGMENTAÇÃO E PAGINAÇÃO
Paginação– Transparente para o desenvolvedor de
programas– Elimina a fragmentação externa
Segmentação– É visível para o desenvolvedor de programas– Permite o crescimento de estruturas,
modularidade e suporte a compartilhamento e proteção
Cada segmento tem número fixo de páginas
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-30
SEGMENTAÇÃO E PAGINAÇÃO
EndereçamentoEndereço virtual
Entrada da tabela de segmentos
Entrada da tabela de páginas
Segmento # Página # Offset
Bits de controle Tamanho Segmento
P M Bits de controle Frame #
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-31
SEGMENTAÇÃO E PAGINAÇÃO
Translação de endereços
Memória principal
FrameOffset
Paginação
Tabela de Páginas
P#+
Frame # Offset
Seg Table Ptr
+S #
SegmentaçãoProcesso
Tabela de Segmentos
Seg # Pag # Offset
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-32
SEGMENTAÇÃO E PAGINAÇÃO
MULTICS – Translação de endereços
S
Endereço virtual
N
Tabela de Segmentos
Tabela de Páginas
End. Real
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-33
SEGMENTAÇÃO E PAGINAÇÃO
I386 – Translação de endereçosEnd.
Virtual
Tabela de Segmentos
End.Linear
Diretório de Tab. Páginas Tab. Páginas
Memória Real
Diretório Página Offset
Reg. Tabela Pág.Reg. Tabela Pág.
Descritor
Descritor Deslocamento
End. Físico
Dir. Páginas
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-34
SEGMENTAÇÃO E PAGINAÇÃO
Translação em dois níveis de endereços em arquiteturas de 32-bits
End. Lógico
Tabela
de
Segmentos Segmentos
Tabela
de
Páginas Páginas
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-35
POLÍTICAS
Busca– Determina qual página ser retirada da
memória– Paginação por demanda somente carraga
a página quando uma referência é feita a um endereço nela contida
Alta taxa de falhas de páginas quando o processo inicia sua execução
– Pré-paginação libera mais quadros (frames) que o necessário
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-36
POLÍTICAS
Colocação– Determina onde, na memória real, partes
de um processo se alojarãoNormalmente irrelevante já que o hardware
determina os endereços reais
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-37
POLÍTICAS
Substituição– Seleciona a página que será substiuida
por uma novaAlgumas páginas podem não ser
substituíveis– Uso de lock no frame – Utilizado no núcleo do S.O., estruturas de dados,
buffers etc
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-38
POLÍTICAS
Substituição– Política ótima
Seleciona para substituição a página cuja a próxima referência será mais demorada
É impossível ter conhecimento de eventos futuros!– Logo, essa política é uma falácia!
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-39
POLÍTICAS
Substituição– First-in, first-out (FIFO)
Frames alocados a um processo são tratados com um buffer circular– Páginas “mais velhas” são substituídas– Páginas são removidas no estilo Round-Robin
Fácil implementaçãoEssas páginas podem ter que retornar
rapidamente!
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-40
POLÍTICAS
Substituição– Least Recently Used (LRU)
Substitui a página que não foi referenciada por mais tempo
Esta página pode ser referenciada em um futuro próximo
Cada página precisa conter um campo com a data da última referência– Overhead alto
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-41
POLÍTICAS
Substituição– Clock
Utiliza um bit , chamado use-bitPágina é carregada na memória com
use-bit=0Referência a página faz use-bit=1Quando for necessário a substituição, o
primeiro frame com use-bit=0 é substituídoDurante a procura para substituição use-bit=1
é trocado para use-bit=0
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-42
POLÍTICAS
Substituição– Clock
0
n
Pág. 9use-bit=1
Pág. 1use-bit=0
Pág.45use-bit=1
Pág. 191use-bit=1
Pág. 556use-bit=1
Pág. 13use-bit=1
…
…next frame pointer
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-43
POLÍTICAS
Page-buffering– A página substituída é colocada na
Free-page-list – Se a não tiver sofrido modificações
Modified-page-list– Se sofreu alguma alteração– É removida a posteriori
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-44
POLÍTICAS
Conjunto residente– Alocação fixa
Número fixo de páginas durante a execução do processo
Implica na substituição local de páginas
– Alocação variávelNúmero de páginas alocadas ao processo
varia durante a execução do processo
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-45
POLÍTICAS
Limpeza– Por demanda
A página somente é removida se for selecionada para substituição
– AntecipadaPáginas são removidas em lotes
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-46
POLÍTICAS
Limpeza– Uso de page-buffering melhora o
desempenhoAs páginas podem ser “recuperadas”, caso
referenciadas, rapidamente
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-47
POLÍTICAS
Controle de carga– Determina o número de processos
residentes em memóriaPoucos processos
– Algumas vezes todos os processos podem estar no estado BLOCKED e a CPU fica ociosa
Muitos processos– Trashing
Como definir muito e pouco?
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-48
POLÍTICAS
Suspensão– Processos com menor prioridade– Page-fault
O processo não possui seu conjunto presente na memória
Estará no estado BLOCKED
– Último processo a ser ativadoO processo possivelmente não está com seu
conjunto residente presente na memória
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-49
POLÍTICAS
Suspensão– Processos com menor conjunto
residenteRequer menor esforço para carregá-lo para
memória – Processos “grandes
Obtém maior número de frames livres– Processo com a maior janela de
execução restante
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-50
UNIX e SOLARIS Gerencia de Memória
Sistema de paginação para processos– Alocador de memória para o Kernel
Estruturas de dados– Tabela de páginas
Uma por processo– Disk block descriptor
Descreve a cópia da página virtual (em disco)– Page frame data table
Descreve cada quadro da M.R.– Swap-use table
Uma por cada dispositivo de swap
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-51
UNIX e SOLARIS Gerencia de Memória
Substituição de páginas– Refinamento da política do relógio
two-handed clock algorithm
Kernel Memory Allocator– Muitos blocos são menores que a página
padrão
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-52
Windows NT Gerencia de Memória
Todos os processos compartilham o mesmo espaço de endereçamento– 2 Gbyte
Tipos de Paginas– Available– Reserved
Reservada para um processo mas não computa na quota de memória do processo
– Committed– Zeros
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-53
WORKING SET
Número fixo de páginas referenciáveis working-set window
Exemplo: 10,000 instruçõesWSSi (working set do processo Pi)
– Total de páginas referenciadas no último
– Se Muito pequeno, não incorpora bem a
localidadeMuito grande, atua além da localidade incorpora o programa todo
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-54
WORKING SET
Demanda de frames– D= WSSi
Se D > memória ThrashingSe D > memória
Então suspenda um processo
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-55
MANUTENÇÃO DO WORKING SET
Aproximação entre interval timer e reference bit
Exemplo: = 10,000– Timer interrompe a cada 5000 u.t.– 2 bits de referência para cada página– Sempre que ocorrer a interrupção
Se um dos bits em 1 Página no W.S. Coloca os bits em 0 Por que isto não é completamente preciso?
– Aprimorando 10 bits e interrupção a cada 1000 u.t.
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-56
ESQUEMA PAGE-FAULT FREQUENCY
Taxa “aceitável” de page-fault– Taxa pequena
Processoperde frames.
– Taxa altaProcesso
ganha frames.
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-57
OUTRAS CONSIDERAÇÕES
PreparaçãoSeleção do tamanho de página
– fragmentação– Tamanho da tabela– E/S overhead– localidade
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-58
OUTRAS CONSIDERAÇÕES
Estrutura de programa– Array A[1024, 1024] de integer
– Cada linha é armazenada em uma página
Programa 1: for j := 1 to 1024 do for i := 1 to 1024 do A[i,j] := 0; 1024 x 1024 page faults
Program 2:
for i := 1 to 1024 do for j := 1 to 1024 do A[i,j] := 0;1024 page faults
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-59
SEGMENTAÇÃO POR DEMANDA
Utilizado quando o hardware não suporta (eficientemente) paginação por demanda– S.O. aloca memória em segmentos registrados
em “segment descriptors”
O Segment descriptor contém um bit de validade (valid bit) para indicar se o segmento está presente na memória– Se presente: o acesso continua– Se não presente: “segmentation fault”.
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-60
Real Real Virtual
Sistemas
Mono Usuário
SistemasMultiprogramadosem Memória Real
SistemasMultiprogramados
em Memória Virtual
Partições
FixasPartições Variáveis
Absoluta Relo- cáveis
PaginaçãoPura
SegmentaçãoPura
Paginação e
Segmentação Combinadas
Evolução das Organizações de Memória
24/04/2001Sistemas Operacionais I - Versão Beta 3 8-61
SEGMENTAÇÃO POR DEMANDA
Ótimo “A exemplo das pessoas, os computadores
também tendem a adiar o quanto possível a ocorrência de eventos desagradáveis”
String de Referência
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
Frame 1 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 7 7 7
Frame 2 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 0
Frame 3 1 1 1 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1
Page Faults F F F F F F F F F