620 likes | 730 Views
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
E N D
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
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
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
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
FUNDAMENTOS • Tipos de memória • Real • Principal • Virtual • Em disco Sistemas Operacionais I - Versão Beta 3
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
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
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
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
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ínua • Pode ser modular • Todas as partes não precisam estar presentes na memória principal Sistemas Operacionais I - Versão Beta 3
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
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
PAGINAÇÃO • Tabela de páginas multiníveis • Dois níveis Tabela de Páginas1 Nível Tabela de Páginas2 Nível Memória Sistemas Operacionais I - Versão Beta 3
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 12-bits Sistemas Operacionais I - Versão Beta 3
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 offset page number pi p2 d 10 10 12 Sistemas Operacionais I - Versão Beta 3
Nível 1 (10-bits) Nível 2 (10-bits) Deslocamento (10-Bits) 0 29 PAGINAÇÃO • Paginação multinível • Exemplo interessante Frame (10-bits) Deslocamento (10-Bits) 0 19 Endereço Real Endereço virtual 0 1 10-bits 0 2 1 10-bits 1024 2 1024 Sistemas Operacionais I - Versão Beta 3
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
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
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
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
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) Sistemas Operacionais I - Versão Beta 3
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
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
Mem. Secundária Mem. Principal Endereço virtual Pág # Offset Translation Lookaside Buffer TLB hit Offset CargaPág Tab. De Pág TLB miss Frame # Offset Endeço Real Page fault PAGINAÇÃO • Translation Lookaside Buffer Sistemas Operacionais I - Versão Beta 3
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
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
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
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 Sistemas Operacionais I - Versão Beta 3
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
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 Offset P# Frame S # + + Processo Segmentação Paginação Memória principal Sistemas Operacionais I - Versão Beta 3
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
SEGMENTAÇÃO E PAGINAÇÃO • I386 – Translação de endereços Descritor Deslocamento End.Virtual Tabela de Segmentos Descritor Memória Real End.Linear Diretório Página Offset End. Físico Diretório de Tab. Páginas Tab. Páginas Reg. Tabela Pág. Reg. Tabela Pág. Dir. Páginas Sistemas Operacionais I - Versão Beta 3
End. Lógico Tabela de Segmentos Segmentos Tabela de Páginas Páginas SEGMENTAÇÃO E PAGINAÇÃO • Translação em dois níveis de endereços em arquiteturas de 32-bits Sistemas Operacionais I - Versão Beta 3
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
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
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
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
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
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
POLÍTICAS • Substituição • Clock • Utiliza um bit , chamado use-bit • Página é carregada na memória comuse-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
POLÍTICAS 0 • Substituição • Clock Pág. 9 use-bit=1 Pág.1 use-bit=0 n Pág.45 use-bit=1 next frame pointer … … Pág.191 use-bit=1 Pág.13 use-bit=1 Pág.556 use-bit=1 Sistemas Operacionais I - Versão Beta 3
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
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
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
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
POLÍTICAS • Controle de carga • Determina o número de processos residentes em memória • Poucos processos • Algumas vezes todos os processos podem estar no estado BLOCKED e a CPU fica ociosa • Muitos processos • Trashing • Como definir muito e pouco? Sistemas Operacionais I - Versão Beta 3
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
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
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 Sistemas Operacionais I - Versão Beta 3