Sistemas Operacionais

Documentos relacionados
Sistemas Operacionais

Gerência da Memória. Adão de Melo Neto

Fundamentos de Sistemas Operacionais

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition

Gerenciamento de Memória

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física

Sistemas Opera r cionais Gerência de Memória

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Primária. 29/04/2014 Prof. Valeria M. Bastos

MEMÓRIA LÓGICA E FÍSICA (1)

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Capítulo 16 Alocação de memória

SSC0640 Sistemas Operacionais I

INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA

Sistemas Operacionais. - Gerência de Memória -

Sistemas Operacionais Aula 12: Gerência de Memória. Ezequiel R. Zorzal

Gerência de Memória. Execução de um Programa (1) Introdução. Introdução

AULA Nº 11 SISTEMAS OPERACIONAIS. Técnicas de Memória Virtual

Gerência de Memória. Endereçamento Virtual (1) Paginação. Endereçamento Virtual (2) Endereçamento Virtual (3)

Segmentação com paginação Intel 386. Esquema de tradução de endereço Intel 386

Swapping. Desvantagem:

Capítulo 9: Memória Virtual. Operating System Concepts 8th Edition

Sistemas Operacionais: Memória Virtual

Capítulo 9: Memória Virtual. Operating System Concepts 8 th Edition

AULA 14 - Memória Virtual

Sistemas Operacionais. Rômulo Silva de Oliveira Alexandre da Silva Carissimi Simão Sirineo Toscani


Memória virtual. Sistemas de Computação

Gerência de memória III

Gestão de Memória. Algoritmos de Gestão de Memória

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Paginação e Segmentação. Memória Principal

Implementação de Diretórios (1)

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Gerenciamento de Memória

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45

Sistemas Operacionais

Organização e Arquitetura de Computadores I

CURSO TÉCNICO EM INFORMÁTICA SISTEMAS OPERACIONAIS II MEMÓRIA VIRTUAL

Gerenciamento de Memória

Gerência de Memória. Paginação

LISTA DE EXERCICIOS 2

SISTEMAS OPERACIONAIS. 2ª. Lista de Exercícios Parte 2

UNIX Gerência de Memória

Gerenciamento de Memória

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Fundamentos de Sistemas Operacionais

Segmentação de Memória

Sistemas de Informação. Sistemas Operacionais

SISTEMAS OPERACIONAIS. Gerência de Memória Apostila 7

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para

Sistemas de Arquivos. (Aula 23)

Transcrição:

Introdução Gerência de memória Considerações adicionais Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3.0 Brasil Creative Commons. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/br/ Aula 25 Alocação de memória durante a execução de processos Bibliotecas dinâmicas Arquivos mapeados em memória Pilha e heap (monte) Área de dados do núcleo (sistema operacional) Questões de projeto da paginação Pré-paginação Tamanho da página Área de swap 2 Bibliotecas dinâmicas Ligação estática e dinâmica Bibliotecas com vínculo estático Bibliotecas são tratadas como qualquer outro módulo objeto Combinadas na imagem do programa binário (executável) Cada processo tem sua cópia (desperdiça espaço memória e disco) Biblioteca dinâmicas Na imagem do programa binário (executável) é posto um stub Código (pequeno) para localizar a biblioteca na memória ou carregá-la, caso não esteja. Dynamic Link Libraries (DLL) (c) A. Carissimi -1-mai-17 Ligação estática Não há referências a símbolos externos no arquivo binário resultante Ligação dinâmica Realizada durante a execução do arquivo binário (executável) Binário (executável) possui referências externas ainda não resolvidas Ligação estática ref Ligação dinâmica dummy nome stub end Ligador dinâmico - Localização, carga e ligação - Execução 3 4

Prós e contras de bibliotecas dinâmicas Memory-mapped files Por compartilharem código, economizam memória Atualização de biblioteca sem necessidade de recompilar códigos Permite correções de bugs Possui identificação de versão Possibilita que diferentes programas usem diferentes versões Necessita uma integração com o sistema operacional Manutenção das versões Tratamento do compartilhamento/proteção do espaço de endereçamento Controle de utilização para liberação da memória ocupada pela biblioteca Consiste em mapear um bloco de disco em memória ocupando uma ou mais páginas Arquivo (parte dele) passa a fazer parte do espaço de endereçamento Chamada de sistema específica (ex. mmap) Princípio básico Primeiro acesso funciona similar a ocorrência de um page-fault Acessos subsequentes são feitos em memória Acelera o desempenho de leitura e escrita MAS escritas não são feitas imediatamente no disco Política de atualização 5 6 Espaço de endereçamento e alocação de memória Alocação de memória para a pilha Processo possui as áreas de: Código: tamanho fornecido na etapa de compilação/ligação (executável) Dados inicializados e não inicializados (globais): definido na compilação Pilha: espaço pré-alocado no final do espaço de endereçamento Heap: porção entre o final da pilha (espaço pré-alocado) e área de global. Área pré-alocada na criação do processo A alocação real acontece em tempo de execução Variáveis locais, parâmetros de função e endereço de retorno Mecanismos de alocação Instruções do tipo PUSH (alocação) e POP (liberação) política LIFO Unidade de alocação é denominada de stack frame (registro de ativação) Conjunto de entradas vinculadas a uma chamada de função Insere na pilha o stack frame completo Normalmente armazenado Stack Base (SB): aponta para primeira entrada Top of Stack (TOS): aponta para última entrada Frame Base (FB): aponta para o stack frame do topo (empilhamento) 7 8

Alocação de memória no heap (monte) Alocação de memória para heap Alocação dinâmica de memória via chamadas de função Realiza três funções básicas Lista de livres Seleção (alocação) de área de memória Concatenação de lacunas que são contíguas Program Controled Dynamic Data (PCD data) Alocação: chamadas do tipo malloc, calloc, etc Liberação: chamada do tipo free Espaço de endereçamento gerenciado pela biblioteca da linguagem Usa alocadores especiais A alocação e liberação é feita de forma randômica e com quantidades variáveis Gera lacunas na área de memória do heap Problemas similares a alocação particionada dinâmica Lista de livres: lista encadeada descrevendo as lacunas (tamanho e endereço) Seleção: first fit, best fit e next fit. Fragmentação da memória Existência de áreas não utilizáveis Externa: não utilizável por ser demasiada pequena para novas alocações Interna: processo aloca mais que o necessário Solução: compactação e concatenação (custo computacional) 9 10 Alocador buddy e potência de 2 Alocação de memória para o núcleo Solução para gerenciamento simplificado da área do heap Princípio básico Alocação baseada em blocos de tamanho padronizados (potência de 2) Leva a fragmentação interna, mas evita concatenação e compactação Evita a pesquisa em lista de livres acelerando a alocação e liberação Sistema buddy Divisão de um bloco 2 n em dois blocos de 2 n-1 (buddies) Buddies contíguos podem ser unificados Há um tamanho mínimo para um buddy para evitar blocos pequenos demais Gera uma fragmentação interna Criação e destruição frequente de estruturas de dados Ex.: descritores de processos, de eventos, de E/S, de arquivos, etc... Estruturas de dados de tamanhos conhecidos Parte do projeto do sistema operacional Permite otimizar a alocação para ser simples e eficiente Área de dados do núcleo Núcleos atuais usam paginação Alocadores específicos para utilizar a área de memória dessas páginas McKusick Lazzy Buddy Slab 11 12

Alocador McKusick Alocador lazzy buddy Conjunto de páginas pré-alocadas para área de dados Possível solicitar mais páginas se necessário Princípio: Divide páginas em blocos de igual tamanho Blocos são alinhados em endereços de memória das páginas Mantém lista de blocos e lista de livres e ocupados Alocação e liberação Se tem bloco livre do tamanho necessário, aloca, senão: Busca uma página (do poll pré-alocado ou nova) Divide em blocos do tamanho necessário, aloca, atualiza lista de blocos e livres Na liberação, atualiza lista de blocos livres e ocupados Variação do alocador buddy Posterga a divisão (splitting) e concatenação (coalescing) dos buddies Princípio Criação de classes de blocos de mesmo tamanho Mantém três estados para blocos: Lazzy: blocos com alocação e liberação em taxas próximas Lista de livres sem atualizar o bitmap de livres Aloca da frente da lista (lista chamada de local) Reclaiming e accelerated: liberação é mais rápida, ou muito mais rápida, que a alocação Mantém lista de livres e atualiza o bitmap (lista chamada de global) Faz a concatenação dos buddies 13 14 Alocador slab Vantagens da alocação slab Considera uma hierarquia para alocação de memória Alocador recebe páginas e as organiza em slabs Um slab é formado por slots Um Slot mantém um objeto do núcleo estrutura de dados Uma cache é composta por um ou mais slabs Associada a uma classe de objetos do núcleo (ex.: descritores de processos, de arquivos, semáforos, etc...) Exemplo: Cache é criada para conter um certo número de objetos Número de objetos depende do tamanho do slab Ex: slab 12 KB é composto por 3 páginas contíguas e pode armazenar até 6 objetos de 2 KB cada um Reduz/elimina a fragmentação Cada estrutura de dados é associada a uma cache, cada cache é composta por um ou mais slabs, que são divididos em porções do tamanho do objeto que representa Alocação de memória retorna a quantidade para o objeto Acelera a requisição de memória Os objetos são criados antes de sua efetiva utilização Tão logo o objeto não é mais necessário ele é marcado como free 15 16

Exemplo: uso de slabs no Linux Considerações sobre projeto de paginação Slab possui 3 estados Full: todos os objetos estão marcados como ocupados Empty: todos os objetos são marcados como livres Partial: há objetos livres e ocupados no slab Na alocação Busca por um objeto livre em um partial slab, se não encontra, aloca um objeto de empty slab Se não há empty slab, aloca nova área contigua e para formar um novo slab e associa a cache daquela classe de objetos Possui dois alocadores SLOB: para sistemas com pouca memória (pequeno, médio e grande) SLUB: implementação do método slab com otimizações Entre as principais decisões para um sistema de paginação estão: Uma política de alocação Algoritmos de substituição Mas há outras: Pré-paginação Tamanho da página Alcance da TLB Estrutura de programa (localidade) 17 18 Pré-paginação Efetividade da pré-paginação Ideia é trazer para a memória todo o working set do processo Normalmente, ocorre quando o processo passa de suspenso para apto Objetivo é reduzir o número de page-fault no (re)inicio da execução Questão sobre pré-paginação x faltas de página Quantas página dentre aquelas pré-paginadas são efetivamente usadas? Comparação de custos Questão é: Custo de pré-paginar é menor que o custo de tratar os page-faults? Considerando que: s páginas são pré-páginadas para a memória, mas apenas uma fração α é usada ( 0 α 1) Custo a ser avaliado: Custo de economizar s*α page-faults é maior ou menor que o custo de pré-paginar, desnecessariamente s*(1-α) páginas? 19 20

Influência do tamanho da página Tamanho da tabela de páginas Páginas possuem tamanho múltiplos de 2 Tipicamente variam entre 2 12 e 2 22 Fatores a serem considerados na definição do tamanho da página Tamanho da tabela de páginas Fragmentação interna Tempo para page-in e page-out Localidade Alcance da TLB Tamanho da tabela de páginas Quanto maior a página, menor a tabela Fragmentação interna Quanto menor a página, menor a fragmentação Em média, metade da última página é desperdiçada Tempo para page-in e page-out Quanto maior a página, mais eficiente é a transferência O tempo total de transferência é seek+ latência rotacional + read/write Dobrar a página, dobra o tempo de read/write Logo, parece ser preferível páginas pequenas Mas o seek e a latência rotacional é muito maior do que o read/write Portanto, páginas grandes tendem a amortizar custos de leitura 21 22 Localidade Estrutura do Programa: questão de localidade Quanto menor a página, mais preciso será o mecanismo de detecção de localidade Páginas grandes Contém dados fora da localidade que serão trazidas para a memória Representa um desperdício de espaço e de tempo Com páginas menores Melhor resolução Permite isolar, precisamente, a memória realmente necessária 23 Tamanho da página = 128 palavras O SO aloca menos de 128 páginas para o programa Cada linha de data está em uma página A cada palavra zerada, é gerada um falta de página Resultado 128 x 128 = 16.384 faltas de páginas Zera todas as palavras de uma página antes de passar para a próxima Resultado 128 faltas de páginas Importância dos programas de sistema (compiladores, ligadores e carregadores) considerar e otimizar a localidade de estrutura de dados e de programas. 24

Alcance da TLB Área de swap Quantidade de memória que a TLB pode endereçar (referências) Número de entradas da TLB multiplicado pelo tamanho da página Situação ideal: working set de um processo caber na TLB Tradução de endereço lógico em físico sem acessar a tabela de páginas em memória Para aumentar o alcance Aumentar a TLB fisicamente (custo) Aumentar o tamanho da página (fragmentação interna, localidade, custo de transferência, etc...) Solução alternativa Prover tamanho de páginas diferentes (4 KB, 32 KB, 64 KB) Desvantagem: deve ser feito controle em software (sistema operacional) O swap é um porção de área do disco Arquivo Partição específica Sistema de arquivos possui uma estrutura de gerenciamento Arquivos são representados por metadados (nome, localização no disco proprietário, data modificação, permissões de acesso, etc) Arquivos são organizados em diretórios Acessar arquivos implica percorrer estruturas de dados Procedimento que pode ser penalizante em tempo Partição de swap Customizada para armazenar páginas (unidade ou grupos múltiplos de 2) Oferece melhor desempenho ao custo da flexibilidade 25 26 Quase no fim... Terminou a parte teórica da disciplina Próximos eventos: Segunda (11/12): PROVA 3 (conteúdo da aula 19 a 25, inclusive) Quarta (13/12): Demonstração opcional dos trabalhos práticos (sala 102/67) Quarta (20/12): Prova de RECUPERAÇÃO ( toda matéria do semestre) Natal, Ano Novo, Férias... 27