Introdução aos Sistemas Operacionais. Gerenciamento de Memória

Documentos relacionados
Substituição de Páginas

Memória virtual. Pedro Cruz. EEL770 Sistemas Operacionais

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

Sistemas Operacionais

SSC0640 Sistemas Operacionais I

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

Arquitetura de Sistemas Operacionais

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

Segmentação de Memória

Administração de Memória

Gerência de memória III

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

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

Sistemas Operacionais Aula 16 Memória Virtual

Gerência de memória II

Gerenciamento de memória

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

Sistemas Operacionais

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

Sistemas Operacionais Memória Virtual

Fundamentos de Sistemas Operacionais

Gerenciamento de Memória

Memória virtual. Sistemas de Computação

Infra-Estrutura de Software IF677

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

Sistemas Operacionais. Gerenciamento de Memória

GERENCIAMENTO DE MEMÓRIA

Sistemas Operacionais I 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

Sistemas Operacionais

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

Capítulo 4 Gerenciamento de Memória

GERÊNCIA DE MEMÓRIA. INF009 Laboratório de Sistemas Operacionais

Organização e Arquitetura de Computadores

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

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

Capítulo 6 Nível do Sistema Operacional

Organização de um Sistema Operativo

Sistemas Operacionais

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

Organização e Arquitetura de Computadores I

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

Gerência de Memória Memória Virtual e Paginação

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

Gerenciamento de Memória

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

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

SISTEMAS OPERACIONAIS

Gerenciamento de memória Memória Virtual

Organização e Arquitetura de Computadores I

Gerenciamento de Memória

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

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

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

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

Gerência de Memória. Algoritmos de Substituição de Páginas. (Aula 20)

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

EA075 Memória virtual

GERENCIAMENTO DE PROCESSOS

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

Sistemas Operacionais. Prof. MSc. André Yoshimi Kusumoto

Arquitectura de Computadores (ACom)

AULA 14 - Memória Virtual

Algoritmos de Substituição de Páginas. Igor Gustavo Hoelscher Renan Arend Rogério Corrêa Medeiros

Sistemas de Memória III

Memória Virtual. Adriano J. Holanda 1/3/2016

Sistemas de Informação. Sistemas Operacionais

INE5412 Sistemas Operacionais I

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

Sistemas Operacionais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Instituto de Ciência e Tecnologia - ICT

Arquitectura de Computadores (ACom)

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Infra-Estrutura de Software

Sistemas Operacionais: Memória Virtual

Sistemas Operacionais

UNIX Gerência de Memória

Sistemas Operacionais. Prof. André Y. Kusumoto

Introdução aos Sistemas Operacionais. Subsistema de Arquivos

Introdução aos Sistemas Operacionais

Espaço de Endereçamento

Sistemas Operacionais

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

Sistemas Opera r cionais Gerência de Memória

Infra-Estrutura de Software

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

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

Sistemas Operacionais II. Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos

Organização e Arquitetura de computadores

Gerenciamento de Memória

Infra-Estrutura de Software

Memória Virtual. MAC Arquitetura de Computadores Prof. Siang Wun Song. Baseado em W. Stallings Computer Organization and Architecture

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

Capítulo 6 Gerência de Memória 103

Memória para CAD. Aleardo Manacero Jr.

Transcrição:

Introdução aos Sistemas Operacionais Gerenciamento de Memória Eleri Cardozo FEEC/Unicamp 1 Gerenciamento de Memória Gerenciamento de memória consiste de duas atividades: gerenciamento do espaço físico e proteção. O gerenciamento de espaço físico dita como a memória física é distribuída entre os processos. A proteção impede que processos acessem regiões de memória fora de seus respectivos espaços de endereçamento. 2

Gerenciamento do Espaço Físico Partições Fixas 3 Gerenciamento do Espaço Físico Permuta (Swapping) 4

Proteção As técnicas de partições e permuta empregam registradores de base e limite para fins de proteção. Quando um processo ganha a posse da CPU, o registrador de base é carregado com o endereço da primeira posição de memória que o processo ocupa e o registrador limite é carregado com o tamanho do processo. Todo o acesso à memória é confrontado com o valor destes registradores e, caso o acesso ocorra em posição inferior à base ou superior à base mais o limite, a CPU sinaliza uma exceção de proteção. 5 Memória Virtual Um problema central em gerenciamento de memória empregando o modelo de memória virtual é o mapeamento de endereços. Vimos no estudo de processos uma solução simplificada: a tabela de páginas por processo. Utilizando apenas este recurso o mapeamento é extremamente ineficiente pois requer uma consulta à esta tabela para cada conversão de endereço, além de operações aritméticas para se determinar a página e o deslocamento. 6

O Mapeamento de Endereços O mapeamento de endereços se dá com o apoio do hardware, empregando-se basicamente três estruturas: 1. Tabela de páginas por processo (em software). 2. Tabela de páginas (em hardware). 3. Cache de endereços (em hardware). Vamos ilustrar este mapeamento para a arquitetura Intel x86. 7 A Arquitetura Intel x86 A arquitetura Intel x86 endereça 4 Gbytes (modo normal, 32 bits) ou 64 Gbytes (modo estendido, 36 bits) de memória física. O espaço de endereçamento virtual é de 48 bits divididos em segmentos de 4 GBytes cada. Um segmento é um bloco contínuo de memória que armazena dados com propriedades comuns em termos de proteção e permissões de acesso. Segmentos tipicamente comportam as áreas de texto, dados e pilha dos processos, além de estruturas de dados utilizadas pelo sistema operacional. Por razões de portabilidade o sistema Linux não emprega segmentação. Desta forma, neste sistema, todo processo irá ocupar um único segmento de 4 GBytes, 3 dos quais disponíveis ao processo. 8

A Tabela de Páginas do Hardware 9 A Tabela de Páginas do Hardware Qual a vantagem de se utilizar tabelas em 2 (4 no modo estendido) níveis? Pilha Esta área oca não necessita tabela de segundo nível até o momento que seja efetivamente utilizada. Dados Texto 10

A Tabela de Páginas do Hardware Entradas do diretório e tabelas de páginas Bit P (presente): setado quando o mapeamento é válido. Bit R (read/write): indica se a página é de leitura apenas ou de leitura e escrita. Bit A (acessada): indica que a página foi acessada pelo processo. Bit D (dirty): indica que a página foi escrita pelo processo. Bit U (usuário/supervisor): indica se a página deve ser acessada apenas no modo supervisor ou também no modo usuário. 11 A Tabela de Páginas do Hardware Marcação de Copy-on-Write: Como marcar uma página como CoW? 1) Uso dos 3 bits de uso geral disponíveis na entrada da tabela de páginas e bit R setado para leitura apenas. Em uma violação de proteção o bits de uso geral devem ser inspecionados se marcados como CoW 2) Bits R setado e bit U setado para supervisor (marcação especial pois o supervisor tem sempre permissão de escrita). 12

Tabela de Páginas por Processo O sistema Linux utiliza tabela de páginas de 3 níveis: PGD: Page Global Directory PMD: Page Middle Directory PTE: Page Table Entry PGD PMD PTE Deslocamento + 13 Mapeamento de Tabelas Como o SO utiliza a tabela de páginas do hardware (exemplo do Linux) 14

Unidade de Gerenciamento de Memória MMU: Memory Management Unit 15 Translation Lookaside Buffer (TLB) 16

Translation Lookaside Buffer (TLB) Bit P: Presente/ausente Bit D (dirty): Modificação Bit R: Permissões Na arquitetura x86 todas as entradas da TLB são invalidadas quando ocorre uma troca de contexto (alteração do registrador CR3) entre processos (tal não ocorre em trocas de contexto entre threads). 17 Paginação Como o número de páginas virtuais é muito superior ao de páginas físicas, cabe ao sistema operacional manter mapeadas as páginas que efetivamente os processos estão utilizando no momento. A atividade de mapear e desmapear (invalidar o mapeamento) páginas denomina-se paginação ou paginação por demenda, enfatizando que esta atividade é realizada apenas quando necessário. A atividade de paginação é centrada no Princípio da Localidade. 18

O Princípio da Localidade O princípio da localidade estabelece que durante a execução de um programa as referências à memória apresentam localidade espacial e temporal. Localidade temporal estabelece que se um processo referenciar uma dada posição de memória, é provável que esta posição será referenciada novamente em um futuro próximo. A área de dados de um processo apresenta localidade temporal. Localidade espacial estabelece que se um processo referenciar uma dada posição de memória, é provável que posições próximas a esta serão referenciada em um futuro próximo. As áreas de texto e pilha de um processo apresentam localidade espacial. 19 Falhas de Paginação Um processo pode iniciar sua execução com TODAS as suas páginas desmapeadas (via chamada vfork, por exemplo). Ao acessar uma página o hardware inspeciona o bit P (presente) e, caso esteja ressetado, gera uma falha de paginação (page fault). Ao ocorrer uma falha de paginação, o sistema operacional: Bloqueia o processo. Providencia o mapeamento da página. Desbloqueia o processo. Quando o processo retoma a CPU, a instrução que gerou a falha de paginação e reiniciada. 20

Mapeamento de Páginas Onde se encontra o conteúdo de uma página que será mapeada? 1) Se a página pertencer à área de texto do processo, seu conteúdo é lido do próprio código executável (normalmente em disco). 2) Se a página pertencer às áreas de texto e pilha, e nunca foram mapeadas ou nunca foram modificadas, as mesmas também são lidas do código executável. 3) Se a página pertencer às áreas de texto e pilha, e foram modificadas, as mesmas são lidas da área de permuta (swap area). Resumo: páginas são lidas inicialmente do código executável e, caso tenham sido modificadas (bit D da tabela de páginas), são gravadas na área de permuta durante o desmapeamento, de onde são recuperadas nos futuros re-mapeamentos. 21 Mapeamento de Páginas Onde se encontra o conteúdo de uma página que será mapeada? 1) Se a página pertencer à área de texto do processo, seu conteúdo é lido do próprio código executável (normalmente em disco). 2) Se a página pertencer às áreas de texto e pilha, e nunca foram mapeadas ou nunca foram modificadas, as mesmas também são lidas do código executável. 3) Se a página pertencer às áreas de dados ou pilha, e foram modificadas, as mesmas são lidas da área de permuta (swap area). Resumo: páginas são lidas inicialmente do código executável e, caso tenham sido modificadas (bit D da tabela de páginas), são gravadas na área de permuta durante o desmapeamento, de onde são recuperadas nos futuros re-mapeamentos. 22

Localidade das Páginas Quando a localidade de um processo muda de uma página para outra, a página antiga'' é desmapeada e fica disponível para ser remapeada em outro processo quando necessário. Como o sistema operacional sabe'' que uma página se tornou antiga'' e, portanto, pode ser desmapeada com grandes chances de não ser necessária ao processo no futuro próximo? O controle da idade (localidade temporal) das páginas é feito pelo bit A (acesso). Este bit é ressetado periodicamente e setado pelo hardware quando a página é acessada. A localidade espacial é resolvida pelo tamanho da página (4 Kbytes na arquitetura x86). 23 Gerenciamento do Espaço Virtual no Linux 24

Gerenciamento do Espaço Físico no Linux Algoritmo Buddy 25 Gerenciamento do Espaço Físico no Linux Algoritmo Buddy 26

Gerenciamento do Espaço Físico no Linux 27 Algoritmos de Troca de Páginas Um bom algoritmo de troca de páginas deve levar em conta a idade da página para decidir sobre o seu desmapeamento. A razão para se utilizar a idade é que princípio da localidade funciona também de trás para frente, ou seja, quanto mais antiga (acessada a mais tempo) a página, menor a chance dela ser acessada no futuro próximo. O algoritmo LRU (Least Recently Used) ordena as páginas por idade, escolhendo sempre as mais velhas para serem desmapeadas. Entretanto, manter esta lista ordenada o tempo todo é computacionalmente custoso, razão pela qual não é utilizado na prática. Uma alternativa é desmapear as páginas que atingiram uma idade limite. Algoritmos que empregam esta simplificação são denominados algoritmos de envelhecimento (aging). 28

O Algoritmo do Relógio Um algoritmo passível de ser realizado na prática é o algoritmo do relógio. Neste algoritmo as páginas físicas são inspecionadas circularmente, sendo que um ponteiro'' indica a página corrente. Caso o sistema deseje liberar N páginas o algoritmo inspeciona a pagina indicada pelo ponteiro: 1) Se o bit A (acesso) for zero, desmapeie esta página. 2) Se o bit A for um, zere este bit. 3) Se N páginas foram desmapeadas, pare. Caso contrário avance o ponteiro para a próxima página e vá para o passo 1. 29 Troca de Páginas no Linux Nas versões mais antigas do sistema Linux a idade da página é computada da seguinte forma. Ciclicamente o sistema zera o bit de acesso da página (bit A). Durante o ciclo as páginas acessadas têm o bit A setado pelo hardware. Ao final do ciclo o sistema soma à idade da página um envelhecimento'' para páginas que não tiveram o bit A setado e um rejuvenecimento'' àquelas que tiveram o bit A setado. Esta idade está armazenada na estrutura mem_map referente à página. O envelhecimento é obtido pela subtração de uma unidade da idade da página e o rejuvenecimento pela adição de 3 unidades até um máximo de 20 (ou seja, quanto maior a idade mais nova a página). A página é desmapeada quando sua idade atingir o valor zero. 30

Troca de Páginas no Linux Nas versões atuais, o sistema Linux emprega apenas dois flags: página ativa e página referenciada. Adicionalmente, o sistema mantém duas listas, a lista de páginas ativas e a lista de páginas inativas. A lista de páginas ativas são aquelas que os processos estão utilizando com frequência. Ao contrário, a lista de páginas inativas são aquelas páginas que os processos deixaram de refenciar há algum tempo. 31 Troca de Páginas no Linux O posicionamento da página na lista de páginas ativas ou inativas se dá em função dos flags de página ativa e refenciada. A heurística empregada pelo Linux é a seguinte. Ciclicamente, o sistema percorre a tabela de páginas físicas. Se a página foi referenciada em um ciclo ela é considerada ativa. Caso a página seja referenciada em dois ciclos consecutivos ela é posicionada na lista de páginas ativas. Caso a página não seja referenciada durante N ciclos a mesma é considerada inativa. Caso a pagina permaneça inativa por mais N ciclos, a mesma é posicionada na lista de páginas inativas. Quando o sistema necessita desmapear páginas, são escolhidas páginas da lista de páginas inativas. 32

O Processo Paginador A atividade de paginação é realizada por um processo denominado paginador (swapper). Este processo, de alta prioridade, executa ciclicamente e verifica se a quantidade de páginas livres está abaixo de um limite inferior pré-estabelecido. Caso esteja, o processo paginador libera páginas até um limite superior de páginas livres ser alcançado. As páginas a serem liberadas são obtidas executando-se um algoritmo de troca de páginas (algoritmo do relógio, por exemplo) ou percorrendo uma lista de páginas inativas (marcadas para desmapeamento). 33 Desmapeamento de Páginas Sujas Páginas sujas (modificadas) devem ter seu conteúdo salvo na área de permuta. O sistema Linux mantém na tabela de páginas (PTE) informações necessárias para salvar e recuperar a página na área de permuta. Páginas são lidas/escritas da área de permuta via DMA. Durante o processo de DMA a página permanece travada (não pode ser utilizada ou remapeada). PGD PMD PTE Deslocamento Memória Física Área de Permuta DMA 34

Paginação e Sistemas de Tempo Real Paginação afeta o desempenho de threads e processos pois causa bloqueio sem que operações de entrada/saída tenham sido realizadas. Alguns sistemas operacionais permitem travar páginas em memória evitando que as mesmas sofram desmapeamento. No Linux isto pode ser obtido via chamadas mlock/munlock e mlockall/munlockall. Exemplo: #include <sys/mman.h> #include <vector> // trava paginas correntes e futuras em memoria if(mlockall(mcl_current MCL_FUTURE)!= 0) perror("mlockall falhou."); // aloca um vetor de floats vector<float> vec = new vector<float>(5000); // "toca" no vetor para causar faltas de paginacao for(int i=0; i < 5000; i++) vec[i] = 0.0 35