• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SO-06 Gerenciamento de Memória: Paginação e Segmentação
 

SO-06 Gerenciamento de Memória: Paginação e Segmentação

on

  • 26,876 views

Gerência de Memória. Paginação e Segmentação de Memória (Sistemas Operacionais)

Gerência de Memória. Paginação e Segmentação de Memória (Sistemas Operacionais)

Statistics

Views

Total Views
26,876
Views on SlideShare
26,728
Embed Views
148

Actions

Likes
3
Downloads
752
Comments
2

3 Embeds 148

http://www.slideshare.net 145
http://webcache.googleusercontent.com 2
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    SO-06 Gerenciamento de Memória: Paginação e Segmentação SO-06 Gerenciamento de Memória: Paginação e Segmentação Presentation Transcript

    • Gerência de Memória Paginação e Segmentação
    •   Paginação   Hardware   Tamanho das Páginas   Modelo   Estrutura da Tabela de Páginas   Paginação em Vários Níveis   Compartilhamento de Páginas   Segmentação   Hardware   Implementação de Tabela de Segmentos   Proteção e Compartilhamento   Fragmentação   Segmentação com Paginação Eduardo Nicola F. Zagari 2 Paginação e Segmentação
    •   Outra solução (além da compactação) para o problema da fragmentação externa:   permitir que o espaço de endereçamento lógico seja não contíguo, facilitando a alocação dos buracos da memória   esse mecanismo evita o problema idêntico que ocorre com a memória secundária, onde a compactação tem alto custo   A memória física é dividida em partes de tamanho fixo, chamadas de blocos (frames ou molduras)   A memória lógica é dividida em partes do mesmo tamanho, chamadas de páginas   A memória secundária também é dividida em partes do mesmo tamanho dos blocos da memória principal Eduardo Nicola F. Zagari 3 Paginação e Segmentação
    •   Forma de atribuição de endereço em tempo de execução  usar paginação é semelhante a usar uma tabela de registradores base, um para cada bloco 0 Página 0 1 Página 1 0 1 2 Página 2 1 4 3 Página 3 2 3 4 ... 3 7 5 6 7 Memória Lógica Tabela de Páginas Memória Física Eduardo Nicola F. Zagari 4 Paginação e Segmentação
    • Lista de frames livres 14 10 Lista de frames livres 10 13 11 15 11 18 12 20 12 15 13 13 Página 1 14 14 Página 0 15 0 14 15 16 1 13 16 17 17 Página 0 2 18 Página 2 18 18 Página 1 19 3 20 19 Página 2 20 Página 3 20 Página 3 21 Tabela de Páginas 21 Memória Física Memória Física Eduardo Nicola F. Zagari 5 Paginação e Segmentação
    • Eduardo Nicola F. Zagari 6 Paginação e Segmentação
    •   Endereços gerados pela CPU são divididos em:   Número da página (p) – usado como um índice em uma tabela de páginas, a qual contém o endereço base de cada página na memória física.
   Deslocamento de Página (d) – combinado com o endereço base para definir o endereço na memória física que será enviado para a unidade de memória. Eduardo Nicola F. Zagari 7 Paginação e Segmentação
    • End. Lógico End. Físico CPU p d b d Memória Principal p b p: no da página d: deslocamento b: no do bloco Tabela de Páginas Eduardo Nicola F. Zagari 8 Paginação e Segmentação
    •   O tamanho da página (e do bloco) é definido de acordo com o hardware   Ele é normalmente uma potência de 2 (atualmente, o usual é entre 512 bytes e 8192 bytes), veja o por quê: Se tamanho do espaço lógico: 2a e tamanho da página: 2b p d a-b b a Eduardo Nicola F. Zagari 9 Paginação e Segmentação
    • Tamanho da Página: 1000 = 103 Endereço: 17436 End. Lógico End. Físico CPU 17 436 23 436 Memória Principal 17 23 Tabela de Páginas Eduardo Nicola F. Zagari 10 Paginação e Segmentação
    • Tamanho da Página: 256 = 28 Endereço: 17436 = (100010000011100)2 End. Lógico End. Físico CPU 1000100 00011100 10111 00011100 (5916)10 Memória (1000100)2 Principal = 68 23 Tabela de Páginas Eduardo Nicola F. Zagari 11 Paginação e Segmentação
    •   Fragmentação externa resolvida   Fragmentação interna:   tam. pag. = 2048 bytes 35 pag + 1086 bytes   processo = 72766 bytes fragmentação = 2048 - 1086 = 922 bytes   Para processos de tamanho aleatório:   Fragmentação média = (tamanho de pagina) / 2 Eduardo Nicola F. Zagari 12 Paginação e Segmentação
    •   Assim,   páginas menores, menor fragmentação interna   Entretanto,   páginas maiores, menores os gastos com as tabelas de páginas e mais eficientes as transferências (E/S) em discos   Separação entre a memória física e a visão que o usuário tem da memória (espaço único e contíguo)   SO mantém cópia (apontador) das tabelas de páginas de cada processo  maior tempo gasto em uma mudança de contexto Eduardo Nicola F. Zagari 13 Paginação e Segmentação
    • 1.  Pode ser representada em hardware por um conjunto de registradores dedicados - no pequeno de entradas 2.  Pode ser mantida em memória   Registrador Base de Tabela de Página (RBTP)   Registrador de Tamanho da Tabela de Página (RTTP)   Neste esquema, todo acesso a dados/instrução requer 2 acessos à memória: um para a tabela de páginas e outro para os dados/instrução. 3.  Memória Associativa ou TLB (Translation Look-Aside Buffers) - cache em hardware de pequena capacidade e busca rápida Página # Bloco #   Tradução de Endereços (p, b): se p está num registrador associativo, obtem número b do bloco. Caso contrário, obtém número b do bloco a partir da tabela de páginas em memória. Eduardo Nicola F. Zagari 14 Paginação e Segmentação
    • End. Lógico End. Físico CPU p d TLB b d Pagina Bloco Sucesso p b Memória Principal p Se TLB falha b Tabela de Páginas Eduardo Nicola F. Zagari 15 Paginação e Segmentação
    •   Busca Associativa (Pesquisa) = ε unidades de tempo   Considere tempo de ciclo de memória igual a 1 microsegundo   Taxa de acerto – porcentagem de vezes que um número de páginas é encontrado nos registradores associativos (varia com o número de registradores associativos).   Taxa de acerto = α   Tempo de Acesso Efetivo (Tae) Tae = (1 + ε) α + (2 + ε)(1 – α) = 2 + ε – α  Pesquisa: 20 ns e Memória: 100 ns  80% acerto  t.med. acesso = 0.8*120 + 0.2*220 = 140 ns  98% acerto  t.med. = 0.98*120 + 0.02*220 = 122 ns  Intel 80486: 32 reg. associativos e taxa de sucesso 98% Eduardo Nicola F. Zagari 16 Paginação e Segmentação
    •   Proteção de Memória é implementada pela associação de um bit de proteção com cada bloco de memória.
   Bit válida-inválida relacionado a cada entrada na tabela de página:   “válida” indica que a página associada está no espaço de endereços lógico do processo, isto é, uma página válida.   “inválida” indica que a página não está no espaço de endereços lógicos do processo. Eduardo Nicola F. Zagari 17 Paginação e Segmentação
    • Eduardo Nicola F. Zagari 18 Paginação e Segmentação
    •   Espaços de endereçamento lógicos muito grandes (232 a 264 bytes)  tabelas enormes...   Exemplo:   Espaço endereçamento lógico: 32 bits   Tamanho de páginas: 4k (212)  232/212 = 1 M (220) entradas  1 M entradas de 4 bytes = Tabelas de 4 M   Solução: dividir a tabela de páginas em várias partes   Ex.: número da página deslocamento p1 p2 d Eduardo Nicola F. Zagari 19 Paginação e Segmentação
    • 10 10 12 Tabela de páginas p1 p2 d de segundo nível 0 1 Tabela de páginas para os primeiros 4M ≈ ≈ de memória Tabela de páginas 1023 de primeiro nível 0 1 deslocamento 0 p1 1 ≈ ≈ ≈ ≈ 1023 1023 ... 0 p2 1 Para páginas ≈ ≈ 1023 Eduardo Nicola F. Zagari 20 Paginação e Segmentação
    •   Outra vantagem do mecanismo de paginação é a possibilidade de compartilhamento de código.   Exemplo:   40 usuários usando um editor de textos  150 k de código + 50 k de dados  Total: 8000 k   Compiladores, Sistemas de Janelas, Sistemas de Banco de Dados  códigos que nunca modificam a si próprios durante sua execução   Usando compartilhamento de páginas: 2150 k no total Eduardo Nicola F. Zagari 21 Paginação e Segmentação
    • ed 1 0 3 0 ed 2 ed 3 1 4 1 dados 1 ed 1 0 3 2 dados 3 dados 1 2 6 ed 2 1 4 3 ed 1 Processo P1 ed 3 3 1 4 ed 2 Tabela de Pá- dados 3 2 6 ginas para P1 5 Processo P3 3 2 6 ed 3 Tabela de Pá- 7 dados 2 ed 1 ginas para P3 0 3 8 ed 2 1 4 9 ed 3 dados 2 2 6 10 Processo P2 ... 3 7 Tabela de Pá- Memória Física ginas para P2 Eduardo Nicola F. Zagari 22 Paginação e Segmentação
    •   Suponha que os processos P1 e P2 estejam compartilhando páginas de um editor de texto   Problema:  Se o SO remover P1 da memória, P2 terá que trazer de volta todas as páginas que compartilhava de P1  Se P1 terminar, é preciso determinar se suas páginas ainda estão em uso, de forma que seu espaço em disco não seja liberado   Para evitar ter que buscar em todas as tabelas de páginas se uma página é compartilhada ou não (o que é caro!)  montam- se estruturas de dados especiais para tratar das páginas compartilhadas Eduardo Nicola F. Zagari 23 Paginação e Segmentação
    •   Com a paginação, ocorre a separação entre a visão da memória pelo usuário e a memória física   Qual é a visão que o usuário tem da memória? Programa Principal Sub-rotinas Procedimentos Sub- Pilha Funções rotina Módulos Função Tabelas Programa Tabela de Vetores Principal símbolos Pilhas Listas Variáveis locais Espaço de Endereçamento Lógico Variáveis globais Eduardo Nicola F. Zagari 24 Paginação e Segmentação
    •   Segmentação é um esquema de gerência de memória que dá suporte a esta visão do usuário:   o espaço de end. lógico é uma coleção de segmentos   cada segmento tem um nome e um tamanho definido pelo seu propósito   cada endereço é especificado por dois valores: nome (número) do segmento e a posição (deslocamento) no segmento (offset) (<número, posição>)  Elementos dentro do segmento são identificados pelo deslocamento (offset) a partir do início ( 5a entrada da tabela, 3a instrução da função)   Compilador constrói automaticamente os segmentos   Carregador aloca (determina) o número de cada segmento s d Eduardo Nicola F. Zagari 25 Paginação e Segmentação
    • Pilha Sub- Pilha rotina Função Sub Programa rotina Tabela de Principal T.S. símbolos Prog. Princ. Espaço de Endereçamento Lógico Função •  abela de Segmentos: T Memória Física •  ase – contém o endereço físico inicial do segmento na memória b • imite – especifica o tamanho do segmento l Eduardo Nicola F. Zagari 26 Paginação e Segmentação
    • Mapeamento de endereços bidimensionais em endereços físicos unidimensionais Tabela de segmentos s limite base CPU s d Memória Principal sim < + não Interrupção de software; erro de endereçamento Memória Física Eduardo Nicola F. Zagari 27 Paginação e Segmentação
    • 0 Sub- Tabela de segmentos 1400 rotina Seg 0 Programa 2400 Limite Base segmento 0 Principal 0 1000 1400 segmento 2 3200 1 400 6300 Função Seg 3 2 400 4300 Pilha 3 1100 3200 4300 segmento 3 4 1000 4700 Seg 2 segmento 1 4700 Tabela de Seg 4 símbolos 5700 segmento 4 6300 6700 Seg 1 Espaço de Endereçamento Lógico Memória Física Eduardo Nicola F. Zagari 28 Paginação e Segmentação
    •   Assim como a tabela de páginas, a tabela de segmentos pode ser armazenada tanto em registradores rápidos quanto na memória   Se um programa consiste em muitos segmentos, deve-se usar a memória. Um registrador RBTS (Registrador Base da Tabela de Segmentos) aponta para a localização na memória da tabela   Como o tamanho da tabela varia, usa-se um registrador RTTS (Registrador de Tamanho da Tabela de Segmentos) para indicar o comprimento da mesma, isto é, indica o número de segmentos usados pelo programa. número do segmento s é legal se s < RTTS   Pode-se também usar um conjunto de registradores associativos para armazenar as entradas mais recentemente usadas Eduardo Nicola F. Zagari 29 Paginação e Segmentação
    •   Direitos de acesso diferentes a cada segmento   Como os segmentos representam porções semanticamente distintas de um programa, todos os acessos a este segmento serão usados da mesma maneira   Segmento de dados  leitura/escrita/execução   Segmento de instruções  somente leitura/execução   O hardware de tradução de endereços verifica os bits de proteção associados com cada entrada na tabela de segmentos   Possibilidade de detecção pelo hardware de violação de limites de arranjos, matrizes, vetores, ... Eduardo Nicola F. Zagari 30 Paginação e Segmentação
    •   Cada processo tem sua tabela de segmentos: pode-se compartilhar segmentos entre dois processos diferentes, fazendo-se entradas de suas tabelas apontarem para a mesma posição de memória física   Pode-se compartilhar programas inteiros ou apenas funções, procedimentos, etc   Problemas quando o segmento compartilhado faz referências internas a si mesmo (ex.: comando de desvio)  se esse segmento é compartilhado, todos os processos que o compartilham devem usar o mesmo número de segmento Eduardo Nicola F. Zagari 31 Paginação e Segmentação
    • 0 Memória lógica Tabela de segmentos Editor Processo P1 Processo P1 43062 Limite Base segmento 0 Dados 1 25286 43062 Editor 0 segmento 1 4425 68348 1 68348 Dados 1 72773 Memória lógica Processo P2 Tabela de segmentos Editor Processo P2 Limite Base segmento 0 Dados 2 90003 25286 43062 Dados 2 segmento 1 0 98553 8850 90003 1 Memória Física Eduardo Nicola F. Zagari 32 Paginação e Segmentação
    •   Segmentos têm tamanho variável (ao contrário das páginas)   A alocação dinâmica de memória é normalmente resolvida com um algoritmo de escolha do primeiro (first fit) ou melhor (best fit) ou ..., bloco de memória   Segmentação pode causar fragmentação externa (como no esquema de partição da memória em partes de tamanho variável)  pode-se usar compactação   Se o tamanho médio de segmentos for pequeno  fragmentação também é pequena (é mais fácil alocar pequenos segmentos do que processos) Eduardo Nicola F. Zagari 33 Paginação e Segmentação
    • Tabela de segmentos Endereço Lógico End da tabela de páginas No No deslo- ≈ ≈ seg pag camento Tabela de páginas Endereço do bloco ≈ ≈ No bloco deslocamento Endereço Físico Eduardo Nicola F. Zagari 34 Paginação e Segmentação
    •   Como mostrado no diagrama a seguir, o Intel 386 usa segmentação com paginação para gerência de memória com um esquema de paginação em 2 níveis. Eduardo Nicola F. Zagari 35 Paginação e Segmentação
    • Eduardo Nicola F. Zagari 36 Paginação e Segmentação