BC1518-Sistemas Operacionais Gerenciamento Básico de Memória Aula 07 Prof. Marcelo Z. do Nascimento [email protected] Roteiro Introdução Espaço de Endereçamento Lógico vs. Físico Estratégias para escolha de uma partição Alocação contígua de Memória Swapping Paginação Segmentação Leituras sugeridas Exercícios 29/03/09 2 Introdução Propósito geral de um sistema computacional é executar programas: Programa (código + dados) deve estar na memória; Para garantir uso da CPU vários programas são colocados na memória (Multi-programação); Necessidade de uma política de gerenciamento da memória; Diferentes estratégias são aplicadas de acordo com requisitos, algoritmos e suporte de hardware. 29/03/09 3 Introdução Memória: Uma “longa matriz” de bytes => com seus endereços: Um processo quer ler dados deve especificar o endereço desejado. Instruções são buscadas na memória assim como os dados; O processador somente executa instruções localizadas na memória principal (não há acesso direto a disco). http://www.youtube.com/watch?v=mYbYGFWeG_Y 29/03/09 4 Introdução Tendência atual do software Lei de Parkinson: “Os programas se expandem para preencher toda a memória disponível para eles” (adaptação); Gerenciador de memória: Responsável por alocar e liberar espaços na memória para os processos em execução; Responsável por gerenciar o chaveamento entre a memória principal e o disco rigído; 29/03/09 5 Hardware Básico Instruções pegam endereços de memória como argumento, mas não endereço de disco; Para garantir que cada processo tenha um espaço de memória separada: O registrador de alocação contém o endereço base para realizar a tradução; Hardware Básico Proteção ocorre quando o hardware da CPU compara os endereços gerados no modo usuário com os registradores; Qualquer tentativa de violar a região, uma trap é enviada para o monitor; O SO que carrega os registradores base e limite. Espaço de endereço Logico e Físico Endereço Lógico ◦ Gerado pela CPU; ◦ Também referenciado como endereço virtual; ◦ Programas de usuário trabalham com endereço lógico, não vê o endereço físico real. Endereço Físico ◦ Endereço que a unidade de memória trabalha. 8 Espaço de endereço Logico e Físico Ambos são os mesmos se a criação dos endereços ocorrem em ◦ Tempo de compilação ou ◦ Tempo de carregamento Pode ser diferente se o endereço é criado em ◦ Tempo de execução ◦ necessidade de mapeamento de endereço lógico para físico 9 Unidade de Gerenciamento de Memória (MMU) Dispositivo que tem a função de mapear o endereço físico para um endereço virtual; Numa MMU, o valor no registrador realocado é adicionado em todos os endereços gerados por um usuário e enviado para memória; O programa de usuário trabalha com endereço lógico, ele nunca trabalha com endereço físico; Registrador base é chamado de registrador de realocação. Unidade de Gerenciamento de Memória (MMU) Carregamento dinâmico Rotina não é carregada até ser chamada; Melhor utilização de espaço de memória, a rotina não utilizada nunca é carregada; Útil quando grande quantidade de código é necessário para tratar de casos que ocorrem com pouca frequência; Não exige suporte do sistema operacional, é responsabilidade dos usuários. Swapping (Troca de processos) Técnica para resolver o problema da insuficiência de memória: antes: O programa ficava na memória até o fim da sua execução, enquanto os outros esperavam por memória livre. swapping: O sistema retira temporariamente um programa da memória, coloca-o no disco (swapp out), para a entrada de outro. 29/03/09 13 Swapping (Troca de processos) Exemplo: Algoritmo de alternância circular Quando o quantum expirar, o gerenciador de memória começará a descarregar o processo que acabou e carregará outro processo para o espaço da memória liberada. Exemplo: Escalonamento por prioridade: • Alta prioridade aloca mémoria e baixa é eliminado dessa área 29/03/09 14 Swapping (Troca de processos) Pode ocorrer de duas maneiras: Com partições fixas: Cada vez que um processo é bloqueado, ele é retirado dando o lugar a outro; Não é interessante porque aspartições fixas tendem a desperdiçar espaços de memória; Com partições variáveis: Tamanho e número de partições variam com os processos; Otimiza a utilização da memória, mas é mais complicado na alocação e liberação da memória; 29/03/09 15 Alocação de Memória Tipos básicos de gerenciamento: Alocação não contígua: com chaveamento (Multiprogramação): Processos são movidos entre a memória principal e o disco; artifício usado para resolver o problema da falta de memória; Se existe MEMÓRIA PRINCIPAL suficiente não há necessidade de se ter divisões; Contígua: não há chaveamento entre processos; 29/03/09 16 Alocação de Memória Sem troca de Processos - Contíguo Sem chaveamento entre processos: gerenciamento mais simples; Desvantagem: apenas um processo na memória; Palmtop 0xFFF... S.O. ROM USUÁRIO RAM DRIVERS ROM USUÁRIO RAM RAM USUÁRIO S.O. (a) S.O. 0 (b) (c) 29/03/09 MS-DOS 17 Alocação de Memória – Partições fixas Múltiplos processos sendo executados; Eficiência da CPU; Dividir a memória em n partições; N processos na memória; Ocorria de modo manual => quando o sistema era inicializado; 29/03/09 18 Alocação de Memória Partições fixas Memória Principal Tabela de partições Partição Tamanho 1 2 Kb 2 5 Kb 3 8 Kb Sistema Operacional Programas a serem executados: E D C B A 3 Kb 6 Kb 1 Kb 4 Kb 2 Kb 29/03/09 Partição 1 2 Kb Partição 2 5 Kb Partição 3 8 Kb 19 Alocação de Memória Partições fixas 800 k Partição 4 Partição 4 700 k Fila de entrada Partição 3 Partição 3 Partição 2 Partição 2 Partição 1 Partição 1 S.O. S.O. 0 Partição está cheia 0 OS/360 (IBM) 29/03/09 20 Alocação de Memória Partições fixas Tabela de Alocação de Partições: área livre e ocupada pelos processos. Memória Principal Partição Tamanho Livre 1 2 Kb Não 2 5 Kb Sim 3 8 Kb Não Sistema Operacional 1 Programa C 2 Área livre 3 Programa B 29/03/09 21 Alocação de Memória Partições fixas Vantagem: Multiprogramação: Partições fixas. Desvantagens: Utilização parcial das partições fixas Concomitante criação de espaços ociosos: fragmentação interna – programa é carregado em uma partição um pouco maior que o necessário. 29/03/09 22 Alocação de Memória Partições fixas Fragmentação Interna Memória Principal Sistema Operacional Programa C 1 Kb Programa A D B 6 Kb 4 Kb 3 Kb Programa E 5 Kb 29/03/09 23 Alocação de Memória Partições fixas Pergunta: Descreva os benefícios e desvantagens de tamanhos de partições grandes e pequenos. • Partições maiores permitem que programas grandes executem, mas resultam em fragmentação interna para programas pequenos. • Partições pequenas reduzem a quantidade de fragmentação interna e aumenta o nível da multiprogramação, permitindo que mais programas residam na memória ao mesmo tempo, mas limita o tamanho do programa. 29/03/09 24 Alocação de Memória Partições Dinâmicas O processo recebe apenas o volume de memória que requisita quando é carregado para processamento; A E C B 2 Kb 3 Kb 1 Kb 4 Kb Memória Principal Memória Principal Sistema Operacional Sistema Operacional Programa B 4 Kb Programa C 1 Kb Programa E 3 Kb Programa A 2 Kb 15 Kb 5 Kb 29/03/09 25 Alocação de Memória Partições Dinâmicas Fragmentação Externa Memória Principal Sistema Operacional 4 Kb Programa C 3 Kb D 6 Kb Programa A 5 Kb 29/03/09 26 Alocação de Memória Partições Dinâmicas Solução para a Fragmentação Externa Memória Principal Memória Principal Sistema Operacional Sistema Operacional 4 Kb Espaços livres adjacentes são reunídos 8 Kb Programa C 3 Kb Programa A Programa A 5 Kb 5 Kb 29/03/09 27 Alocação de Memória Partições Dinâmicas Solução para a Fragmentação Externa Memória Principal Memória Principal Sistema Operacional Sistema Operacional Programa C 4 Kb Programa A Realocação dinámica Programa C Relocação 3 Kb Programa A 12 Kb 5 Kb 29/03/09 28 Estratégias para escolha da partição Para evitar ou diminuir o problema da fragmentação; São propostos 3 técnicas na alocação dinâmica: Best-fit: Escolhe a melhor segmento, ou seja, aquela em que o programa deixa o menor espaço sem utilização; A tendência é que a memória fique cada vez mais com pequenas áreas livres não contíguas 29/03/09 29 Estratégias para escolha da partição Sistema Operacional Best-fit: Memória Principal Programa C Sistema Operacional 4 Kb (a t- f s e )B it Programa A Programa C Programa F F 1 Kb Área livre 5 Kb 2 Kb Programa A 3 Kb 29/03/09 30 Estratégias para escolha da partição Worst-fit: Escolhe o pior segmento, ou seja, aquela em que o programa deixa o maior espaço sem utilização; Deixando espaços maiores, a tendência é permitir que um maior número de programas utilize a memória, diminuindo o problema da fragmentação. 29/03/09 31 Estratégias para escolha da partição Worst-fit: Memória Principal Sistema Operacional Sistema Operacional 4 Kb Programa C (b) Worst-fit Programa C Programa F F 1 Kb 5 Kb Área livre Programa A 4 Kb Programa A 3 Kb 29/03/09 32 Estratégias para escolha da partição First-fit: escolhe o primeiro segmento livre que seja suficiente para carregar o programa. É a estratégia mais rápida entre elas. 29/03/09 33 Estratégias para escolha da partição Memória Principal Sistema Operacional Sistema Operacional 4 Kb Programa F F Área livre 3 Kb Programa C it 1 Kb 5 Kb t- f irs )F (c Programa C Programa A Programa A 3 Kb 29/03/09 34 Proteção e Mapeamento da Memória Vinculação de endereços feita em execution time faz com que endereços físicos e lógicos se diferenciem: Esquema de tradução é necessário. O mapeamento de endereços em tempo de execução é feita pela MMU (Memory Management Unit); Mapeamento permite escolher entre os métodos diferentes de alocação de memória (Paginação, segmentação). O registrado base (base register) => chamado de relocation register. 29/03/09 35 Proteção e Mapeamento da Memória O registrador de relocação contém o endereço base para realizar a tradução. É adicionado a todo endereço gerado por um processo de usuário no momento em que este é enviado à memória. Proteção e Mapeamento da Memória Endereço base 29/03/09 37 Gerenciamento de memória com Mapa de Bits O SO deve gerenciar a memória atribuída de forma dinâmica; Duas técnicas são empregadas: Gerenciamento de memória com listas encadeadas Técnica com Mapa de Bits: Memória é dividida em unidades de alocação => kbytes; Cada unidade corresponde a um bit no mapa: 0 - livre 1 – ocupado 29/03/09 38 Gerenciamento de memória com Mapa de Bits a) b) c) Parte da memória com 5 segmentos de processos e 3 segmentos de memória livre − pequenos riscos simétricos denotam as unidades de alocação − regiões sombreadas denotam segmentos livres Mapa de bits correspondente Mesmas informações em uma lista encadeada 39 Gerenciamento de memória com Mapa de Bits Gerenciamento de memória com listas encadeadas: Cada item da lista encadeada construída tem 2 estados (P - processo, H - livre): Endereço de início Comprimento Ponteiro para próximo item Quando termina um determinado processo => junta o espaço liberado com seus vizinhos. 29/03/09 40 Gerenciamento de memória com Lista Encadeada Quatro combinações de vizinhança para o processo X em término de execução 41 Paginação: Alocação de memória não contíguo Processo é alocado na memória onde há espaço disponível; Divide a memória física com tamanho de blocos fixos denominado quadros (definidos pelo hardware). ◦ O tamanho da página é uma potência de 2, variando de 512 bytes até 16 MB ◦ O S.O. guarda todos os quadros livres Divide a memória lógica em blocos do mesmo tamanho chamado de página. ◦ Para executar um programa com tamanho de n páginas, é necessário encontrar n páginas livre para carregá-lo. ◦ Configura uma tabela de páginas para traduzir o endereço lógico em endereço físico 42 Esquema de tradução de Endereço O endereço gerado pela CPU é dividido em : ◦ Número de Página (p) – usado como um indice dentro de uma tabela de páginas a qual contém o endereço base de cada página na memória física ◦ Página offset – deslocamento (d) – combinada com endereço base define o endereço de memória física que é enviado para unidade de memória page number page offset p d m-n n ◦ Para um dado espaço de endereço lógico 2m e tamanho de página 2n 43 Esquema de tradução de Endereço 44 Esquema de tradução de Endereço 45 Exemplo de Páginação Tamanho da página = 4 bytes Tamanho da memória = 8 páginas = 32 bytes Endereço lógico 0: página = 0/4 = 0, offset = 0%4 = 0 mapeado quadro 5 + offset 0 endereço físico 20 Endereço lógico 13: página = 13/4 = 3, offset = 13%4 = 1 mapeado quadro 2 + offset 1 endereço físico 9 46 Quadros Livres Before allocation After allocation Todo o processo deve ter sua própria tabela de página 47 Implementação da tabela de páginas Tabela de página é guardada na memória principal ◦ Registrador de base da tabela de páginas (PTBR) aponta para a tabela de página; ◦ Page-table length register – PRLR => indica o tamanho da tabela de página. Mas qual a desvantagem de guardar a tabela de páginas na memória? ◦ Todo acesso a instruções requer dois acessos a memória: um para tabela de página e outro para as instruções. 48 Implementação da tabela de páginas Solução: Usar uma cache especial, menor, de pesquisa rápida chamada Tranlation Look-aside Buffer (TLB) É uma memória associativa de alta velocidade Cada entrada da TLB consistem em duas partes ◦ Uma chave e um valor Quando recebe um item, o item é comparado com todas as chaves. ◦ Atualmente: Intel Pentium Core i7 - com 512 entradas 49 Paginação com TLB Falha 50 Proteção Proteção de memória é realizada pela proteção dos bits associadas a cada quadro. Esses bits costumam ser mantidos na tabela de páginas ◦ Um bit pode definir uma página como sendo de leitura/escrita ou somente leitura Outro bit (valid-invalid) pode ser usado ◦ “valid” indica onde a página esta no espaço do endereço do processo, isto é, uma página válida para acesso ◦ “invalid” indica que a página não está no espaço de endereço do processo 51 O bit Valid (v) or Invalid (i) na tabela de página 52 Estrutura de tabela de página A maioria dos sistemas computadorizados modernos admite um grande espaço de endereço; Nesse contexto, a própria tabela de página se torna excessivamente grande; Uma solução é usar um algoritmo de paginação com dois níveis, em que a própria tabela de página também é paginada: ◦ Exemplo: máquina de 32 bits => 20 bits ficam para páginas e 12 para deslocamento Número da página pi p2 descolcamento d 53 Estrutura de tabela de página 54 Estrutura de tabela de página • O SO cria a tabela de página externa e a página da tabela de página. 55 Estrutura de tabela de página • Em um espaço de endereçamento lógico de 64 bits, o esquema de endereço em 2 níveis não é mais adequado • Usa-se um esquema de 3 níveis. 56 Tabela de página invertida Uma entrada para cada quadro da memória física; A entrada consiste no endereço virtual da página armazenado nesse local da memória física com informações sobre o precesso que possui essa página. 57 Gerenciamento de Memória Segmentação Esquema de gerenciamento de memória que suporta visão do usuário da memória. Diferente da paginação? ◦ Difere fundamentalmente da paginação, onde o programa é dividido em páginas de iguais tamanhos que muitas vezes contêm instruções de mais de um módulo de programa. 06/04/09 58 Gerenciamento de Memória Segmentação Segmentação: Aproveita a modularidade do programa: a memória não é dividida em tamanhos fixos e sim conforme a estruturação do programa. Isso permite que os programas sejam divididos logicamente em sub-rotinas e estruturas de dados e colocados em blocos de informações na memória. 06/04/09 59 Gerenciamento de Memória Segmentação Compilador cria segmentos: As variáveis globais; Chamadas de procedimento que parâmetros e endereços de retorno; A porção do código para cada procedimento ou função; As variáveis locais do procedimento ou função; 06/04/09 armazena 60 Gerenciamento de Memória Segmentação 1 4 1 2 2 4 3 Espaço do usuário Espaço de memória física Gerenciamento de Memória Segmentação Tarefa: Compilação Livre Pilha 20k Árvore de Parse Constantes 12k Tabela de Símbolos Fonte Fonte Tabela de Símbolos Espaço de Endereçamento Virtual 12k 0k Pilha 02k Constantes 0k 0k 0k Segmentos (0-3) 06/04/09 62 Arquitetura de Segmentação Tabela de segmento – mapeia o endereço físico; cada tabela é composta por: ◦ base – contém o endereço físico inicial onde o segmento reside na memória ◦ limite – especifica o tamanho do segmento Segment-table base register (STBR) aponta para a localização da tabela de segmento na memória Segment-table length register (STLR) indica o número de segmento usado por um programa; número do segmento s é legal se s < STLR 63 Gerenciamento de Memória Virtual - Segmentação Segmentação – Proteção: ◦ Cada segmento representa uma porção semântica do programa – segmentos que são instruções, enquanto outros são dados. ◦ Os segmentos de instruções podem ser definidos como somente de leitura ou de execução; ◦ O hardware de mapeamento verifica o bit de proteção associado com cada entrada na tabela de segmentos para evitar acesso ilegal. 06/04/09 64 Arquitetura de Segmentação 65 Arquitetura de Segmentação 66 Gerenciamento de Memória Segmentação Segmentação: ◦ Problemas encontrados => embora haja espaço na memória, não há espaço contínuo: Política de re-alocação: um ou mais blocos são realocados para abrir espaço contínuo (pode criar fragmentação externa); ◦ Necessidade: Política de compactação: para que todos os espaços sejam compactados; Política (bloquear): fila de espera; Política de troca: substituição de segmentos; 06/04/09 67 Gerenciamento de Memória Virtual – Segmentação com Paginação ◦ Técnica de gerenciamento onde o endereçamento lógico é divido em segmentos e, por sua vez, cada segmento é dividido fisicamente em páginas. ◦ O endereço virtual é formado pelo nº do segmento (NSV), um nº da página (NPV) dentro desse segmento e um deslocamento dentro da página. O nº do segmento aponta para uma entrada na tabela de segmentos, que por sua vez aponta para uma tabela de páginas. 06/04/09 68 Gerenciamento de Memória Virtual – Segmentação com Paginação ◦ Para programador: sua aplicação continua sendo mapeada por segmentos de tamanhos diferentes, em função das subrotinas e estruturas definidas no programa. ◦ O sistema trata cada segmento com um conjunto de páginas de mesmo tamanho, mapeadas por uma tabela de páginas associada ao segmento. ◦ Um segmento não precisa estar contíguo na memória principal, eliminando o programa de fragmentação externa. Exemplo: Arquitetura Pentium segue esse modelo 06/04/09 69 Exemplo: Intel Pentium Suporta: ◦ Segmentação e segmentação com paginação A CPU gera o endereço lógico: ◦ Que são dados à unidade de segmentação; A unidade produz um endereço linear para cada endereço lógico. O enderço linear é dado à unidade de paginação, que por sua vez gera o endereço físico na memória; ◦ Essas unidades foram o equivalente a unidade de gerência MMU. 70 Segmentação: Intel Pentium Tamanho máximo do segmento: 4 GB Número máximo de segmentos por processo é 16 KB. 8 K privados mantidas na tabela de descritor local 8 K compartilhado mantidados na tabela de descritor global 71 Paginação: Intel Pentium Tamanho da página : 4 KB paginação em 2 níveis ou 4 MB páginação em um nível; Os 10 bits mais alta ordem referencia o diretório de página p p 1 2 d 72 Linux com Paginação em 3 Níveis No Pentium, tamanho do diretório do meio = 0 Sumário CPU gera endereço lógico Alocação de memória contíguo Primeiro, Melhor ou Pior Ajuste Paginação: alocação não contíguo de memória Segmentação: tamanho variável de acordo com a visao de usuário Segmentação e Paginação no Pentium 74 Leituras Sugeridas Silberschatz, A., Galvin, P. B. Gagne, G. Sistemas Operacionais com Java. 7º edição. Editora Campus, 2008 . TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: Pearson, 3 ed. 2010 Nota de Aula Acesse o link abaixo: http://hostel.ufabc.edu.br/~marcelo.nascime nto/ Obrigado!!! Exercícios 1 - Suponha um sistema de 128 Kb de memória principal e que utilize um sistema operacional de 64 Kb que implemente alocação particionada estática realocável. Considere também que o sistema foi implementado em três partições: P1(8Kb), P2(24Kb) e P3(32Kb). Calcule a fragmentação interna da memória principal após a carga de três programas: PA, PB e PC. A)P1->PA(6 Kb); P2->PB(20Kb); P3->PC(28Kb); B) P1->PA(4 Kb); P2->PB(16 Kb); P3->PC(26Kb); C)P1->PA(8 Kb); P2->PB(24Kb); P3->PC(32Kb); 2 – Considere o exercício anterior, seria possível executar quatro programas concorrentemente utilizando apenas a técnica de alocação de particionamento estática realocável? Se for possível, como? Considerando ainda o mesmo exercício, seria possível executar um programa de 36 Kb? Se for possível, como? 3 – O que é fragmentação interna e fragmentação externa? Qual o tipo de fragmentação apresentado no método de gerenciamento de partições fixas? 29/03/09 77