ARQUITETURAS DE COMPUTADORES II Gerência de Memória Principal César A. Marcon, César De Rose e Fernando Moraes 2 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. Endereçamento Não-contíguo 3 / 55 Introdução à Gerência da Memória Principal • Sistema monoprogramado memória principal dividida em duas partes – Uma para SO – Outra para programa em execução • Sistema multiprogramado memória de programa é dividida entre vários processos • SO divide memória dinamicamente Gerência de memória • Gerência de memória eficiente é vital para sistemas multiprogramados – Motivo • Se poucos processos estiverem na memória processador ficará parado esperando por operações de E/S – Solução • Técnica de gerência aumenta número de processos na memória, aumentando utilização do processador 4 / 55 Gerência da Memória Principal (hierarquia) • Memória principal (MP) é mais um nível da hierarquia de memória – Princípio da gerência igual a outros níveis de memória • Dados mais usados são trazidos para MP para diminuir tempo médio de acesso ao nível mais baixo, neste caso o disco 5 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. Endereçamento Não-contíguo 6 / 55 Histórico e Técnicas de Gerência de Memória Principal • Memórias RAM eram empregada como área temporária para acelerar o acesso aos dados • Recurso caro na época • Tamanho reduzido (poucos Kbytes) – Muitos programas não cabiam na memória junto com seu ambiente de execução (interpretador, bibliotecas, etc.) • Gerência de MP não utiliza mesmas técnicas que gerência de caches por 2 motivos – Evolução Histórica • Idéia de memória como área de armazenamento temporário de dados é anterior ao conceito de cache – Diferentes Características • Tamanho e tempo de acesso da MP são muito maiores que das caches • Ao contrário das caches parte da gerência pode ser feita em SW • Unidades de gerência possuem a identificação do processo dono (pode ser utilizado na estratégia de gerência) 7 / 55 Gerência de Memória em Sistemas Monoprogramados • Objetivo – Permitir que programas maiores que a memória pudessem executar • Primeiras estratégias baseadas em overlays (sobreposição) – Responsabilidade total do programador – Programador dividia programa em partes que podiam executar autonomamente na memória (overlay) • No final dessas partes era colocado código responsável pela carga da próxima parte que iria sobrepor – Endereços antigos não são mais necessários • Programador tinha controle total da memória – Responsável pela troca das partes • Programa escrito de forma a evitar quebras em muitas partes – A troca tinha um alto custo 8 / 55 Gerência de Memória em Sistemas Multiprogramados • Multiprogramação trouxe dificuldades – Gerência de overlays deve possibilitar vários programas executando concorrentemente mesmo que estes somados não coubessem na memória – Gerência de overlays de cada programa não podia interferir na dos outros programas • Necessário que agente externo seja responsável pela gerência • Responsabilidade de gerenciar memória passou do usuário para monitor residente, mas tarde chamado de SO 9 / 55 Exercícios 1. O que você entende por gerência de memória principal? Existe(m) alguma(s) diferença(s) quando comparado com a gerência de memória cache? Qua(l/is)? 2. Para que servia a gerência de memória em máquinas monoprogramadas? Descreva como eram os primeiros modelos de gerenciamento de memória. 3. Quem normalmente é responsável pela gerência de memória nas máquinas atuais? 4. Explique a técnica de overlay. Para que era utilizada a mesma? Qual problema da mesma? 5. Supondo que o custo de memórias não fosse considerado, o que seria melhor, ter uma hierarquia com milhares de níveis ou um pequeno conjunto de níveis? Qual o problema de ter vários níveis? Qual o problema de não ter níveis? 6. Porque a gerência de memória principal pode ser feita em SW, enquanto que a gerência de memórias cache deve ser feita em HW? 10 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3 / 4. Endereçamento da Memória Principal 11 / 55 Endereçamento a Memória Principal • Problema – Como endereços de um programa são usados para acessar 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 • Melhora aproveitamento da memória menor fragmentação externa pelo aproveitamento de lacunas – Desvantagens • Gerência de memória fica mais trabalhosa 12 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. Endereçamento Não-contíguo 13 / 55 Endereçamento Contíguo • Existem duas formas de endereçamento para gerência de memória em áreas contíguas – Direto – Relativo • Endereçamento Direto – Endereços do programa são usados diretamente no acesso à memória principal – Endereços são definidos durante a compilação/ligação ou carga • Endereçamento Relativo – Endereços do programa são relativos, devendo ser definidos em tempo de execução – Endereços são definidos na hora do acesso 14 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 3.1. Endereçamento Direto 3.2. Endereçamento Relativo 4. Endereçamento Não-contíguo 15 / 55 Endereçamento Contíguo Direto • Endereço aponta para posição na memória que está definida e não pode ser alterada 16 / 55 Endereçamento Contíguo Direto (multiprogramação) • 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 17 / 55 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 18 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 3.1. Endereçamento Direto 3.2. Endereçamento Relativo 4. Endereçamento Não-contíguo 19 / 55 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 20 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. Endereçamento Não-contíguo 21 / 55 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 22 / 55 Fragmentação de Memória • Problema diretamente relacionado com gerência de MP • 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 (Ex: 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 (Ex: segmento) • Como ocorre – Seqüência de alocações e liberações – Conseqüência • Requisição de usuário pode ser negada apesar de existir memória livre 23 / 55 Fragmentação de Memória Fragmentação interna Programa 1 Página 1 Programa 2 Página 2 Programa 2 Fragmentação externa Segmento 1 (Programa 1) Segmento 2 ( (Programa 2) Página 3 Fragmento Fragmento Segmento 3 (P1) Programa 1 Fragmento Página 4 Fragmento Página 5 Programa 3 Página 6 Segmento 4 (Programa 3) Fragmento 24 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. 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 25 / 55 Endereçamento Não-Contíguo Paginado • • • Frames com tamanho fixo (2k, 4k, ou 8k) Endereçamento lógico do programa quebrado em páginas do mesmo tamanho dos frames Quando processo é executado todas suas páginas são carregadas para frames livres da memória (qualquer página em qualquer frame livre) 26 / 55 • • • 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 Gbyte (232) com páginas de 1 Kbyte (210 p=10 bits) resulta em 22 bits para f (222 4 Mframes na MP) 27 / 55 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) 28 / 55 • 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 29 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. 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 30 / 55 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, todos seus segmentos são carregados para memória (em qualquer posição livre) 31 / 55 • • • 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 de s 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 – Este teste não era necessário no endereçamento paginado pela limitação do número de bits 32 / 55 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 – 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 33 / 55 Endereçamento Não-Contíguo Segmentado (Vantagens e Desvantagens) 34 / 55 Endereçamento do 8086 (16 bits) • 20 bits para endereçamento 1 MB limitará o DOS • Não implementa memória cache ou virtual, tão pouco mecanismos de proteção • Endereço – lógico • 16 bits para o segmento (code, data, stack, extra) • 16 bits para o offset – físico • 20 bits (1MB) • Segmentos de até 64 KB • 4 segmentos ativos por vez endereça até 256 KB por vez • Segmentos contínuos, sobrepostos (parcial ou totalmente) e disjuntos • Composição do endereço – segmento deslocado para direita 4x + offset • Exemplo: LÓGICO segmento offset 456A 1620 + 46CC0 FÍSICO 456A0 1620 35 / 55 Endereçamento do 80286 (16 bits) • Função de gerenciamento de memória (MMU) integrado no chip • Processador multi-usuário / multi-tarefa • Gerenciamento de memória – Segmentos • Não precisam estar necessariamente na MP • Em caso de page-fault gera uma interrupção • Limite estabelecido na criação do segmento (segurança) • Descritor do segmento (8 bytes) Tamanho e privilégio • Tabela global – Informações do SO Compartilhada por todas as tarefas • Tabela local – Informações relativas às tarefas 36 / 55 Endereçamento do 80286 (modos de endereçamento) • Endereço físico – 224 16 MB • Endereço lógico – 230 1 GB por tarefa • Modo real ENDEREÇO LÓGICO 16 bits 16 bits “Seletor” “Offset” 16 – Igual ao 8086 20 bits • Modo protegido – TI: table indicator (global ou local) – RPL: request privilege level (SO) – Espaço de endereçamento de tarefas 1 TI 2 RPL índice 13 16 descritor 24 • Uma tabela: 213 * 216 = 2 29 – 213 tamanho da tabela – 216 tamanho do segmento • Assim – Global + Local = 229 + 229 = 230 – 1GB por tarefa 24 TABELA (global ou local) ENDEREÇO FÍSICO 37 / 55 Endereçamento Não-Contíguo Segmentado (386 a Pentium) • Modo protegido – Flat: 1 só segmento de 4GB • Modo Virtual 8086 – Emula o 8086 / permite rodar aplicações 8086 utilizando mais de 1MB Seletor “Offset” 16 32 14 De 8 até 64k acessos limite end. ini. TABELA 32 32 ENDEREÇO FÍSICO operando 4GB (max) 38 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. 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 39 / 55 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 40 / 55 Endereçamento Não-Contíguo Segmento-Paginado (conversão de endereços) • Seqüê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 41 / 55 Endereçamento Não-Contíguo Segmento-Paginado (Vantagens e Desvantagens) 42 / 55 Endereçamento Não-Contíguo Segmento-Paginado (Algoritmos para Alocação de Segmento na Memória) • First fit – Pega o primeiro segmento livre que tem tamanho suficiente para a requisição de memória – Rápido, mas gera muita segmentação – Tende a deixar a memória com diversos buracos de tamanho médio 43 / 55 Endereçamento Não-Contíguo Segmento-Paginado (Algoritmos para Alocação de Segmento na Memória) • Next fit – Pega o próximo livre a partir do último – Requer um ponteiro que armazena a última posição alocada – É uma variação do first fit, que utiliza melhor toda a memória 44 / 55 Endereçamento Não-Contíguo Segmento-Paginado (Algoritmos para Alocação de Segmento na Memória) • Best fit – Pesquisa a lista de memória inteira, procurando o segmento livre que mais se aproxima do tamanho desejado – Para a pesquisa se encontra um segmento que atende exatamente ao tamanho desejado – Normalmente deixa a memória com vários grandes buracos e pequenos buracos 45 / 55 Endereçamento Não-Contíguo Segmento-Paginado (Algoritmos para Alocação de Segmento na Memória) • Worst fit – Pesquisa o maior segmento livre – O algoritmo privilegia a existência de segmentos grandes 46 / 55 Endereçamento Não-Contíguo Segmento-Paginado (Algoritmos para Alocação de Segmento na Memória) • Buddy – – – – Divide a memória em segmentos pares Tipicamente implementado com algoritmos para árvore binárias Linux Minimiza em muito a fragmentação externa, mas aumenta a fragmentação interna Número máximo de compactações igual a log2(u) – log2(l) Onde • u: é o tamanho máximo do segmento • l: é o tamanho do menor segmento 47 / 55 Índice 1. Introdução 2. Histórico da Gerência de Memória 3. Endereçamento Contíguo 4. 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 48 / 55 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!!! 49 / 55 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) 50 / 55 Layout do Processador Pentium Aproximadamente 40% do chip dedicado à cache 51 / 55 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 conseqüê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: 2e10. 52 / 55 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. 53 / 55 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 L1 e L2, 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 L2 Registradores Memória Principal Disco 54 / 55 Exercícios 19. (POSCOMP 2008 - 53) Analise as seguintes afirmativas I. II. III. IV. O gerenciamento de operações de entrada e saída permite o compartilhamento de periféricos entre múltiplos processos. O gerenciamento de memória depende do hardware, mais especificamente da MMU (Memory Management Unit) para definir se partições, paginação ou segmentação podem ser usadas. Os sistemas operacionais de tempo compartilhado não necessitam de interrupções para sua implementação. O algoritmo FIFO (First In, First Out) de escalonamento de processos é inerentemente preemptivo. A análise permite concluir que a) b) c) d) e) Apenas as afirmativas I e II são verdadeiras. Apenas as afirmativas I, II e III são verdadeiras. Apenas as afirmativas I, II e IV são verdadeiras. Apenas as afirmativas II e IV são verdadeiras. Nenhuma das afirmativas é verdadeira. 55 / 55 Resposta de Exercícios 19. (POSCOMP 2008 - 53) Analise as seguintes afirmativas I. II. III. IV. O gerenciamento de operações de entrada e saída permite o compartilhamento de periféricos entre múltiplos processos. O gerenciamento de memória depende do hardware, mais especificamente da MMU (Memory Management Unit) para definir se partições, paginação ou segmentação podem ser usadas. Os sistemas operacionais de tempo compartilhado não necessitam de interrupções para sua implementação. O algoritmo FIFO (First In, First Out) de escalonamento de processos é inerentemente preemptivo. A análise permite concluir que a) b) c) d) e) Apenas as afirmativas I e II são verdadeiras. Apenas as afirmativas I, II e III são verdadeiras. Apenas as afirmativas I, II e IV são verdadeiras. Apenas as afirmativas II e IV são verdadeiras. Nenhuma das afirmativas é verdadeira. 56 / 55 Exercícios (ENADE 2014, Questão 30) 57 / 55 Resposta de Exercícios (ENADE 2014, Questão 30) 58 / 55 Exercícios (POSCOMP 2014, Questão 45) Considere uma memória paginada, com espaço de endereçamento lógico de 8 páginas, cada uma com 4096 endereços. Nesse caso, a memória física possui 64 quadros. Com relação ao tamanho dos endereços lógicos e físicos, assinale a alternativa correta. a) Endereço Lógico possui 15 bits e Endereço Físico possui 18 bits. b) Endereço Lógico possui 15 bits e Endereço Físico possui 12 bits. c) Endereço Lógico possui 13 bits e Endereço Físico possui 18 bits. d) Endereço Lógico possui 12 bits e Endereço Físico possui 18 bits. e) Endereço Lógico possui 12 bits e Endereço Físico possui 12 bits. 59 / 55 Resposta de Exercícios (POSCOMP 2014, Questão 45) Considere uma memória paginada, com espaço de endereçamento lógico de 8 páginas, cada uma com 4096 endereços. Nesse caso, a memória física possui 64 quadros. Com relação ao tamanho dos endereços lógicos e físicos, assinale a alternativa correta. a) Endereço Lógico possui 15 bits e Endereço Físico possui 18 bits. b) Endereço Lógico possui 15 bits e Endereço Físico possui 12 bits. c) Endereço Lógico possui 13 bits e Endereço Físico possui 18 bits. d) Endereço Lógico possui 12 bits e Endereço Físico possui 18 bits. e) Endereço Lógico possui 12 bits e Endereço Físico possui 12 bits.