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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-2 FUNDAMENTOS Execução de Programas – Uma falha (page-fault) é gerada quando um endereço não presente na memória é acessado Processo vai para Blocked Parte 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-3 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-4 FUNDAMENTOS Particionamento de programas (modularização) – Memória é definida em um dispositivo secundário Programador 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-5 FUNDAMENTOS Tipos de memória – Real Principal – Virtual Em disco Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-6 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-7 FUNDAMENTOS Princípio da localidade – Referência a código e dados tendem a ser localizados Loop Logo, 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? Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-8 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 demanda Segmentação sob demanda Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-9 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-10 FUNDAMENTOS Características da paginação e segmentação – Referências de memória Transladadas de execução – em endereços físicos em tempo Um processo Pode ser “swapped-out” Não precisa ser alocado de Pode ser modular – forma contínua Todas as partes não precisam estar presentes na memória principal Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-11 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-12 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-13 PAGINAÇÃO Tabela de páginas multiníveis – Dois níveis Tabela de Páginas 1 Nível Tabela de Páginas 2 Nível Sistemas Operacionais I - Versão Beta 3 Memória 24/04/2001 8-14 PAGINAÇÃO Paginação multinível – Suponha um endereço lógico de 32-bits, página de 4KBytes Page Number consiste de 20-bits Page Offset (deslocamento) consiste de 12bits Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-15 PAGINAÇÃO Paginação multinível – Supondo que a tabela de páginas é paginada, temos Page Number consiste de 10-bits (p1) Page Offset consiste de 10-bits (p2) page number page offset pi 10 p2 10 Sistemas Operacionais I - Versão Beta 3 d 12 24/04/2001 8-16 PAGINAÇÃO Paginação – multinível Exemplo interessante Nível 1 (10-bits) Nível 2 (10-bits) 29 19 Deslocamento (10-Bits) Endereço virtual Frame (10-bits) Deslocamento (10-Bits) Endereço Real 0 0 0 1 0 1 10-bits 2 10-bits 2 1024 1024 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-17 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-18 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-19 PAGINAÇÃO Tabela de páginas invertida – Vantagem Diminui a memória necessária para armazenar a tabela de páginas – Desvantagem Aumenta o tempo necessário para encontrar a página referenciada – Solução Hash – Table Limita a procura a um, ou poucos, acessos Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-20 PAGINAÇÃO Tabela de páginas invertida – Arquitetura Endereço lógico/virtual End. Físico Memória Física Busca Endereço lógico Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-21 PAGINAÇÃO Implementação de Tabela de Páginas – – Mantida em memória Dois registradores Page-table – Aponta para a tabela de páginas Page-table – base register (PTBR) 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) Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-22 PAGINAÇÃO Translation Lookaside Buffer – Contém entradas da tabela de páginas que foram utilizadas recentemente Similar – – 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-23 PAGINAÇÃO Translation Lookaside Buffer – Primeiro verifica se a página já está em memória Caso – contrário um page-fault é gerado A TLB é atualizada com a entrada de página Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-24 PAGINAÇÃO Translation Lookaside Buffer Mem. Principal Endereço virtual Pág # Offset Mem. Secundária Translation Lookaside Buffer TLB hit Offset Carga Pág Tab. De Pág TLB miss Frame # Offset Endeço Real Page fault Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-25 PAGINAÇÃO Tamanho da página – Pequena Fragmentos internos pequenos Muitas páginas para um processo Tabela de páginas muito grande Tabelas 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-26 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 Grande Aumenta a taxa de page-fault Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-27 PAGINAÇÃO Tamanho da página – Múltiplos tamanhos Flexibilidade no uso da TLB Páginas grandes podem ser utilizadas para instruções Páginas pequenas podem ser utilizadas para threads Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-28 SEGMENTAÇÃO E PAGINAÇÃO Paginação – – Segmentação – – Transparente para o desenvolvedor de programas Elimina a fragmentação externa É 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-29 SEGMENTAÇÃO E PAGINAÇÃO Endereçamento Endereço virtual Segmento # Página # Offset Entrada da tabela de segmentos Bits de controle Tamanho Segmento Entrada da tabela de páginas P M Bits de controle Frame # Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-30 SEGMENTAÇÃO E PAGINAÇÃO Translação de endereços Seg # Pag # Offset Frame # Offset Seg Table Ptr Tabela de Páginas Tabela de Segmentos + Processo S# Segmentação Sistemas Operacionais I - Versão Beta 3 Offset P# Frame + Paginação Memória principal 24/04/2001 8-31 SEGMENTAÇÃO E PAGINAÇÃO MULTICS – Translação de endereços Endereço virtual S N Tabela de Segmentos End. Real Tabela de Páginas Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-32 SEGMENTAÇÃO E PAGINAÇÃO I386 – Translação de endereços End. Virtual Descritor Deslocamento Tabela de Segmentos Descritor End. Linear Diretório Memória Real Página Offset End. Físico Diretório de Tab. Páginas Reg. Tabela Pág. Tab. Páginas Reg. Tabela Pág. Dir. Páginas Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-33 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 Sistemas Operacionais I - Versão Beta 3 Páginas 24/04/2001 8-34 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-35 POLÍTICAS Colocação – Determina onde, na memória real, partes de um processo se alojarão Normalmente irrelevante já que o hardware determina os endereços reais Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-36 POLÍTICAS Substituição – Seleciona a página que será substiuida por uma nova Algumas 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-37 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! Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-38 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ção Essas páginas podem ter que retornar rapidamente! Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-39 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-40 POLÍTICAS Substituição – Clock Utiliza um bit , chamado use-bit Página é carregada na memória com use-bit=0 Referência a página faz use-bit=1 Quando for necessário a substituição, o primeiro frame com use-bit=0 é substituído Durante a procura para substituição use-bit=1 é trocado para use-bit=0 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-41 POLÍTICAS 0 Substituição – Pág. 9 use-bit=1 Clock Pág. 1 use-bit=0 n next frame pointer … … Pág. 191 use-bit=1 Pág. 13 use-bit=1 Sistemas Operacionais I - Versão Beta 3 Pág.45 use-bit=1 Pág. 556 use-bit=1 24/04/2001 8-42 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-43 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ável Número de páginas alocadas ao processo varia durante a execução do processo Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-44 POLÍTICAS Limpeza – Por demanda A página somente é removida se for selecionada para substituição – Antecipada Páginas são removidas em lotes Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-45 POLÍTICAS Limpeza – Uso de page-buffering melhora o desempenho As páginas podem ser “recuperadas”, caso referenciadas, rapidamente Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-46 POLÍTICAS Controle de carga – Determina o número de processos residentes em memória Poucos – Algumas vezes todos os processos podem estar no estado BLOCKED e a CPU fica ociosa Muitos – processos processos Trashing Como definir muito e pouco? Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-47 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 ativado O processo possivelmente não está com seu conjunto residente presente na memória Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-48 POLÍTICAS Suspensão – Processos com menor conjunto residente Requer 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-49 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 – Page frame data table Descreve – a cópia da página virtual (em disco) cada quadro da M.R. Swap-use table Uma por cada dispositivo de swap Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-50 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-51 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 Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-52 WORKING SET Número fixo de páginas referenciáveis – working-set window Exemplo: 10,000 instruções WSSi (working set do processo Pi) – – Total de páginas referenciadas no último Se Muito pequeno, não incorpora bem a localidade Muito grande, atua além da localidade incorpora o programa todo Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-53 WORKING SET Demanda de frames – D= WSSi D > memória Thrashing Se D > memória Se Então suspenda um processo Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-54 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. Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-55 ESQUEMA PAGE-FAULT FREQUENCY Taxa “aceitável” de page-fault – Taxa pequena Processo perde frames. – Taxa alta Processo ganha frames. Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-56 OUTRAS CONSIDERAÇÕES Preparação Seleção do tamanho de página – – – – fragmentação Tamanho da tabela E/S overhead localidade Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-57 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 Sistemas Operacionais I - Versão Beta 3 Program 2: for i := 1 to 1024 do for j := 1 to 1024 do A[i,j] := 0; 1024 page faults 24/04/2001 8-58 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”. Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-59 Evolução das Organizações de Memória Real Sistemas Mono Usuário Real Virtual Sistemas Multiprogramados em Memória Real Sistemas Multiprogramados em Memória Virtual Paginação Partições Fixas Absoluta Partições Variáveis Paginação Pura Segmentação e Segmentação Pura Combinadas Relocáveis Sistemas Operacionais I - Versão Beta 3 24/04/2001 8-60 SEGMENTAÇÃO POR DEMANDA Ótimo String Referência Frame 1 de 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 7 7 7 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 0 1 1 1 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 F F Frame 3 F F 1 “A exemplo das pessoas, os1 computadores 2 0 3 0 4 2 3 0 3 2 2 0 1 7 0 também tendem a adiar o quanto possível a ocorrência de eventos desagradáveis” 0 Frame 2 Page Faults 7 F Sistemas Operacionais I - Versão Beta 3 F F F 1 F 24/04/2001 8-61