SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
Gerenciamento de Memória   
                           
             Memória Virtual
  Introdução
               Paginação sob Demanda
               Substituição de Páginas
                       Algoritmos de Substituição de Páginas
                       Procedimentos de Armazenamento de Páginas
               Política de Alocação Local versus Alocação Global
               Thrashing 
               Working Set (Conjunto de Trabalho)
               Freqüência de Interrupção de Página Ausente
               Tamanho da Página
               Tamanho da TLB
               Bloqueio de Páginas na Memória
               Estrutura de Programas
               Exemplos de Sistemas Operacionais




Eduardo Nicola F. Zagari
                            2
              Memória Virtual
  Todas as estratégias de gerência até agora mantêm processos
                inteiros na memória
               Em muitos casos, não é necessário o programa inteiro estar em
                memória:
                       código de tratamento de erro
                       vetores, listas e tabelas geralmente alocam mais memória do que
                        usam
                       certas opções e características de programas raramente são
                        usadas
               Vantagens de executar programas parcialmente em memória:
                       programa não é limitado pelo tamanho da memória
                       um maior número de processos podem ser carregados ao mesmo
                        tempo  aumentando a utilização da CPU
                       menor necessidade E/S para carregar ou fazer swapp de processos




Eduardo Nicola F. Zagari
                         3
                         Memória Virtual
  Técnica de Memória Virtual: separação da memória lógica de
                   usuário e memória física
                       Somente parte dos programas precisam estar carregados na
                            memória para execução
                       Espaço de endereçamento lógico pode, portanto, ser muito maior
                            que o espaço de endereçamento físico
                       Permite que espaços de endereçamento sejam compartilhados por
                            vários processos
                       Possibilita criação de processos de forma mais eficiente
               Memória virtual pode ser implementada via:
                       Paginação por demanda
                       Segmentação por demanda




Eduardo Nicola F. Zagari
                            4
                        Memória Virtual
Memória Virtual
              Página 0            MAIOR que
              Página 1           Memória Física
              Página 2




                                                      Memória Física

                            Mapa da Memória



              Página n
        Memória Virtual
                                 Memória Secundária


Eduardo Nicola F. Zagari
              5
                Memória Virtual
  Similar ao sistema de swapping, mas aplicado somente à página
                   requisitada e não a todo o processo
               Traz uma página para a memória somente quando ela é requisitada
                       Menor necessidade de I/O
                       Menor necessidade de memória
                       Respostas mais rápidas
                       Maior número de usuários
               Página requisitada ⇒ referência para ela
                       Referência inválida ⇒ aborta
                       Ausente da memória ⇒ traz para memória
               Suporte de hardware : bit de presença/ausência (ou válido/inválido)
               Page-fault (trap) : interrupção por falta de página




Eduardo Nicola F. Zagari
                               6
                  Memória Virtual
  Um bit de presença/ausência é associado com cada entrada da tabela
                   de página: (0 ⇒ ausente da memória , 1 ⇒ presente na memória)
                  Inicialmente o bit é ajustado para 0 em todas as entradas
                  Exemplo:
                   # Bloco
    Bit de presença/ausência
                                                            1
                                                            1
                                                            1
                                                            1
                                                            0
                                                …

                                                            0
                                                            0
                                            Tabela de Páginas
                  Durante uma tradução de endereço, se o bit de presença/ausência na
                     entrada da tabela de página estiver igual a 0 ⇒ FALTA DE PÁGINA
                     (page fault).


Eduardo Nicola F. Zagari
                            7
                                Memória Virtual
bloco              bit presença/ausência
                                                                         0
                                                                         1
      0    Página A             0   4 p                                  2
      1    Página B             1     a                                  3
      2    Página C
      3    Página D
                                2   6 p                                  4 Página A
      4    Página E             3     a                                  5
      5    Página F             4     a                                  6 Página C
      6    Página G                                                      7
      7    Página H
                                5   9 p
                                                                         8
                                6     a
     Memória Virtual
                                                          A B            9 Página F
                                7     a                                 Memória Física
                               Tabela de Páginas
                                                        C D E
                                                        F G H
                                                                       Memória Secundária
Eduardo Nicola F. Zagari
                 8
                                Memória Virtual
3
                                S.O.
                                                      2
                            1
           Vá para X
                                            a
                            6

                                                               Bloco Livre
                                  Tabela de Páginas                                   4

                                       5
                                                              Memória Física
Eduardo Nicola F. Zagari
                        9
                            Memória Virtual
1 Referência: verifica na tabela do processo se referência é válida
        
       2 Trap: se a referência for inválida ERRO; se for válida, mas a página
        
             não está na memória, gera interrupção de falta de página
       3 Página na memória secundária: localiza um bloco livre
        

       4 Carrega página: realiza uma operação no disco (E/S) para ler a
        
             pág. desejada e carregá-la p/ o bloco livre
       5 Modifica tabela de páginas: terminada a op. de E/S, atualiza a
        
             tabela p/ indicar que a pág. está na memória
       6 Reinicia execução da interrupção: como o estado do processo foi
        
             salvo, reinicia a interrupção que causou a falta de página (endereço
             de pág inexistente na mem.)




Eduardo Nicola F. Zagari
                    10
                      Memória Virtual
  Paginação por demanda pura:
                       não levar nenhuma página para memória até que ela seja
                            requisitada




                                       Queda de desempenho?

                              Padrão de localidade de referência
                                       Número da página




                                                                     Tempo de execução

Eduardo Nicola F. Zagari
                                 11
               Memória Virtual
bloco             bit presença/ausência
    PC
                                    3    p
         0     H                         p
                                    4                   0 S.O.
         1 Carregar M
         2      J                   5    p              1
         3     M                         a              2     D
         Memória Lógica
                                Tabela de Páginas       3     H                       B
          do usuário 1            do usuário 1          4 Carregar M
        0          A                6     p             5      J         M
        1          B                                    6     A
        2          D
                                          a                   E
                                                        7
        3          E                2     p
                                                        Memória Física
       Memória Lógica               7     p
        do usuário 2
                                Tabela de Páginas
Eduardo Nicola F. Zagari
                                  do usuário 2 12
                       Memória Virtual
  Substituição de página: quando ocorre uma falta de página e não
              existe nenhum bloco disponível, um bloco que não está sendo
              usado no momento é selecionado e liberado. A rotina de
              tratamento de uma page-fault:
               1.  Localizar a página desejada no disco
               2.  Localizar um bloco livre:
                        se existir um bloco livre, usá-lo
                        caso contrário, usar um algoritmo de substituição de página para
                            selecionar a que será substituída
                        Salvar a página a ser substituída no disco e atualizar as tabelas
                            de blocos e páginas de acordo
               3.  Ler a página desejada no “novo” bloco e atualizar as tabelas
               4.  Reiniciar o processo do usuário




Eduardo Nicola F. Zagari
                            13
                        Memória Virtual
  Se não existe nenhum bloco livre  note que são necessárias 2
                   transferências de página
                       para reduzir esta sobrecarga, usa-se um bit de modificação
                             ele é ativado pelo hardware sempre que qualquer palavra ou
                              byte desta página é alterado, de forma a indicar que a página
                              foi modificada
                             se a página é selecionada para ser substituída:
                                –  bit de modificação ativado  deve ser gravada no disco
                                –  bit de modificação não ativado  não é necessário ser
                                   regravada no disco (o bloco é sobreposto)




Eduardo Nicola F. Zagari
                            14
                         Memória Virtual
  Menor taxa de falta de página
               Ex: seqüência de referências a endereços de memória
             
     
        0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103,
             
     
        0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105


                         Se cada página tiver 100 bytes, os acessos serão às pags.:
                                                      1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1
                             Número de interrupções
                             de páginas ausentes




                                                                                  Número de blocos




Eduardo Nicola F. Zagari
                                      15
                            Memória Virtual
  Algoritmo FIFO (First-In, First-Out) ou PCPS (Primeiro a Chegar,
             Primeiro a Sair)
         Algoritmo Ótimo
         Algoritmo NRU (Not Recently Used)
         Algoritmo LRU (Least Recently Used)
                 NFU (Not Frequently Used)
                 Aging
         Algoritmo da Segunda Chance
         Algoritmo do Relógio
         Algoritmo MFU




Eduardo Nicola F. Zagari
                      16
                 Memória Virtual
  A página que foi primeiro utilizada (first-in) será a primeira a ser
                   retirada (first-out)

                       Fila (lista encadeada) de páginas
                                                             Início: Página mais velha
                                                             Fim: Página mais nova

                       Falta de página
 Retira página do início
                                          Insere página nova no fim

               Simples
               A princípio: razoável que a página há mais tempo no working set
                   deva ser retirada 1o  mas isto nem sempre é verdade... 




Eduardo Nicola F. Zagari
                          17
                         Memória Virtual
7       0 1            2 0 3 0 4   2 3 0 3 2 1 2 0 1 7 0 1
17 7 7 2                       2 2 4 4 4 0              0 0      7 7 7
2  0 0 0                       3 3 3 2 2 2              1 1      1 0 0
3    1 1                       1 0 0 0 3 3              3 2      2 2 1


                                 15 faltas de páginas



Eduardo Nicola F. Zagari
                  18
                Memória Virtual
0 1 2 3 0 1 4 0 1 2 3 4
                            0 1 2 3 0 1 4 4 4 2 3 3
   3
 blocos                       0 1 2 3 0 1 1 1 4 2 2
                                0 1 2 3 0 0 0 1 4 4
                            F F F F F F F                   F F         = 9 fault pages
                            0 1 2 3 0 1 4 0 1 2 3 4
                            0 1 2 3   3   3   4   0     1   2   3   4
   4                          0 1 2   2   2   3   4     0   1   2   3
 blocos                         0 1   1   1   2   3     4   0   1   2
                                  0   0   0   1   2     3   4   0   1
                            F F F F           F F F F F F = 10 fault pages
Eduardo Nicola F. Zagari
                         19
                           Memória Virtual
  Trocar a página que não será usada no período mais longo
               Desempenho – deseja-se um algoritmo que resulte em um
                   número mínimo de faltas de páginas (page faults).



     7       0 1            2 0 3 0 4     2 3 0 3 2 1 2 0 1 7 0 1
17 7 7 2                       2      2             2      2               7
2  0 0 0                       0      4             0      0               0
3    1 1                       3      3             3      1               1

                                   9 faltas de páginas


Eduardo Nicola F. Zagari
                     20
                       Memória Virtual
  Problema: saber quando cada página será referenciada
                              Impossível de se implementar
                                                          


               Utilidade: Comparação com relação aos demais algoritmos




Eduardo Nicola F. Zagari
                 21
                     Memória Virtual
  Hardware: 2 bits de estado associados a cada página
                       Bit R (referência): ativado quando a página é referenciada
                       Bit M (modificação): ativado quando ela é modificada




                                                  bits de proteção
                            bit de modificação                          bit presença/ausência

       bit de referência                                                             bloco


                                         entrada da tabela de páginas

                       Bits ativados por hardware e desativados por software




Eduardo Nicola F. Zagari
                             22
                          Memória Virtual
  Se o hardware não dispõe dos bits R e M:
                     Simulados por software
                             Processo iniciado  Ausente na memória (tabela de páginas
                              zerada)
                             Referência a uma página  falta de página
                             SO ativa bit R (tabela interna), atualiza tabela de páginas, seta
                              proteção para “Somente Leitura” e retoma instrução
                             Se instrução de escrita  nova falta de página
                             SO ativa bit M e muda modo da página para “Leitura/Escrita”




Eduardo Nicola F. Zagari
                             23
                           Memória Virtual
  Escolhe a página que não foi recentemente utilizada
               Algoritmo:
                       Processo iniciado  bits de página (R e M) iguais a zero
                       Periodicamente, bit R é zerado
                       Falta de página  SO inspeciona páginas e as classifica:
                               Classe 0: não referenciadas, não modificadas
         Atenção
                               Classe 1: não referenciadas, modificadas
                               Classe 2: referenciadas, não modificadas
                               Classe 3: referenciadas, modificadas
                       NRU remove página aleatória da classe não vazia de numeração
                            mais baixa




Eduardo Nicola F. Zagari
                            24
                        Memória Virtual
  Seleciona a página usada há mais tempo, isto é, o objetivo é
                   retirar aquela que está há mais tempo sem ser referenciada
               Realizável  alto custo 


                                    Início: Página usada mais recentemente
               Manter lista 
                                    Fim: Página usada menos recentemente

                            dificuldade: atualizar a cada referência à memória




Eduardo Nicola F. Zagari
                         25
                       Memória Virtual
7       0 1           2 0 3 0 4     2 3 0 3 2 1 2 0 1 7 0 1
 17 7 7 2                      2       4 4 4 0            1   1        1
 2  0 0 0                      0       0 0 3 3            3   0        0
 3    1 1                      3       3 2 2 2            2   2        7


                                   12 faltas de páginas



Eduardo Nicola F. Zagari
                   26
                   Memória Virtual
  Implementação por hardware: 2 maneiras
                 Contador: um contador é adicionado à CPU e incrementado
                   automaticamente a cada referência à memória. Toda vez que é feita
                   uma referência à página, o conteúdo do contador é copiado para o
                   campo instante-de-uso na entrada da tabela de páginas referente à
                   página acessada.
                             seleciona-se a página com o menor contador
                 Matriz nxn (onde n é o número de blocos): toda vez que a página k é
                   referenciada
                                colocam-se todos os bits da linha k em 1
                                depois, zeram-se todos os bits da coluna k
                             em cada instante, a página LRU corresponde à linha com o
                             menor valor binário armazenado




Eduardo Nicola F. Zagari
                           27
                       Memória Virtual
  Considere a seguinte ordem de referências às paginas




                               0 1 2 3 2 1 0 3 2 3
                    0123    0123       0123        0123        0123
               0    0111    0011       0001        0000        0000
               1    0000    1011       1001        1000        1000
               2    0000    0000       1101        1100        1101
               3    0000    0000       0000        1110        1100
               0    0000    0111       0110        0100        0100
               1    1011    0011       0010        0000        0000
               2    1001    0001       0000        1101        1100
               3    1000    0000       1110        1100        1110
Eduardo Nicola F. Zagari
                 28
                      Memória Virtual
  Implementação por Pilha – mantém uma pilha do número das
                   páginas em uma lista duplamente encadeada da seguinte forma:
                       Página referenciada:
                             Mova-a para o topo
                             Requer que 6 ponteiros sejam atualizados
                       Não há a necessidade de busca para substituição




Eduardo Nicola F. Zagari
                           29
                    Memória Virtual
Eduardo Nicola F. Zagari
   30
   Memória Virtual
  requer um contador em software associado a cada página
               a cada interrupção de tempo, SO faz

                                      Cont ← Cont + bit R
               Falta de página  SO escolhe página com menor Cont


                       Problema: nunca esquece referências anteriores




Eduardo Nicola F. Zagari
                        31
                      Memória Virtual
  Algoritmo Aging (Envelhecimento): modificação do NFU
                       Contadores são sempre deslocados um bit antes de serem
                            somados com o bit R
                       Bit R é adicionado ao bit mais à esquerda do contador, ao invés de
                            ser somado ao mais à direita
                       Falta de página  SO escolhe página com menor Cont




Eduardo Nicola F. Zagari
                             32
                      Memória Virtual
Bits R          Bits R        Bits R        Bits R        Bits R
            das páginas     das páginas   das páginas   das páginas   das páginas
             101011          110010        110101        100010       011000

 Cont 0
 10000000            11000000      11100000      11110000      01111000
 Cont 1
 00000000            10000000      11000000      01100000     10110000
 Cont 2
 10000000            01000000      00100000      00010000     10001000
 Cont 3
 00000000            00000000      10000000     01000000      00100000

 Cont 4
 10000000            11000000      01100000     10110000      01011000
 Cont 5
 10000000            01000000      10100000     01010000      00101000


Eduardo Nicola F. Zagari
                    33
                        Memória Virtual
  É um algoritmo FIFO modificado
               Possui um bit de referência (bit R) que indica se página foi
                   referenciada
                       Se página mais antiga possui R = 0 (não foi referenciada)
                             ela é escolhida
                       Caso contrário,
                             R é feito zero (R ← 0) e ela vai para o final da fila
                             A busca continua




Eduardo Nicola F. Zagari
                             34
                            Memória Virtual
Instante:     0     3   7   8    12         14   15   18
                                                                                 Falta de Página
                            A     B   C   D    E          F    G    H           no instante t = 20
                      Bit R = 1

                            3     7   8   12   14         15   18   20
                            B     C   D   E    F          G    H    A
                                                                    Bit R = 0
               Retira página velha não referenciada no último intervalo de
                   tempo
               Problema: Se todas as páginas foram referenciadas, então
                   algoritmo degenera para um FIFO puro




Eduardo Nicola F. Zagari
                           35
                                   Memória Virtual
  Semelhante ao da Segunda Chance, mas mais eficiente
                       Falta de Página  inspeciona página para a qual o ponteiro está
                            apontando:
                              Se bit R = 0  retire a página
                              Se bit R = 1  faça R ← 0 e avance o ponteiro



                                                    A
                                              H               B

                                          G                       C


                                              F               D
                                                    E



Eduardo Nicola F. Zagari
                               36
                     Memória Virtual
  Escolhe a página mais freqüentemente usada
               Argumento: uma página com contador de valor baixo, foi,
                   provavelmente, trazida para a memória recentemente e ainda
                   será usada




Eduardo Nicola F. Zagari
                    37
                     Memória Virtual
  Reserva de blocos
                       não é necessário esperar que a página selecionada seja transferida
                            para o disco
               Lista de páginas modificadas
                       automação através do dispositivo de transferência de páginas
                       minimiza probabilidade da página selecionada não estar atualizada
                            no disco
               Manter registros de qual página está no conjunto de blocos
                   reservados
                       pode-se evitar E/S, aproveitando-se a antiga página contida na
                            reserva de blocos




Eduardo Nicola F. Zagari
                         38
                          Memória Virtual
  Substituição Global: 
                       permite alocar para um determinado processo qualquer bloco da
                            memória, mesmo que já esteja alocado a outro processo
                       Desempenho do processo depende do comportamento dos demais
               Substituição Local:
                       o bloco alocado a um processo deve pertencer ao conjunto de
                            blocos reservado para este processo
                       Poucos blocos: pode provocar queda de desempenho, mesmo
                            havendo blocos livres ou usados com menos freqüência
                       Muitos blocos: pode provocar desperdício
               Na prática os algoritmos globais funcionam melhor




Eduardo Nicola F. Zagari
                            39
                        Memória Virtual
Idade
                0           A0   10             A0                    A0
                1           A1    7             A1                    A1
                2           A2    5             A2                    A2
                3           A3    4             A3                    A3
                4           A4    3             A6                    A4
                 5          B0    9             B0                    B0
                 6          B1    4             B1                    B1
                 7          B2    6             B2                    B2
                8           B3    2             B3                    A6
                 9          B4    5             B4                    B4
                10          B5   12             B5                    B5
                11          C1    5             C1                    C1
                12          C2    6             C2                    C2
                  Memória Física         Substituição Local   Substituição Global

Eduardo Nicola F. Zagari
                        40
                       Memória Virtual
  Considere que o sistema monitore a utilização da CPU
                 Se for baixa  aumenta o grau de multiprogramação
         Considere também que é usado um algoritmo de trocas de páginas
             global
         Agora suponha que um processo entre em uma nova fase, que
             precise de mais páginas
                 Ele “rouba” blocos dos outros processos, aumentando a taxa de falta
                   de páginas, conseqüentemente, diminuindo a utilização da CPU 
                   realimentando o ciclo
         Dizemos que há thrashing (paginação excessiva) qdo ele está
             consumindo mais tempo em substituição de páginas do que na
             execução do seu código


Eduardo Nicola F. Zagari
                      41
                          Memória Virtual
Paginação Excessiva
                            Utilização da CPU




                                                      Grau de Multiprogramação




Eduardo Nicola F. Zagari
                       42
                              Memória Virtual
  Por que a Paginação funciona?

                   Princípio (Modelo) da Localidade
                       Processo migra de uma localidade para outra.
                       Localidades podem se sobrepor.
               Inicialização de um processo 
                      Paginação sob Demanda 
                      Funciona devido à localidade de referências
               Por que então ocorreria thrashing ?

                   Σ tamanhos das localidades > tamanho total da memória




Eduardo Nicola F. Zagari
                         43
                   Memória Virtual
Eduardo Nicola F. Zagari
   44
   Memória Virtual
  Para prevenir thrashing deve-se fornecer aos processos o número
             de blocos que ele precisa

       Mas o que fazer quando um processo sofre swap in?
         Conjunto de Trabalho
                 É o conjunto de páginas referenciadas por um processo durante um
                   determinado intervalo de tempo
                 É o conjunto de páginas constantemente referenciadas pelo processo
                   e que deve permanecer na memória para que ele execute de forma
                   eficiente




Eduardo Nicola F. Zagari
                       45
                       Memória Virtual
  Modelo do Conjunto de Trabalho:
                       SO mantém controle sobre o conjunto de trabalho dos processos
                       SO carrega antes as páginas do CT de um processo, ao colocá-lo
                            em execução, reduzindo o no de falta de páginas (pré-paginação)

 Quais páginas devem fazer parte do CT de um processo?
               Uma forma de implementação é através do algoritmo aging:
                       qualquer página contendo um bit 1 entre os n bits mais significativos
                            do contador será considerada membro do CT do processo à qual
                            ela pertence




Eduardo Nicola F. Zagari
                             46
                         Memória Virtual
Eduardo Nicola F. Zagari
   47
   Memória Virtual
  SO monitora a quantidade de páginas (Di) nos conjuntos de
             trabalho de todos os processos
                 Se Σi (CTi) for maior que o no de blocos livres  thrashing
                 Neste caso, SO seleciona um processo para sofrer swapping


         Working Set grande
               Menor taxa de falta de página
                                            Menor número de processos na memória

              Alocação local: número de páginas iguais ou número de
                  páginas proporcionais (nem considera thrashing)
              Alocação global: tamanho do CT pode variar muito mais
                      rápido do que os bits de envelhecimento
                          Problema de thrashing persiste...
Eduardo Nicola F. Zagari
                        48
                             Memória Virtual
  Para evitar o thrashing: Alg. PFF (Page Fault Frequency)
                 Controla diretamente a taxa de interrupções por F.P.
                       F.P. muito alta  processo necessita de mais blocos
                       F.P. muito baixa  processo está com blocos em excesso
                 Estipula-se um limite máximo e um limite mínimo para a taxa de
                   interrupções por F.P.
                       Processos acima do máx  recebem mais blocos
                       Processos abaixo do mín  removem-se blocos
                 Se a taxa de interrupções cresce e não há blocos disponíveis 
                   seleciona-se um processo e o suspende  blocos liberados são
                   redistribuídos ou colocados à disposição
         Swapping usado para redução de demanda potencial por memória



Eduardo Nicola F. Zagari
                         49
                          Memória Virtual
Aumentar
               Taxa de interrupções




                                                             número de blocos
               de página ausente




                                             Limite Máximo


                                             Limite Mínimo


                                      Número de blocos       Diminuir
                                                             número de blocos




Eduardo Nicola F. Zagari
              50
                            Memória Virtual
  Tamanho é sempre potência de 2 (29 - 214 bytes)
               SO pode escolher tamanho:
                       hardware projetado para pags. de 512 bytes
                       SO enxerga pag. 0 e 1, 2 e 3, ... como páginas de 1k, alocando
                            sempre 2 blocos consecutivos na memória para elas
               Tamanho ótimo:
                       Páginas pequenas:
                              Menor desperdício: em média 1/2 página é perdida com
                               fragmentação interna no fim de um segmento
                              Reduz a possibilidade de espaços inativos dentro de uma
                               página




Eduardo Nicola F. Zagari
                            51
                         Memória Virtual
  Páginas grandes:
                             Menor número de páginas  menor tabela de páginas
                             Transferir páginas pequenas toma quase tanto tempo quanto
                              transferir páginas grandes para o disco (movimento da cabeça
                              e latência rotacional)
                             Menor a taxa de falta de páginas
               Tamanho ótimo: 1448 bytes (valor teórico)
               A maioria dos computadores comerciais têm páginas de 512 a
                   8k bytes
               Historicamente, este valor tem aumentado...




Eduardo Nicola F. Zagari
                           52
                         Memória Virtual
  Alcance da TLB - A quantidade de memória acessível a partir
                   da TLP.


               Alcance da TLB = (Tamanho da TLB) X (Tamanho da Página)


               Idealmente, o Conjunto de Trabalho de cada processo deveria
                   ser armazenado inteiramente na TLB. 




Eduardo Nicola F. Zagari
                    53
                   Memória Virtual
  Considere o exemplo:
                       Processo emite chamada de sistema de E/S
                       Processo é suspenso
                       Novo processo gera falta de página
                       Se alocação global  existe chance da página escolhida para ser
                            removida ser a página contendo o buffer de E/S
                       Como o DMA (acesso direto) não tem como identificar em que
                            página está escrevendo  inconsistência


               Primeira Solução:
                       Operações de E/S usarem um buffer dentro do kernel  a cópia
                            pode resultar em uma sobrecarga inaceitável




Eduardo Nicola F. Zagari
                             54
                     Memória Virtual
Eduardo Nicola F. Zagari
   55
   Memória Virtual
  Segunda Solução:
                       Bloquear páginas envolvidas em E/S, não permitindo que sejam
                            removidas durante a operação de E/S  bit de bloqueio
               Outro uso do bit de bloqueio:
                       Processo provoca interrupção por falta de página
                       Página é carregada
                       Processo volta para a fila de pronto
                       Outro processo (de maior prioridade) ganha a CPU e provoca falta
                            de página
                       Escolhe página não referenciada e nem modificada: A candidata
                            perfeita  a própria página do processo de baixa prioridade




Eduardo Nicola F. Zagari
                             56
                          Memória Virtual
  Paginação por demanda foi projetada para ser transparente aos
                   programas de usuário, mas...
               Considere páginas de 1024 bytes. Para iniciar com ʻaʼ cada
                   elemento de uma matriz de 1024 x 1024:

                 char A[1024][1024];

                 for (j=0; j<1024; j++) {
                                             char A[1024][1024];
                    for (i=0; i<1024; i++) {
                       A[i][j] = ‘a’;        for (i=0; i<1024; i++) {
                    }                           for (j=0; j<1024; j++) {
                 }                                 A[i][j] = ‘a’;
                                                }
                                             }



Eduardo Nicola F. Zagari
                     57
                   Memória Virtual
  A matriz é armazenada por linhas: A[0][0], A[0][1], A[0][2], ... ,
                   A[0][1024], A[1][0], A[1][1], ... , A[1024][1024]
               Se a página tem tamanho 1024 bytes  cada linha ocupa uma
                   página


           Taxa de faltas =

                  128 linhas X 128 colunas             Taxa de faltas =

                                16.384 faltas                             128 colunas

                                                                           128 faltas




Eduardo Nicola F. Zagari
                        58
                          Memória Virtual
  Windows NT


               Solaris 2




Eduardo Nicola F. Zagari
     59
   Memória Virtual
  Usa paginação sob demanda com clustering. Clustering traz
                para memória páginas “ao redor” da página faltante.
               São atribuídos aos processos um Conjunto de Trabalho
                Mínimo e um Conjunto de Trabalho Máximo.
               Conjunto de Trabalho Mínimo é o menor número de páginas que
                o processo tem garantido possuir em memória.
               Conjunto de Trabalho Máximo é o maior número de páginas que
                   ele poderia possuir em memória ao mesmo tempo.
               Quando a quantidade de memória livre no sistema cai abaixo de
                   um limiar (threshold), o módulo chamado automatic working
                   set trimming é executado para restabelecer a quantidade de
                   memória livre.
               Working set trimming remove páginas dos processos que têm
                   páginas acima do seu Conjunto de Trabalho Mínimo (em
                   excesso).


Eduardo Nicola F. Zagari
                    60
                      Memória Virtual
  Mantém uma lista de páginas livres para atribuir aos processos
                   em falta.


               Lotsfree – parâmetro limiar para começar a paginação.


               Paginação é executada pelo processo pageout.


               Pageout busca páginas usando o algoritmo do relógio
                   modificado.


               Scanrate é a taxa na qual as páginas são buscadas. Ela varia
                   de slowscan para fastscan.


               Pageout é chamado mais ou menos freqüentemente
                   dependendo da quantidade de memória livre disponível.

Eduardo Nicola F. Zagari
                    61
                      Memória Virtual
Eduardo Nicola F. Zagari
   62
   Memória Virtual

Mais conteúdo relacionado

Mais procurados

Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Leinylson Fontinele
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - IntroduçãoFabio Moura Pereira
 
SO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e SegmentaçãoSO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e SegmentaçãoEduardo Nicola F. Zagari
 
exercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadoresexercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de ComputadoresSuzana Viana Mota
 
Sistema operativo de rede
Sistema operativo de redeSistema operativo de rede
Sistema operativo de redeAndré bogas
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de softwareleopp
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introduçãoCleber Ramos
 
Aula 3 barramentos de placa mae
Aula 3 barramentos de placa maeAula 3 barramentos de placa mae
Aula 3 barramentos de placa maeMarcos Basilio
 
Resolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisResolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisRonildo Oliveira
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaAlexandre Duarte
 
SO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e AlocaçãoSO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e AlocaçãoEduardo Nicola F. Zagari
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Pepe Rocker
 
Projeto: Montagem de uma rede local
Projeto: Montagem de uma rede local Projeto: Montagem de uma rede local
Projeto: Montagem de uma rede local Verônica Veiga
 
Aula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresAula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
 
Sistemas Multimídia - Aula 02 - Introdução
Sistemas Multimídia - Aula 02 - IntroduçãoSistemas Multimídia - Aula 02 - Introdução
Sistemas Multimídia - Aula 02 - IntroduçãoLeinylson Fontinele
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
Arquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosArquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosPortal_do_Estudante_SD
 

Mais procurados (20)

Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
 
Placa mãe (motherboard)
Placa mãe (motherboard)Placa mãe (motherboard)
Placa mãe (motherboard)
 
SO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e SegmentaçãoSO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e Segmentação
 
exercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadoresexercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadores
 
Sistema operativo de rede
Sistema operativo de redeSistema operativo de rede
Sistema operativo de rede
 
Linguagem Assembly
Linguagem AssemblyLinguagem Assembly
Linguagem Assembly
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de software
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
Aula 3 barramentos de placa mae
Aula 3 barramentos de placa maeAula 3 barramentos de placa mae
Aula 3 barramentos de placa mae
 
Resolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisResolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas Operacionais
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
 
SO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e AlocaçãoSO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e Alocação
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 
Projeto: Montagem de uma rede local
Projeto: Montagem de uma rede local Projeto: Montagem de uma rede local
Projeto: Montagem de uma rede local
 
Aula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresAula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de Computadores
 
Sistemas Multimídia - Aula 02 - Introdução
Sistemas Multimídia - Aula 02 - IntroduçãoSistemas Multimídia - Aula 02 - Introdução
Sistemas Multimídia - Aula 02 - Introdução
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Arquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosArquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidos
 
RC - Módulo 1
RC - Módulo 1RC - Módulo 1
RC - Módulo 1
 

Mais de Eduardo Nicola F. Zagari

Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasOnix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasEduardo Nicola F. Zagari
 
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSUma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSEduardo Nicola F. Zagari
 
Uma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxUma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxEduardo Nicola F. Zagari
 
Módulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealMódulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealEduardo Nicola F. Zagari
 
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Eduardo Nicola F. Zagari
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Eduardo Nicola F. Zagari
 
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Eduardo Nicola F. Zagari
 
Padrões-13 - Padrões Estruturais - Proxy
Padrões-13 - Padrões Estruturais - ProxyPadrões-13 - Padrões Estruturais - Proxy
Padrões-13 - Padrões Estruturais - ProxyEduardo Nicola F. Zagari
 
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadePadrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadeEduardo Nicola F. Zagari
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorEduardo Nicola F. Zagari
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonEduardo Nicola F. Zagari
 
Padrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodPadrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodEduardo Nicola F. Zagari
 
Padrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryPadrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryEduardo Nicola F. Zagari
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelEduardo Nicola F. Zagari
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCEduardo Nicola F. Zagari
 

Mais de Eduardo Nicola F. Zagari (20)

Classificação de Documentos
Classificação de DocumentosClassificação de Documentos
Classificação de Documentos
 
Uma Breve Introdução ao MongoDB
Uma Breve Introdução ao MongoDBUma Breve Introdução ao MongoDB
Uma Breve Introdução ao MongoDB
 
Introdução à Linguagem Ruby
Introdução à Linguagem RubyIntrodução à Linguagem Ruby
Introdução à Linguagem Ruby
 
Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasOnix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
 
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSUma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
 
Uma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxUma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes Linux
 
Módulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealMódulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo Real
 
Módulo de Estudos em Tempo Real
Módulo de Estudos em Tempo RealMódulo de Estudos em Tempo Real
Módulo de Estudos em Tempo Real
 
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
 
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
 
Padrões-13 - Padrões Estruturais - Proxy
Padrões-13 - Padrões Estruturais - ProxyPadrões-13 - Padrões Estruturais - Proxy
Padrões-13 - Padrões Estruturais - Proxy
 
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadePadrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - Adaptador
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - Singleton
 
Padrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodPadrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory Method
 
Padrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryPadrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract Factory
 
Padrões-07 - Padrões Criacionais
Padrões-07 - Padrões CriacionaisPadrões-07 - Padrões Criacionais
Padrões-07 - Padrões Criacionais
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - Microkernel
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 

SO-07 Gerenciamento de Memória: Memória Virtual

  • 1. Gerenciamento de Memória Memória Virtual
  • 2.   Introdução   Paginação sob Demanda   Substituição de Páginas   Algoritmos de Substituição de Páginas   Procedimentos de Armazenamento de Páginas   Política de Alocação Local versus Alocação Global   Thrashing   Working Set (Conjunto de Trabalho)   Freqüência de Interrupção de Página Ausente   Tamanho da Página   Tamanho da TLB   Bloqueio de Páginas na Memória   Estrutura de Programas   Exemplos de Sistemas Operacionais Eduardo Nicola F. Zagari 2 Memória Virtual
  • 3.   Todas as estratégias de gerência até agora mantêm processos inteiros na memória   Em muitos casos, não é necessário o programa inteiro estar em memória:   código de tratamento de erro   vetores, listas e tabelas geralmente alocam mais memória do que usam   certas opções e características de programas raramente são usadas   Vantagens de executar programas parcialmente em memória:   programa não é limitado pelo tamanho da memória   um maior número de processos podem ser carregados ao mesmo tempo  aumentando a utilização da CPU   menor necessidade E/S para carregar ou fazer swapp de processos Eduardo Nicola F. Zagari 3 Memória Virtual
  • 4.   Técnica de Memória Virtual: separação da memória lógica de usuário e memória física   Somente parte dos programas precisam estar carregados na memória para execução   Espaço de endereçamento lógico pode, portanto, ser muito maior que o espaço de endereçamento físico   Permite que espaços de endereçamento sejam compartilhados por vários processos   Possibilita criação de processos de forma mais eficiente   Memória virtual pode ser implementada via:   Paginação por demanda   Segmentação por demanda Eduardo Nicola F. Zagari 4 Memória Virtual
  • 5. Memória Virtual Página 0 MAIOR que Página 1 Memória Física Página 2 Memória Física Mapa da Memória Página n Memória Virtual Memória Secundária Eduardo Nicola F. Zagari 5 Memória Virtual
  • 6.   Similar ao sistema de swapping, mas aplicado somente à página requisitada e não a todo o processo   Traz uma página para a memória somente quando ela é requisitada   Menor necessidade de I/O   Menor necessidade de memória   Respostas mais rápidas   Maior número de usuários   Página requisitada ⇒ referência para ela   Referência inválida ⇒ aborta   Ausente da memória ⇒ traz para memória   Suporte de hardware : bit de presença/ausência (ou válido/inválido)   Page-fault (trap) : interrupção por falta de página Eduardo Nicola F. Zagari 6 Memória Virtual
  • 7.   Um bit de presença/ausência é associado com cada entrada da tabela de página: (0 ⇒ ausente da memória , 1 ⇒ presente na memória)   Inicialmente o bit é ajustado para 0 em todas as entradas   Exemplo:
 # Bloco Bit de presença/ausência 1 1 1 1 0 … 0 0 Tabela de Páginas   Durante uma tradução de endereço, se o bit de presença/ausência na entrada da tabela de página estiver igual a 0 ⇒ FALTA DE PÁGINA (page fault). Eduardo Nicola F. Zagari 7 Memória Virtual
  • 8. bloco bit presença/ausência 0 1 0 Página A 0 4 p 2 1 Página B 1 a 3 2 Página C 3 Página D 2 6 p 4 Página A 4 Página E 3 a 5 5 Página F 4 a 6 Página C 6 Página G 7 7 Página H 5 9 p 8 6 a Memória Virtual A B 9 Página F 7 a Memória Física Tabela de Páginas C D E F G H Memória Secundária Eduardo Nicola F. Zagari 8 Memória Virtual
  • 9. 3 S.O. 2 1 Vá para X a 6 Bloco Livre Tabela de Páginas 4 5 Memória Física Eduardo Nicola F. Zagari 9 Memória Virtual
  • 10. 1 Referência: verifica na tabela do processo se referência é válida   2 Trap: se a referência for inválida ERRO; se for válida, mas a página   não está na memória, gera interrupção de falta de página 3 Página na memória secundária: localiza um bloco livre   4 Carrega página: realiza uma operação no disco (E/S) para ler a   pág. desejada e carregá-la p/ o bloco livre 5 Modifica tabela de páginas: terminada a op. de E/S, atualiza a   tabela p/ indicar que a pág. está na memória 6 Reinicia execução da interrupção: como o estado do processo foi   salvo, reinicia a interrupção que causou a falta de página (endereço de pág inexistente na mem.) Eduardo Nicola F. Zagari 10 Memória Virtual
  • 11.   Paginação por demanda pura:   não levar nenhuma página para memória até que ela seja requisitada Queda de desempenho? Padrão de localidade de referência Número da página Tempo de execução Eduardo Nicola F. Zagari 11 Memória Virtual
  • 12. bloco bit presença/ausência PC 3 p 0 H p 4 0 S.O. 1 Carregar M 2 J 5 p 1 3 M a 2 D Memória Lógica Tabela de Páginas 3 H B do usuário 1 do usuário 1 4 Carregar M 0 A 6 p 5 J M 1 B 6 A 2 D a E 7 3 E 2 p Memória Física Memória Lógica 7 p do usuário 2 Tabela de Páginas Eduardo Nicola F. Zagari do usuário 2 12 Memória Virtual
  • 13.   Substituição de página: quando ocorre uma falta de página e não existe nenhum bloco disponível, um bloco que não está sendo usado no momento é selecionado e liberado. A rotina de tratamento de uma page-fault: 1.  Localizar a página desejada no disco 2.  Localizar um bloco livre:   se existir um bloco livre, usá-lo   caso contrário, usar um algoritmo de substituição de página para selecionar a que será substituída   Salvar a página a ser substituída no disco e atualizar as tabelas de blocos e páginas de acordo 3.  Ler a página desejada no “novo” bloco e atualizar as tabelas 4.  Reiniciar o processo do usuário Eduardo Nicola F. Zagari 13 Memória Virtual
  • 14.   Se não existe nenhum bloco livre  note que são necessárias 2 transferências de página   para reduzir esta sobrecarga, usa-se um bit de modificação  ele é ativado pelo hardware sempre que qualquer palavra ou byte desta página é alterado, de forma a indicar que a página foi modificada  se a página é selecionada para ser substituída: –  bit de modificação ativado  deve ser gravada no disco –  bit de modificação não ativado  não é necessário ser regravada no disco (o bloco é sobreposto) Eduardo Nicola F. Zagari 14 Memória Virtual
  • 15.   Menor taxa de falta de página   Ex: seqüência de referências a endereços de memória 0100, 0432, 0101, 0612, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105   Se cada página tiver 100 bytes, os acessos serão às pags.: 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1 Número de interrupções de páginas ausentes Número de blocos Eduardo Nicola F. Zagari 15 Memória Virtual
  • 16.   Algoritmo FIFO (First-In, First-Out) ou PCPS (Primeiro a Chegar, Primeiro a Sair)   Algoritmo Ótimo   Algoritmo NRU (Not Recently Used)   Algoritmo LRU (Least Recently Used)   NFU (Not Frequently Used)   Aging   Algoritmo da Segunda Chance   Algoritmo do Relógio   Algoritmo MFU Eduardo Nicola F. Zagari 16 Memória Virtual
  • 17.   A página que foi primeiro utilizada (first-in) será a primeira a ser retirada (first-out)   Fila (lista encadeada) de páginas Início: Página mais velha Fim: Página mais nova   Falta de página Retira página do início Insere página nova no fim   Simples   A princípio: razoável que a página há mais tempo no working set deva ser retirada 1o  mas isto nem sempre é verdade... Eduardo Nicola F. Zagari 17 Memória Virtual
  • 18. 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 17 7 7 2 2 2 4 4 4 0 0 0 7 7 7 2 0 0 0 3 3 3 2 2 2 1 1 1 0 0 3 1 1 1 0 0 0 3 3 3 2 2 2 1 15 faltas de páginas Eduardo Nicola F. Zagari 18 Memória Virtual
  • 19. 0 1 2 3 0 1 4 0 1 2 3 4 0 1 2 3 0 1 4 4 4 2 3 3 3 blocos 0 1 2 3 0 1 1 1 4 2 2 0 1 2 3 0 0 0 1 4 4 F F F F F F F F F = 9 fault pages 0 1 2 3 0 1 4 0 1 2 3 4 0 1 2 3 3 3 4 0 1 2 3 4 4 0 1 2 2 2 3 4 0 1 2 3 blocos 0 1 1 1 2 3 4 0 1 2 0 0 0 1 2 3 4 0 1 F F F F F F F F F F = 10 fault pages Eduardo Nicola F. Zagari 19 Memória Virtual
  • 20.   Trocar a página que não será usada no período mais longo   Desempenho – deseja-se um algoritmo que resulte em um número mínimo de faltas de páginas (page faults). 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 17 7 7 2 2 2 2 2 7 2 0 0 0 0 4 0 0 0 3 1 1 3 3 3 1 1 9 faltas de páginas Eduardo Nicola F. Zagari 20 Memória Virtual
  • 21.   Problema: saber quando cada página será referenciada  Impossível de se implementar   Utilidade: Comparação com relação aos demais algoritmos Eduardo Nicola F. Zagari 21 Memória Virtual
  • 22.   Hardware: 2 bits de estado associados a cada página   Bit R (referência): ativado quando a página é referenciada   Bit M (modificação): ativado quando ela é modificada bits de proteção bit de modificação bit presença/ausência bit de referência bloco entrada da tabela de páginas   Bits ativados por hardware e desativados por software Eduardo Nicola F. Zagari 22 Memória Virtual
  • 23.   Se o hardware não dispõe dos bits R e M: Simulados por software  Processo iniciado  Ausente na memória (tabela de páginas zerada)  Referência a uma página  falta de página  SO ativa bit R (tabela interna), atualiza tabela de páginas, seta proteção para “Somente Leitura” e retoma instrução  Se instrução de escrita  nova falta de página  SO ativa bit M e muda modo da página para “Leitura/Escrita” Eduardo Nicola F. Zagari 23 Memória Virtual
  • 24.   Escolhe a página que não foi recentemente utilizada   Algoritmo:   Processo iniciado  bits de página (R e M) iguais a zero   Periodicamente, bit R é zerado   Falta de página  SO inspeciona páginas e as classifica:   Classe 0: não referenciadas, não modificadas Atenção   Classe 1: não referenciadas, modificadas   Classe 2: referenciadas, não modificadas   Classe 3: referenciadas, modificadas   NRU remove página aleatória da classe não vazia de numeração mais baixa Eduardo Nicola F. Zagari 24 Memória Virtual
  • 25.   Seleciona a página usada há mais tempo, isto é, o objetivo é retirar aquela que está há mais tempo sem ser referenciada   Realizável  alto custo Início: Página usada mais recentemente   Manter lista Fim: Página usada menos recentemente dificuldade: atualizar a cada referência à memória Eduardo Nicola F. Zagari 25 Memória Virtual
  • 26. 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 17 7 7 2 2 4 4 4 0 1 1 1 2 0 0 0 0 0 0 3 3 3 0 0 3 1 1 3 3 2 2 2 2 2 7 12 faltas de páginas Eduardo Nicola F. Zagari 26 Memória Virtual
  • 27.   Implementação por hardware: 2 maneiras   Contador: um contador é adicionado à CPU e incrementado automaticamente a cada referência à memória. Toda vez que é feita uma referência à página, o conteúdo do contador é copiado para o campo instante-de-uso na entrada da tabela de páginas referente à página acessada.  seleciona-se a página com o menor contador   Matriz nxn (onde n é o número de blocos): toda vez que a página k é referenciada colocam-se todos os bits da linha k em 1 depois, zeram-se todos os bits da coluna k  em cada instante, a página LRU corresponde à linha com o menor valor binário armazenado Eduardo Nicola F. Zagari 27 Memória Virtual
  • 28.   Considere a seguinte ordem de referências às paginas 0 1 2 3 2 1 0 3 2 3 0123 0123 0123 0123 0123 0 0111 0011 0001 0000 0000 1 0000 1011 1001 1000 1000 2 0000 0000 1101 1100 1101 3 0000 0000 0000 1110 1100 0 0000 0111 0110 0100 0100 1 1011 0011 0010 0000 0000 2 1001 0001 0000 1101 1100 3 1000 0000 1110 1100 1110 Eduardo Nicola F. Zagari 28 Memória Virtual
  • 29.   Implementação por Pilha – mantém uma pilha do número das páginas em uma lista duplamente encadeada da seguinte forma:   Página referenciada:  Mova-a para o topo  Requer que 6 ponteiros sejam atualizados   Não há a necessidade de busca para substituição Eduardo Nicola F. Zagari 29 Memória Virtual
  • 30. Eduardo Nicola F. Zagari 30 Memória Virtual
  • 31.   requer um contador em software associado a cada página   a cada interrupção de tempo, SO faz Cont ← Cont + bit R   Falta de página  SO escolhe página com menor Cont   Problema: nunca esquece referências anteriores Eduardo Nicola F. Zagari 31 Memória Virtual
  • 32.   Algoritmo Aging (Envelhecimento): modificação do NFU   Contadores são sempre deslocados um bit antes de serem somados com o bit R   Bit R é adicionado ao bit mais à esquerda do contador, ao invés de ser somado ao mais à direita   Falta de página  SO escolhe página com menor Cont Eduardo Nicola F. Zagari 32 Memória Virtual
  • 33. Bits R Bits R Bits R Bits R Bits R das páginas das páginas das páginas das páginas das páginas 101011 110010 110101 100010 011000 Cont 0 10000000 11000000 11100000 11110000 01111000 Cont 1 00000000 10000000 11000000 01100000 10110000 Cont 2 10000000 01000000 00100000 00010000 10001000 Cont 3 00000000 00000000 10000000 01000000 00100000 Cont 4 10000000 11000000 01100000 10110000 01011000 Cont 5 10000000 01000000 10100000 01010000 00101000 Eduardo Nicola F. Zagari 33 Memória Virtual
  • 34.   É um algoritmo FIFO modificado   Possui um bit de referência (bit R) que indica se página foi referenciada   Se página mais antiga possui R = 0 (não foi referenciada)  ela é escolhida   Caso contrário,  R é feito zero (R ← 0) e ela vai para o final da fila  A busca continua Eduardo Nicola F. Zagari 34 Memória Virtual
  • 35. Instante: 0 3 7 8 12 14 15 18 Falta de Página A B C D E F G H no instante t = 20 Bit R = 1 3 7 8 12 14 15 18 20 B C D E F G H A Bit R = 0   Retira página velha não referenciada no último intervalo de tempo   Problema: Se todas as páginas foram referenciadas, então algoritmo degenera para um FIFO puro Eduardo Nicola F. Zagari 35 Memória Virtual
  • 36.   Semelhante ao da Segunda Chance, mas mais eficiente   Falta de Página  inspeciona página para a qual o ponteiro está apontando:  Se bit R = 0  retire a página  Se bit R = 1  faça R ← 0 e avance o ponteiro A H B G C F D E Eduardo Nicola F. Zagari 36 Memória Virtual
  • 37.   Escolhe a página mais freqüentemente usada   Argumento: uma página com contador de valor baixo, foi, provavelmente, trazida para a memória recentemente e ainda será usada Eduardo Nicola F. Zagari 37 Memória Virtual
  • 38.   Reserva de blocos   não é necessário esperar que a página selecionada seja transferida para o disco   Lista de páginas modificadas   automação através do dispositivo de transferência de páginas   minimiza probabilidade da página selecionada não estar atualizada no disco   Manter registros de qual página está no conjunto de blocos reservados   pode-se evitar E/S, aproveitando-se a antiga página contida na reserva de blocos Eduardo Nicola F. Zagari 38 Memória Virtual
  • 39.   Substituição Global:   permite alocar para um determinado processo qualquer bloco da memória, mesmo que já esteja alocado a outro processo   Desempenho do processo depende do comportamento dos demais   Substituição Local:   o bloco alocado a um processo deve pertencer ao conjunto de blocos reservado para este processo   Poucos blocos: pode provocar queda de desempenho, mesmo havendo blocos livres ou usados com menos freqüência   Muitos blocos: pode provocar desperdício   Na prática os algoritmos globais funcionam melhor Eduardo Nicola F. Zagari 39 Memória Virtual
  • 40. Idade 0 A0 10 A0 A0 1 A1 7 A1 A1 2 A2 5 A2 A2 3 A3 4 A3 A3 4 A4 3 A6 A4 5 B0 9 B0 B0 6 B1 4 B1 B1 7 B2 6 B2 B2 8 B3 2 B3 A6 9 B4 5 B4 B4 10 B5 12 B5 B5 11 C1 5 C1 C1 12 C2 6 C2 C2 Memória Física Substituição Local Substituição Global Eduardo Nicola F. Zagari 40 Memória Virtual
  • 41.   Considere que o sistema monitore a utilização da CPU   Se for baixa  aumenta o grau de multiprogramação   Considere também que é usado um algoritmo de trocas de páginas global   Agora suponha que um processo entre em uma nova fase, que precise de mais páginas   Ele “rouba” blocos dos outros processos, aumentando a taxa de falta de páginas, conseqüentemente, diminuindo a utilização da CPU  realimentando o ciclo   Dizemos que há thrashing (paginação excessiva) qdo ele está consumindo mais tempo em substituição de páginas do que na execução do seu código Eduardo Nicola F. Zagari 41 Memória Virtual
  • 42. Paginação Excessiva Utilização da CPU Grau de Multiprogramação Eduardo Nicola F. Zagari 42 Memória Virtual
  • 43.   Por que a Paginação funciona?
 Princípio (Modelo) da Localidade   Processo migra de uma localidade para outra.   Localidades podem se sobrepor.   Inicialização de um processo  Paginação sob Demanda  Funciona devido à localidade de referências   Por que então ocorreria thrashing ?
 Σ tamanhos das localidades > tamanho total da memória Eduardo Nicola F. Zagari 43 Memória Virtual
  • 44. Eduardo Nicola F. Zagari 44 Memória Virtual
  • 45.   Para prevenir thrashing deve-se fornecer aos processos o número de blocos que ele precisa Mas o que fazer quando um processo sofre swap in?   Conjunto de Trabalho   É o conjunto de páginas referenciadas por um processo durante um determinado intervalo de tempo   É o conjunto de páginas constantemente referenciadas pelo processo e que deve permanecer na memória para que ele execute de forma eficiente Eduardo Nicola F. Zagari 45 Memória Virtual
  • 46.   Modelo do Conjunto de Trabalho:   SO mantém controle sobre o conjunto de trabalho dos processos   SO carrega antes as páginas do CT de um processo, ao colocá-lo em execução, reduzindo o no de falta de páginas (pré-paginação) Quais páginas devem fazer parte do CT de um processo?   Uma forma de implementação é através do algoritmo aging:   qualquer página contendo um bit 1 entre os n bits mais significativos do contador será considerada membro do CT do processo à qual ela pertence Eduardo Nicola F. Zagari 46 Memória Virtual
  • 47. Eduardo Nicola F. Zagari 47 Memória Virtual
  • 48.   SO monitora a quantidade de páginas (Di) nos conjuntos de trabalho de todos os processos   Se Σi (CTi) for maior que o no de blocos livres  thrashing   Neste caso, SO seleciona um processo para sofrer swapping   Working Set grande Menor taxa de falta de página Menor número de processos na memória Alocação local: número de páginas iguais ou número de páginas proporcionais (nem considera thrashing) Alocação global: tamanho do CT pode variar muito mais rápido do que os bits de envelhecimento Problema de thrashing persiste... Eduardo Nicola F. Zagari 48 Memória Virtual
  • 49.   Para evitar o thrashing: Alg. PFF (Page Fault Frequency)   Controla diretamente a taxa de interrupções por F.P.  F.P. muito alta  processo necessita de mais blocos  F.P. muito baixa  processo está com blocos em excesso   Estipula-se um limite máximo e um limite mínimo para a taxa de interrupções por F.P.  Processos acima do máx  recebem mais blocos  Processos abaixo do mín  removem-se blocos   Se a taxa de interrupções cresce e não há blocos disponíveis  seleciona-se um processo e o suspende  blocos liberados são redistribuídos ou colocados à disposição   Swapping usado para redução de demanda potencial por memória Eduardo Nicola F. Zagari 49 Memória Virtual
  • 50. Aumentar Taxa de interrupções número de blocos de página ausente Limite Máximo Limite Mínimo Número de blocos Diminuir número de blocos Eduardo Nicola F. Zagari 50 Memória Virtual
  • 51.   Tamanho é sempre potência de 2 (29 - 214 bytes)   SO pode escolher tamanho:   hardware projetado para pags. de 512 bytes   SO enxerga pag. 0 e 1, 2 e 3, ... como páginas de 1k, alocando sempre 2 blocos consecutivos na memória para elas   Tamanho ótimo:   Páginas pequenas:  Menor desperdício: em média 1/2 página é perdida com fragmentação interna no fim de um segmento  Reduz a possibilidade de espaços inativos dentro de uma página Eduardo Nicola F. Zagari 51 Memória Virtual
  • 52.   Páginas grandes:  Menor número de páginas  menor tabela de páginas  Transferir páginas pequenas toma quase tanto tempo quanto transferir páginas grandes para o disco (movimento da cabeça e latência rotacional)  Menor a taxa de falta de páginas   Tamanho ótimo: 1448 bytes (valor teórico)   A maioria dos computadores comerciais têm páginas de 512 a 8k bytes   Historicamente, este valor tem aumentado... Eduardo Nicola F. Zagari 52 Memória Virtual
  • 53.   Alcance da TLB - A quantidade de memória acessível a partir da TLP.   Alcance da TLB = (Tamanho da TLB) X (Tamanho da Página)   Idealmente, o Conjunto de Trabalho de cada processo deveria ser armazenado inteiramente na TLB. Eduardo Nicola F. Zagari 53 Memória Virtual
  • 54.   Considere o exemplo:   Processo emite chamada de sistema de E/S   Processo é suspenso   Novo processo gera falta de página   Se alocação global  existe chance da página escolhida para ser removida ser a página contendo o buffer de E/S   Como o DMA (acesso direto) não tem como identificar em que página está escrevendo  inconsistência   Primeira Solução:   Operações de E/S usarem um buffer dentro do kernel  a cópia pode resultar em uma sobrecarga inaceitável Eduardo Nicola F. Zagari 54 Memória Virtual
  • 55. Eduardo Nicola F. Zagari 55 Memória Virtual
  • 56.   Segunda Solução:   Bloquear páginas envolvidas em E/S, não permitindo que sejam removidas durante a operação de E/S  bit de bloqueio   Outro uso do bit de bloqueio:   Processo provoca interrupção por falta de página   Página é carregada   Processo volta para a fila de pronto   Outro processo (de maior prioridade) ganha a CPU e provoca falta de página   Escolhe página não referenciada e nem modificada: A candidata perfeita  a própria página do processo de baixa prioridade Eduardo Nicola F. Zagari 56 Memória Virtual
  • 57.   Paginação por demanda foi projetada para ser transparente aos programas de usuário, mas...   Considere páginas de 1024 bytes. Para iniciar com ʻaʼ cada elemento de uma matriz de 1024 x 1024: char A[1024][1024]; for (j=0; j<1024; j++) { char A[1024][1024]; for (i=0; i<1024; i++) { A[i][j] = ‘a’; for (i=0; i<1024; i++) { } for (j=0; j<1024; j++) { } A[i][j] = ‘a’; } } Eduardo Nicola F. Zagari 57 Memória Virtual
  • 58.   A matriz é armazenada por linhas: A[0][0], A[0][1], A[0][2], ... , A[0][1024], A[1][0], A[1][1], ... , A[1024][1024]   Se a página tem tamanho 1024 bytes  cada linha ocupa uma página Taxa de faltas = 128 linhas X 128 colunas Taxa de faltas = 16.384 faltas 128 colunas 128 faltas Eduardo Nicola F. Zagari 58 Memória Virtual
  • 59.   Windows NT   Solaris 2 Eduardo Nicola F. Zagari 59 Memória Virtual
  • 60.   Usa paginação sob demanda com clustering. Clustering traz para memória páginas “ao redor” da página faltante.   São atribuídos aos processos um Conjunto de Trabalho Mínimo e um Conjunto de Trabalho Máximo.   Conjunto de Trabalho Mínimo é o menor número de páginas que o processo tem garantido possuir em memória.   Conjunto de Trabalho Máximo é o maior número de páginas que ele poderia possuir em memória ao mesmo tempo.   Quando a quantidade de memória livre no sistema cai abaixo de um limiar (threshold), o módulo chamado automatic working set trimming é executado para restabelecer a quantidade de memória livre.   Working set trimming remove páginas dos processos que têm páginas acima do seu Conjunto de Trabalho Mínimo (em excesso). Eduardo Nicola F. Zagari 60 Memória Virtual
  • 61.   Mantém uma lista de páginas livres para atribuir aos processos em falta.
   Lotsfree – parâmetro limiar para começar a paginação.
   Paginação é executada pelo processo pageout.
   Pageout busca páginas usando o algoritmo do relógio modificado.
   Scanrate é a taxa na qual as páginas são buscadas. Ela varia de slowscan para fastscan.   Pageout é chamado mais ou menos freqüentemente dependendo da quantidade de memória livre disponível. Eduardo Nicola F. Zagari 61 Memória Virtual
  • 62. Eduardo Nicola F. Zagari 62 Memória Virtual