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

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

  • 1.
    Gerência de Memória Paginação e Segmentação
  • 2.
      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
  • 3.
      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
  • 4.
      Forma deatribuiçã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
  • 5.
    Lista de frameslivres 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
  • 6.
    Eduardo Nicola F.Zagari 6 Paginação e Segmentação
  • 7.
      Endereços geradospela 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
  • 8.
    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
  • 9.
      O tamanhoda 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
  • 10.
    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
  • 11.
    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
  • 12.
      Fragmentação externaresolvida   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
  • 13.
      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
  • 14.
    1.  Pode serrepresentada 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
  • 15.
    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
  • 16.
      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
  • 17.
      Proteção deMemó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
  • 18.
    Eduardo Nicola F.Zagari 18 Paginação e Segmentação
  • 19.
      Espaços deendereç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
  • 20.
    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
  • 21.
      Outra vantagemdo 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
  • 22.
    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
  • 23.
      Suponha queos 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
  • 24.
      Com apaginaçã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
  • 25.
      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
  • 26.
    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
  • 27.
    Mapeamento de endereçosbidimensionais 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
  • 28.
    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
  • 29.
      Assim comoa 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
  • 30.
      Direitos deacesso 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
  • 31.
      Cada processotem 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
  • 32.
    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
  • 33.
      Segmentos têmtamanho 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
  • 34.
    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
  • 35.
      Como mostradono 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
  • 36.
    Eduardo Nicola F.Zagari 36 Paginação e Segmentação