Organizao e Arquitetura de Computadores II Gerncia de

  • Slides: 36
Download presentation
Organização e Arquitetura de Computadores II Gerência de Memória Principal Capítulo 6 do Tanenbaum

Organização e Arquitetura de Computadores II Gerência de Memória Principal Capítulo 6 do Tanenbaum e Austin Capítulo 4 do Monteiro Última alteração: 20/11/2017 Prof. Ney Laert Vilar Calazans Baseado em notas de aulas originais do Prof. Dr. César Marcon

2 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo

2 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo

3 / 36 Endereçamento da Memória Principal • Problema – Como relacionar endereços de

3 / 36 Endereçamento da Memória Principal • Problema – Como relacionar endereços de um programa com posições da MP? • Solução – Modos de endereçamento • Endereçamento Contíguo – Programa é carregado inteiro em uma única área de memória contígua • Endereçamento Não-Contíguo – Quebra programa em pedaços carregados em áreas distintas de memória – Vantagens • Não há necessidade de respeitar qualquer ordem • Melhor aproveitamento da memória – Desvantagens • Gerência de memória fica mais trabalhosa

4 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo

4 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo

5 / 36 Endereçamento Contíguo • Modos de endereçamento – Direto – Relativo •

5 / 36 Endereçamento Contíguo • Modos de endereçamento – Direto – Relativo • Endereçamento Direto – Endereços do programa são usados diretamente no acesso à MP – Endereços são definidos durante a compilação/ligação ou carga • Endereçamento Relativo – Endereços do programa são relativos – Endereços são definidos em tempo de execução

6 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 2. 1. Endereçamento Direto 2.

6 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 2. 1. Endereçamento Direto 2. 2. Endereçamento Relativo 3. Endereçamento Não-contíguo

7 / 36 Endereçamento Contíguo Direto • Endereço aponta para posição na memória que

7 / 36 Endereçamento Contíguo Direto • Endereço aponta para posição na memória que está definida e não pode ser alterada • Na multiprogramação este endereçamento pode gerar conflitos no acesso à memória – Posição do programa na memória definida sem conhecimento do que estava alocado – Programas só podem ser carregados na memória se seus espaços de endereçamento são disjuntos

8 / 36 Endereçamento Contíguo Direto (multiprogramação - geração do endereço na carga) •

8 / 36 Endereçamento Contíguo Direto (multiprogramação - geração do endereço na carga) • Espaço de endereçamento de um programa inicia sempre em 0 e pode ser facilmente relocados na carga pelo carregador • Problemas – A conversão dos endereços pode atrasar consideravelmente a operação de carga – O programa não pode ser mudado de lugar durante a sua execução impede compactação e swap

9 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 2. 1. Endereçamento Direto 2.

9 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 2. 1. Endereçamento Direto 2. 2. Endereçamento Relativo 3. Endereçamento Não-contíguo

10 / 36 • Endereçamento Contíguo Relativo Alternativa mais flexível endereço montado somente no

10 / 36 • Endereçamento Contíguo Relativo Alternativa mais flexível endereço montado somente no acesso – Espaço de endereçamento lógico inicia em 0 – Processador possui reg. de endereçamento base contém base do endereço físico dos programas – Endereço real é montado com a base somada ao endereço relativo do programa em cada acesso à memória • Programa pode ser trocado de lugar na memória em tempo de execução

11 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo

11 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo

12 / 36 Endereçamento Não-Contíguo • Programa é dividido em pedaços carregados em áreas

12 / 36 Endereçamento Não-Contíguo • Programa é dividido em pedaços carregados em áreas distintas de memória • Conversão dinâmica de endereços – Ao acessar a memória, endereços lógicos são convertidos em físicos – Implementada em HW (mais rápido). Exemplo: MMU (Memory Manager Unit) • Três formas de endereçamento – Paginação • Unidade de gerência de memória física quebrada em frames com tamanho fixo – Segmentação • Unidade de gerência de memória física quebrada em segmentos com tamanho variável – Segmento-paginação • Combinação dos endereçamentos acima

13 / 36 Fragmentação de Memória • Problema diretamente relacionado com gerência de MP

13 / 36 Fragmentação de Memória • Problema diretamente relacionado com gerência de MP onde a requisição de usuário pode ser negada apesar de existir memória livre – Fragmentação resulta em desperdício de memória • Tipos de fragmentação – Fragmentação Interna • Quando ocorre – Quando usada unidade de gerência de tamanho fixo (e. g. , página) • Como ocorre – Requisição não exatamente divisível pela unidade é arredondada para cima resulta unidade alocada mas não completamente ocupada – Fragmentação Externa • Quando ocorre – Quando usada unidade de gerência de tamanho variável (e. g. , segmento) • Como ocorre – Sequência de alocações e liberações

14 / 36 Fragmentação de Memória Fragmentação interna Fragmentação externa

14 / 36 Fragmentação de Memória Fragmentação interna Fragmentação externa

15 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 3. 1.

15 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 3. 1. Endereçamento Paginado 3. 2. Endereçamento Segmentado 3. 3. Endereçamento Segmento-Paginado 3. 4. Otimização do Endereçamento Não-contíguo

16 / 36 • • • Endereçamento Não-Contíguo Paginado Frames com tamanho fixo (e.

16 / 36 • • • Endereçamento Não-Contíguo Paginado Frames com tamanho fixo (e. g. , 2 k, 4 k, ou 8 k) Endereçamento lógico do programa quebrado em páginas do mesmo tamanho dos frames Quando processo é executado, páginas são carregadas em frames livres da memória qualquer página em qualquer frame livre

17 / 36 • • • Endereçamento Não-Contíguo Paginado (conversão de endereços) Bits usados

17 / 36 • • • Endereçamento Não-Contíguo Paginado (conversão de endereços) Bits usados para d determinam tamanho dos frames Bits usados para p determinam número máximo de páginas de um processo Bits de f determinam total de frames da MP – f é obtido com a divisão da MP pela página – Exemplo: MP de 4 Gbytes (232) com páginas de 1 Kbyte (210 p=10 bits) resulta em 22 bits para f (222 4 M frames na MP)

18 / 36 Endereçamento Não-Contíguo Paginado (conversão de endereços) • Unidade de gerência de

18 / 36 Endereçamento Não-Contíguo Paginado (conversão de endereços) • Unidade de gerência de tamanho fixo gera fragmentação interna • Tabela de páginas converte páginas em frames (1 tabela por processo) • Tabela de páginas pode ser armazenada em – Registradores rápido mas limita tamanho da tabela – Memória principal (área do sistema) lento, são necessários dois acessos (1 tabela + 1 dado) pode ter tamanho ilimitado – TLB (Translation Lookaside Buffer) área de memória associativa usada como cache para as conversões mais efetuadas • Situa-se entre processador e cache • Tamanho da página – Pequena menor fragmentação interna, tabela de páginas fica maior – Grande maior fragmentação interna, tabela de páginas fica menor • Tabela de Frames (Frame Table) – Controle dos frames livres (para alocação e substituição de páginas)

19 / 36 • Endereçamento Não-Contíguo Paginado (conversão de endereços) Tabela de frames para

19 / 36 • Endereçamento Não-Contíguo Paginado (conversão de endereços) Tabela de frames para todo sistema – Tamanho fixo número de frames da MP é conhecido tamanho da memória / tamanho da página – Procura por first-found (qualquer lacuna serve para qualquer página) – Possui campos adicionais para controle da política de troca de páginas (LRU, LFU) • • Quando processos terminam suas páginas na tabela de frames são marcadas como livres É possível compartilhar frames entre vários processos (leitura) – Fácil de implementar com várias tabelas de página apontando para mesmo frame – Controle adicional Verificar quando frame compartilhado pode ser desalocado • Vantagens/Desvantagens

20 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 3. 1.

20 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 3. 1. Endereçamento Paginado 3. 2. Endereçamento Segmentado 3. 3. Endereçamento Segmento-Paginado 3. 4. Otimização do Endereçamento Não-contíguo

21 / 36 Endereçamento Não-Contíguo Segmentado • • • Não divide memória física Pode

21 / 36 Endereçamento Não-Contíguo Segmentado • • • Não divide memória física Pode alocar unidade em qualquer posição Unidade de gerência com tamanho variável denominada segmento Segmento definido pelo usuário ou compilador – Endereços de um mesmo segmento estão relacionados – Gerência de memória mais preocupada com a visão do usuário – Exemplo de segmentos: dados, código, pilha • Quando processo é executado, segmentos são carregados para memória (em qualquer posição livre)

22 / 36 • • • Endereçamento Não-Contíguo Segmentado (conversão de endereços) Número de

22 / 36 • • • Endereçamento Não-Contíguo Segmentado (conversão de endereços) Número de bits de d determina tamanho máximo dos segmentos Número de bits determina número máximo de segmentos de um processo Deslocamento do endereço lógico é comparado com tamanho do segmento (tabela de segmentos) Evita invasões de segmentos vizinhos – Esta comparação não é necessária no endereçamento paginado pela limitação do número de bits

23 / 36 Endereçamento Não-Contíguo Segmentado (conversão de endereços) • Unidade de gerência variável

23 / 36 Endereçamento Não-Contíguo Segmentado (conversão de endereços) • Unidade de gerência variável Gera fragmentação externa – Compactação da memória necessária devido alta fragmentação externa • É possível compartilhar segmentos entre vários processos (leitura) – Fácil implementar com várias tabelas de segmento apontando para mesma área de memória • Tabela de Segmentos aponta base do segmento na MP e verifica se deslocamento está dentro do limite do segmento • Tabela de segmentos pode ser armazenada igual a paginação – Em registradores, MP, TLB • Tabela de Alocação controla quais lacunas estão livres • Uma tabela de alocação para todo o sistema de tamanho variável – Número de áreas da MP é inicialmente 1 (toda a memória) – Ao longo da gerência pode variar com a inclusão de áreas ocupadas – Liberação de segmentos pode resultar na junção de vários segmentos e na diminuição do número de entradas da tabela

24 / 36 Endereçamento Não-Contíguo Segmentado (Vantagens e Desvantagens)

24 / 36 Endereçamento Não-Contíguo Segmentado (Vantagens e Desvantagens)

25 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 4. 1.

25 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 4. 1. Endereçamento Paginado 4. 2. Endereçamento Segmentado 4. 3. Endereçamento Segmento-Paginado 4. 4. Otimização do Endereçamento Não-contíguo

26 / 36 Endereçamento Não-Contíguo Segmento-Paginado • Combinação entre segmentação e paginação – Do

26 / 36 Endereçamento Não-Contíguo Segmento-Paginado • Combinação entre segmentação e paginação – Do mapeamento segmentado aproveita visão lógica de memória próxima do usuário – Do mapeamento paginado aproveita a gerência de memória mais simples • • • Usuário aloca segmentos e estes são mapeados em grupo de páginas Memória física quebrada em frames de tamanho fixo, como na paginação. Porém existe informação das páginas que compõem cada segmento Unidade de gerência de tamanho fixo gera fragmentação interna Tabela de Segmentos usada para obter base da tabela de páginas do segmento desejado (uma por processo) Tabela de páginas usada para converter páginas de cada segmento em frames (uma tabela por segmento de cada processo) Tabela de Frames usada para controle dos frames livres – Uma tabela de frames para todo sistema – Tamanho fixo Número de frames da MP é conhecido (tamanho da memória / tamanho da página) – Procura por first-found (qualquer lacuna serve para qualquer página) • Quando processos morrem suas páginas na tabela de frames são marcadas como livres

27 / 36 Endereçamento Não-Contíguo Segmento-Paginado (conversão de endereços) • Sequência de acesso 1.

27 / 36 Endereçamento Não-Contíguo Segmento-Paginado (conversão de endereços) • Sequência de acesso 1. Número do segmento fornece na tabela de segmentos a base da tabela de páginas deste segmento 2. Número da página e base da tabela de páginas fornece frame correspondente 3. Número do frame e deslocamento dentro dele fornece acesso à memória

28 / 36 Endereçamento Não-Contíguo Segmento-Paginado (Vantagens e Desvantagens)

28 / 36 Endereçamento Não-Contíguo Segmento-Paginado (Vantagens e Desvantagens)

29 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 3. 1.

29 / 36 Índice 1. Introdução 2. Endereçamento Contíguo 3. Endereçamento Não-contíguo 3. 1. Endereçamento Paginado 3. 2. Endereçamento Segmentado 3. 3. Endereçamento Segmento-Paginado 3. 4. Otimização do Endereçamento Não-contíguo

30 / 36 Otimização do Endereçamento Não-Contíguo (TLB) • Problema – Tabelas de páginas

30 / 36 Otimização do Endereçamento Não-Contíguo (TLB) • Problema – Tabelas de páginas e de segmento ficam tão grandes que precisam ser armazenadas na memória – Cada acesso à MP necessita no mínimo outro acesso para obtenção das tabelas Reduz consideravelmente velocidade de acesso à MP • Solução – TLB (Translation Lookaside Buffer) Memória associativa que acelera a conversão • • • TLB funciona como cache guardando conversões mais usada Procura é feita em paralelo em todas posições Características – Tamanho da linha 4 -8 bytes (pode conter segmento, página e frame) – Número de linhas 24 -1024 • Exemplo: TLB de um Pentium III possui 32 linhas – Hit-time 1 ciclo, Miss-Penalty 10 -30 ciclos – Hit-ratio aproximadamente 99% – Como pode ser tão alto? • Devido a localidade dos acessos!!!

31 / 36 • • Exemplo de Utilização (Segmento-Paginado ) TLB é consultada em

31 / 36 • • Exemplo de Utilização (Segmento-Paginado ) TLB é consultada em paralelo ao acesso das tabelas. Se hit retorna frame desejado Se miss a consulta as tabelas é feita normalmente e o frame obtido é colocado na TLB no lugar da conversão menos recentemente utilizada (LRU)

32 / 36 Layout do Processador Pentium Cache TLB Instruções Dados Aproximadamente 40% do

32 / 36 Layout do Processador Pentium Cache TLB Instruções Dados Aproximadamente 40% do chip dedicado à cache

33 / 36 Acesso a Endereços de Memória

33 / 36 Acesso a Endereços de Memória

34 / 36 Exercícios 1. Quais são os dois grandes conjuntos de endereçamento da

34 / 36 Exercícios 1. Quais são os dois grandes conjuntos de endereçamento da memória principal? Caracterize cada um deles. 2. Quem é responsável pela escolha do endereçamento da memória principal em uma determinada arquitetura? Justifique a possibilidade ou não da tarefa ser a responsável. Faça o mesmo para o SO e para o processador. 3. Explique porque o endereçamento direto para a multiprogramação pode não funcionar se a decisão dos endereços for feita durante a compilação/ligação. Qual a consequência de tomar a decisão durante a carga? 4. O que difere o endereço contíguo direto e realocação na carga com o endereçamento contíguo relativo? 5. Qual é a principal característica da gerência de memória não contígua? Como ela é realizada (qual mecanismo)? Quais são as técnicas? 6. Diferencie os métodos de paginação e de segmentação, mostrando as vantagens e desvantagens de cada um. Mostre como fica a fragmentação de memória em cada método 7. Em um sistema paginado, qual seria o tamanho da área para armazenar a tabela de tradução de endereços se utilizássemos: (a) RAM, (b) Memória associativa. Considere a seguinte estrutura de endereçamento: a) Endereço virtual: 4 GBytes; b) Endereço físico: 8 MBytes; c) Número de páginas: 2 e 10.

35 / 36 Exercícios 8. Faça um diagrama explicando o modo de tradução de

35 / 36 Exercícios 8. Faça um diagrama explicando o modo de tradução de endereços segmentopaginados. Qual o problema deste método? Qual a solução? 9. O que você entende por fragmentação de memória? Qual a classificação usual de fragmentação de memória? Explique e compare cada uma delas. Faça um desenho ilustrativo de como seria cada fragmentação 10. Compare a técnica de gerência de memória paginada com a gerência segmentada em relação à fragmentação gerada, alocação de unidades e substituição de unidades? 11. Faça um diagrama explicando o modo de tradução de endereços segmentopaginados. Qual o problema deste método? Qual a solução? 12. Onde podem ficar as tabelas de páginas e frames? O que pode ser feito para aumentar o desempenho? Compare as vantagens e desvantagens de cada opção 13. Desenhe como fica a conversão de endereços na gerência de memória segmento-paginada e descreva os passos de uma conversão 14. Faça uma tabela com o número de tabelas de páginas, tabelas de segmentos, tabelas de frames e tabelas de gerência de memória para as três técnicas de gerência de memória vistas em aula.

36 / 36 Exercícios 15. O que são TLBs? Para que servem? 16. Faça

36 / 36 Exercícios 15. O que são TLBs? Para que servem? 16. Faça um fluxograma (use a imaginação!) correspondente ao acesso a um endereço lógico, mostrando o que ocorrem em caso de: a) TLB miss / TLB hit b) Cache miss / Cache hit c) Page fault / Page hit 17. Faça um desenho de como se encaixam as várias hierarquias de memória, considerando cache L 1 e L 2, memória principal e disco, para um modo de endereçamento segmento-paginado com TLB 18. De pesos de 1 (maior) a 5 (menor) para: TLB Capacidade Velocidade Custo Cache L 2 Registradores Memória Principal Disco