Algoritmos de Gestão de Memória

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

Algoritmos de Gestão de Memória

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

Departamento de Engenharia Informática. Gestão de Memória. Parte II Algoritmos

Gestão de Memória. mecanismos de gestão de memória protecção da memória algoritmos de gestão de memória. P. Ferreira/J. A. Marques - INESC/IST 01/02 1

Sistemas operacionais P A G I N A Ç Ã O D E M E M Ó R I A

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

Sistemas Operativos. Gestão de memória. Rui Maranhão

Divisão da lacuna em espaços na base 2: Eficiente quanto à velocidade e Ineficiente quanto à fragmentação.

Organização de um Sistema Operativo

Gestão de Memória algoritmos e políticas

Sistemas Operacionais. Prof. MSc. André Yoshimi Kusumoto

Espaço de Endereçamento

Sistemas Operacionais. Prof. André Y. Kusumoto

Arquitetura de Sistemas Operacionais

Gestão de Memória. Espaço de Endereçamento

Sistemas Opera r cionais Gerência de Memória

UNIX Gerência de Memória

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

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

Caching. Caches do Sistema de Ficheiros

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

Modelação de algoritmos de substituição de páginas Anomalia Belady

Sistemas de Computação. Gerenciamento de memória

Fundamentos de Sistemas Operacionais

Gerenciamento de Memória

Sistemas Operacionais: Memória Virtual

Gestão de Memória. Espaço de Endereçamento

Sistemas Operacionais

Sistemas Operacionais Memória Virtual

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

SSC0640 Sistemas Operacionais I

Arquitectura de Computadores

Memória Virtual. Paulo Sérgio Almeida. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

Memória virtual. Sistemas de Computação

Sistemas Operacionais

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais Aula 16 Memória Virtual

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

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

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Virtual. 26/05/2014 Prof. Valeria M. Bastos

Gerenciamento de memória

Gerência de Memória. Aspectos de Projeto

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

UFRJ IM - DCC. Sistemas Operacionais I. Unidade III Memória Virtual. Prof. Antonio Carlos Gay Thomé Prof. Aux. Simone Markenson Pech 1

13 de Maio de Aula 17

Sistemas Operacionais

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Sistemas Operacionais

Organização e Arquitetura de Computadores I

Gestão de memória - Memory Management Unit (MMU)

Sistemas Operacionais

Swapping. Desvantagem:

SSC0611 Arquitetura de Computadores

Memória. Gestão do espaço lógico Paginação Segmentação com paginação

SISTEMAS OPERACIONAIS

Capítulo 6 Nível do Sistema Operacional

Administração de Memória

Gestão de memória - Memory Management Unit (MMU)

Capítulo 7 Gerência de Memória

Organização e Arquitetura de Computadores I

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

Sistemas Operacionais. Gerenciamento de Memória

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

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

Sistemas Operacionais

Memória virtual. Sistemas Segmentados

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

Substituição de Páginas

GERENCIAMENTO DE MEMÓRIA

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

Memoria. UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

Infra-Estrutura de Software IF677

Sistemas de Operação / Fernando Silva / Departamento 1 de Ciência de Computadores 6.1

Gerência de Memória Algoritmos de Substituição de Páginas

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

Programação de Sistemas

Gerenciamento de memória Memória Virtual

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

Sistemas Operativos: Gestão de Memória

Aula 15. Memória Virtual - Desempenho. 1.1 Contexto 1.2 Políticas de Reposição de Páginas 1.3 Working-Set 1.4 Trashing

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

Sistemas Operacionais

Arquitetura de Sistemas Operativos

Gerência de Memória. Gerência de Memória Virtual. Gerência de Memória. Gerência de Memória. Gerência de Memória. Gerência de Memória 17/04/2017

Sistemas Operacionais II Unix: Memória e E/S. Geraldo Braz Junior

AULA 14 - Memória Virtual

Espaço de Endereçamento

Gerenciamento de Memória

Arquitectura de Computadores

Arquitectura de Computadores (ACom)

SSC0112 Organização de Computadores Digitais I

Arquitetura de Sistemas Operacionais. Francis Berenger Machado Luiz Paulo Maia. Capítulo 9 Gerência de Memória

Infra-Estrutura de Software

Infra-Estrutura de Software

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

Arquitectura de Computadores

Gerência de memória II

Arquitectura de Computadores (ACom)

Transcrição:

Gestão de Memória Parte II - algoritmos Sistemas Operativos 2011 / 2012 Algoritmos de Gestão de Memória Os algoritmos de gestão de memória são utilizados para decidir: Onde se deve colocar um bloco (segmento ou página) de programa dada a memória primária livre; Quando transferir um bloco de memória secundária para memória primária e vice-versa; Que bloco retirar de memória quando não existe mais memória primária livre ou quando a que existe disponível é inferior a um determinado valor considerado mínimo para o bom funcionamento do sistema. Page 1 1

Algoritmos de Gestão de Memória Tipos de decisões que o sistema operativo tem de tomar em relação à memória principal: Alocação - Onde colocar um bloco na memória primária; Transferência - Quando transferir um bloco de memória secundária para memória primária e vice-versa; Substituição - Qual o bloco a retirar da memória primária. Algoritmos de Alocação Page 2 2

Reserva de Memória Quando é necessária a reserva e a libertação de memória? Na criação e terminação de processos Na extensão do espaço de endereçamento (área de dados ou pilha) Paginação Reserva de Memória Muito simples basta encontrar uma página livre, normalmente existentes numa Lista de Páginas Livres do sistema operativo Segmentação O tamanho variável dos segmentos torna mais complexa a reserva de espaço para um segmento Na libertação de memória é necessário recompactar os segmentos Page 3 3

Reserva de Segmentos: Critérios de Escolha de Blocos Livres Best-fit (o menor possível): gera elevado número de pequenos fragmentos em média percorre-se metade da lista de blocos livres na procura a lista tem de ser percorrida outra vez para introduzir o fragmento Worst-fit (o maior possível): pode facilmente impossibilitar a reserva de blocos de grandes dimensões a lista de blocos livres tem de ser percorrida para introduzir o fragmento Reserva de Segmentos: Critérios de Escolha de Blocos Livres First-fit (o primeiro possível): minimiza a tempo gasto a percorrer a lista de blocos livres gera muita fragmentação externa acumula muitos blocos pequenos no início da lista, ficando para o fim os blocos maiores Next-fit (o primeiro possível a seguir ao anterior): espalha os blocos pequenos por toda a memória Page 4 4

Critérios de Escolha de Blocos Livres (cont.) dimensão do pedido: 15k best-fit? worst-fit? first-fit -? 13K A 22K 16K C 32K B D 29K E Critérios de Escolha de Blocos Livres: Algoritmo Buddy A memória livre é dividida em blocos de dimensão bn Se b = 2 então designa-se por buddy binário Para satisfazer um pedido de dimensão D percorre-se a lista à procura de um bloco de dimensão 2 k tal que 2 k-1 < D 2k Se não for encontrado procura-se um de dimensão 2 k+i, i >0, que será dividido em duas partes iguais (buddies) Um dos buddies será subdividido quantas vezes for necesssário até se obter um bloco de dimensão 2k Se possível, na libertação um bloco é recombinado com o seu buddy, sendo a associação entre buddies repetida até se obter um bloco com a maior dimensão possível Consegue-se um bom equilíbrio entre o tempo de procura e a fragmentação interna e externa Page 5 5

Fonte do exemplo: wikipedia Processo A pede segmento de 34KB. Fonte do exemplo: wikipedia Processo B pede segmento de 66KB. Page 6 6

Fonte do exemplo: wikipedia Processo C pede segmento de 35KB. Fonte do exemplo: wikipedia Processo D pede segmento de 67KB. Page 7 7

Fonte do exemplo: wikipedia Processo C liberta o seu segmento. Fonte do exemplo: wikipedia Processo A liberta o seu segmento. Page 8 8

Fonte do exemplo: wikipedia Processo B liberta o seu segmento. Fonte do exemplo: wikipedia Processo D liberta o seu segmento. Page 9 9

Fonte do exemplo: wikipedia Algoritmo de Buddy: conclusões Complexidade? Reservar e libertar segmentos cresce logaritmicamente com o número de subdivisões de segmentos suportadas e.g. 1MB até 64KB: 4 subdivisões Fragmentação externa? Sim (como todos os algoritmos de reserva para segmentação) Fragmentação interna? Sim! (ao contrário dos algoritmos anteriores) Page 10 10

Algoritmos de Transferência Algoritmos de Transferência Existem três situações em que a transferência pode ser feita: a pedido (on request): o programa ou o sistema operativo determinam quando se deve carregar o bloco em memória principal normalmente usado na memória segmentada por necessidade (on demand): o bloco é acedido e gera-se uma falta (de segmento ou de página), sendo necessário carregá-lo para a memória principal normalmente usado na memória paginada por antecipação (prefetching): o bloco é carregado na memória principal pelo sistema operativo porque este considera fortemente provável que ele venha a ser acedido nos próximos instantes Page 11 11

Transferência de Segmentos normalmente um processo para se executar precisa de ter pelo menos um segmento de código, de dados e de stack em memória caso haja escassez de memória os segmentos de outros processos que não estejam em execução são transferidos na íntegra para disco (swapping) os segmentos são guardados numa zona separada do disco chamada área de transferência (swap area) quando são transferidos todos os segmentos de um processo diz-se que o processo foi transferido para disco (swapped out) a transferência de segmentos faz-se usualmente a pedido: em arquitecturas que suportem a falta de segmentos, certos segmentos de um programa podem ser transferidos para memória principal por necessidade Transferência de Páginas o mecanismo normal de transferência de páginas é por necessidade: páginas de um programa que não sejam acedidas durante a execução de um processo não chegam a ser carregadas em memória principal usam-se também políticas de transferência por antecipação para: diminuir o número de faltas de página optimizar os acessos a disco as páginas retiradas de memória principal são guardadas numa zona separada do disco chamada área de paginação: apenas se ainda não existir uma cópia da página em disco as páginas modificadas são transferidas em grupos para memória secundária de modo a optimizar os acessos a disco Page 12 12

Swapping / Paging Quando é necessário libertar espaço na memória física o SO copia páginas para disco escolhe aquelas que previsivelmente não irão ser usadas brevemente zona do disco que as contém swap area Terminologia: swapping vs. paging granularidade: todas as páginas do processo (processo swapped out) vs. páginas individuais Minimizar latência: pre-fetching traz páginas antes de serem pedidas Algoritmos de Swapping de Processos ou de Segmentos Possíveis critérios para decidir qual o processo a transferir para disco: estado e prioridade do processo: processos bloqueados e pouco prioritários são candidatos preferenciais tempo de permanência na memória principal: um processo tem que permanecer um determinado tempo a executar-se antes de ser novamente enviado para disco dimensão do processo Page 13 13

Espaços de Trabalho (working sets) Espaço de trabalho (working set) de um processo num determinado intervalo de tempo é: o conjunto de páginas acedidas pelo processo nesse intervalo de tempo: Verifica-se que, para intervalos de tempo razoáveis: o espaço de trabalho de um processo mantém-se constante e menor que o seu espaço de endereçamento Certos algoritmos adaptativos tentam manter o working set de cada processo em memória O que acontece se a estimativa for muito baixa? E se for muito alta? Espaços de Trabalho (cont.) faltas de páginas 1 Acessos aleatórios a memória Acessos à memória com localidade de referência 1 fracção do processo carregado em memória Page 14 14

Algoritmos de Substituição Algoritmos de Substituição de Páginas Óptimo Retira a página cujo próximo pedido seja mais distante no tempo Requer conhecimento futuro Usado como benchmark Page 15 15

Algoritmos de Substituição de Páginas Menos usada recentemente (Least Recently Used, LRU): eficaz segundo o princípio de localidade de referência latência associada à sua implementação rigorosa. Aproximação: utilização de um contador por página que indique a que grupo etário ela pertence actualizado regularmente pelo processo paginador quando atingir um valor máximo, a página passa para a lista das livres ou das livres mas modificadas Algoritmos de Substituição de Páginas Não usada recentemente (Not Recently Used, NRU): agrupamento das páginas em 4 grupos: 0: (R = 0, M = 0) Não referenciada, não modificada 1: (R = 0, M = 1) Não referenciada, modificada 2: (R = 1, M = 0) Referenciada, não modificada 3: (R = 1, M = 1) Referenciada, modificada o processo paginador percorre regularmente as tabelas de páginas e coloca o bit R a 0 libertam-se primeiro as páginas dos grupos de número mais baixo Page 16 16

FIFO: Algoritmos de Substituição de Páginas é muito eficiente mas não atende ao grau de utilização das páginas (apenas ao seu tempo de permanência em memória primária) existem variantes desta política que evitam a transferência de páginas antigas mas muito usadas para disco Comparação: segmentação e paginação (1) Segmentação: vantagens: adapta-se à estrutura lógica dos programas permite a realização de sistemas simples sobre hardware simples permite realizar eficientemente as operações que agem sobre segmentos inteiros desvantagens: o programador tem de ter sempre algum conhecimento dos segmentos subjacentes os algoritmos tornam-se bastantes complicados em sistema mais sofisticados o tempo de transferência de segmentos entre memória principal e disco torna-se incomportável para segmentos muito grandes a dimensão máxima dos segmentos é limitada Page 17 17

Comparação: segmentação e paginação (2) Paginação: vantagens: o programador não tem que se preocupar com a gestão de memória os algoritmos de reserva, substituição e transferência são mais simples e eficientes o tempo de leitura de uma página de disco é razoavelmente pequeno a dimensão dos programas é virtualmente ilimitada desvantagens: o hardware é mais complexo que o de memória segmentada operações sobre segmentos lógicos são mais complexos e menos elegantes, pois têm de ser realizadas sobre um conjunto de páginas o tratamento das faltas de páginas representa uma sobrecarga adicional de processamento Tamanho potencial das tabelas de páginas UNIX Gestão de Memória Page 18 18

Unix - Gestão de Memória Unix implementado sobre arquitecturas diferentes Dois grupos de implementações: Segmentação com swapping Paginação Transferência (swapping) Arquitecturas segmentadas: Regiões (texto, dados, stack) carregadas contiguamente em memória Transfere para disco processos que estejam bloqueados ou com menor prioridade Existem 4 situações que potencialmente provocam a transferência: Chamada fork - é preciso espaço para o novo processo Chamada brk - expande o segmento de dados do processo Crescimento natural da pilha Sistema operativo precisa de espaço para carregar em memória um processo que estava swapped-out Page 19 19

Swapper Swapper: processo que efectua as transferências de segmentos entre memória principal e secundária Área especial do disco reservada para os segmentos retirados de memória Paginação Um processo tem inicialmente 3 regiões: código, dados e stack Cada região tem uma tabela de páginas própria Page 20 20

Tabela de Páginas e de Descritores de Blocos de Disco região P R M C/W PROT Idade End. Físico Nº do Dispositivo Nº do Bloco Tipo Tabela de Páginas Tabela de Descritores de Blocos de Disco Significado dos campos da tabela de páginas P present indica se a pagina está residente na memória primária R referenced foi acedida ou referenciada M modified modificada C/W copy-on-write PROT bits de protecção Idade algoritmo do page stealer End. Físico da page frame Nº do Dispositivo Nº do Bloco - disco e bloco onde se encontra Tipo swap, demand fill, demand zero Page 21 21

Tabela pfdata Permite a gestão eficaz das páginas de memória física Indexada pelo número da página física Contém: Estado da página (livre, existe cópia na área de swap ou num ficheiro executável, operação de leitura pendente) Contador com número de processos que referenciam a página Número de device e bloco onde existe cópia da página Substituição de Páginas Aproximação ao algoritmo Menos Usada Recentemente (LRU) Idade da página é mantida na PTE Page-stealer é acordado quando o número de páginas livres desce abaixo de um dado limite Percorre as PTE incrementando o contador de idade das páginas Se a página for referenciada a sua idade é anulada Se a página atingir uma certa idade marca-a para ser transferida Page 22 22

Criação de um Processo fork: duplica os segmentos de código, dados e pilha do pai não é feita nenhuma cópia física de memória: cria uma nova tabela de regiões para o filho dá-lhe a mesma região de código copia as regiões de dados e pilha, i.e. aloca novas tabelas de páginas e copias as PTE e os descritores de blocos de disco em seguida, percorre as PTE do pai e, para as páginas válidas, incrementa o contador de processos na pfdata e coloca a 1 o bit copy on write (no pai e no filho) antes duma página ser escrita (pelo pai ou pelo filho): o sistema copia-a para uma nova página que aloca, preenchendo a PTE do processo onde ocorreu a falta com o endereço físico da nova página só se copiam as páginas que forem de facto modificadas fork Tabela de Regiões do Processo Pai Tabela de Regiões do Processo Filho 0K 4K 8K 12K 16K Região 1 (Código) 327 Região 2 (Dados do Pai) 0K 4K 8K 12K 16K 921 Região 3 (Dados do Filho) 0K 4K 8K 12K 16K 921 Tabela de Páginas Tabela de Páginas Tabela de Páginas Page 23 23

Tratamento do Copy on Write Page Table Entry Proc A Page 828 Valid, Copy on Write Page Table Entry Proc B Page 828 Valid, Copy on Write Page Frame 828 Ref Count 3 Page Table Entry Proc C Page 828 Valid, Copy on Write (a) Before Proc B Incurs Protection Fault Page Table Entry Proc A Page 828 Valid, Copy on Write Page Table Entry Proc B Page 786 Valid Page Table Entry Proc C Page 828 Valid, Copy on Write Page Frame 828 Ref Count 2 Page Frame 786 Ref Count 1 Page 24 24