1 of 100

MC504 Sistemas Operacionais

Prof. Dr. Eng. Isaías Bittencourt Felzmann

isaias@ic.unicamp.br

​

Campinas, 2s/2026

Gerenciamento de Memória

1/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

2 of 100

Copyright Note

The following set of slides are copyright Silberschatz, Galvin and Gagne, 2018. Modifications were made for their use in conjunction with MC504. The original material is available at os-book.com .

​

Os direitos autorais do conjunto de slides a seguir pertencem a Silberschatz, Galvin and Gagne, 2018. Foram feitas modificações para seu uso em MC504. O material original está disponível em os-book.com .

​

Este material foi elaborado com apoio de ferramentas de IA generativa como recurso auxiliar. O conteúdo foi revisado, validado e é de responsabilidade do docente.

2/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

3 of 100

Fundamentos

  • Um programa precisa ser trazido (do disco) para a memória e colocado dentro de um processo para ser executado
  • A memória principal e os registradores são os únicos meios de armazenamento que a CPU pode acessar diretamente
  • A unidade de memória enxerga apenas um fluxo de:
    • endereços + requisições de leitura, ou
    • endereço + dados e requisições de escrita
  • O acesso a registradores é feito em um ciclo de clock da CPU (ou menos)
  • O acesso à memória principal pode levar muitos ciclos, causando um stall
  • A cache fica entre a memória principal e os registradores da CPU
  • A proteção da memória é necessária para garantir a operação correta

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

3/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

4 of 100

Proteção

  • É necessário garantir que um processo acesse apenas os endereços do seu espaço de endereçamento.
  • Podemos prover essa proteção usando um par de registradores base e limite, que definem o espaço de endereçamento lógico de um processo

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

4/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

5 of 100

Proteção de Endereços por Hardware

  • A CPU deve verificar cada acesso à memória gerado em modo usuário para garantir que ele esteja entre a base e o limite daquele usuário

​

​

​

​

​

​

​

​

  • as instruções para carregar os registradores base e limite são privilegiadas

​

​

​

​

​

​

​

​

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

5/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

6 of 100

Vinculação de Endereços

  • Programas em disco, prontos para serem trazidos à memória para execução, formam uma fila de entrada
    • Sem suporte, precisam ser carregados no endereço 0000
  • É inconveniente que o endereço físico do primeiro processo de usuário seja sempre 0000
    • Como fazer para que não seja?
  • Os endereços são representados de formas diferentes em diferentes etapas da vida de um programa
    • Endereços no código-fonte geralmente são simbólicos
    • Endereços no código compilado são vinculados a endereços relocáveis
      • ex.: “14 bytes a partir do início deste módulo”
    • O linker ou o carregador vincula endereços relocáveis a endereços absolutos
      • ex.: 74014
    • Cada vinculação mapeia um espaço de endereçamento em outro

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

6/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

7 of 100

Vinculação de Instruções e Dados à Memória

  • A vinculação de endereços de instruções e dados a endereços de memória pode ocorrer em três etapas diferentes
    • Tempo de compilação: Se a posição de memória for conhecida a priori, pode ser gerado código absoluto; é preciso recompilar o código se a posição inicial mudar
    • Tempo de carga: É necessário gerar código relocável se a posição de memória não for conhecida em tempo de compilação
    • Tempo de execução: A vinculação é adiada até o tempo de execução se o processo puder ser movido, durante sua execução, de um segmento de memória para outro
      • É necessário suporte de hardware para o mapeamento de endereços (ex.: registradores base e limite)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

7/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

8 of 100

Etapas de Processamento de um Programa de Usuário

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

8/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

9 of 100

Espaço de Endereçamento Lógico vs. Físico

  • O conceito de um espaço de endereçamento lógico vinculado a um espaço de endereçamento físico separado é central para o gerenciamento adequado da memória
    • Endereço lógico – gerado pela CPU; também chamado de endereço virtual
    • Endereço físico – endereço visto pela unidade de memória
  • Endereços lógicos e físicos são os mesmos nos esquemas de vinculação de endereços em tempo de compilação e em tempo de carga; endereços lógicos (virtuais) e físicos diferem no esquema de vinculação de endereços em tempo de execução
  • Espaço de endereçamento lógico é o conjunto de todos os endereços lógicos gerados por um programa
  • Espaço de endereçamento físico é o conjunto de todos os endereços físicos gerados por um programa

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

9/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

10 of 100

Unidade de Gerenciamento de Memória (MMU)

  • Dispositivo de hardware que, em tempo de execução, mapeia endereços virtuais em endereços físicos

​

​

​

​

​

​

​

  • Há muitos métodos possíveis, abordados no restante deste capítulo

​

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

10/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

11 of 100

Unidade de Gerenciamento de Memória (Cont.)

  • Considere um esquema simples, que é uma generalização do esquema de registrador base.
    • O registrador base passa a ser chamado de registrador de relocação
  • O valor do registrador de relocação é somado a todo endereço gerado por um processo de usuário no momento em que ele é enviado à memória
  • O programa de usuário lida com endereços lógicos; ele nunca vê os endereços físicos reais
    • A vinculação em tempo de execução ocorre quando é feita uma referência a uma posição de memória
    • Endereço lógico vinculado a endereços físicos

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

11/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

12 of 100

Unidade de Gerenciamento de Memória (Cont.)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

12/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

13 of 100

Alocação Contígua

  • A memória principal deve atender tanto ao SO quanto aos processos de usuário
  • Recurso limitado, deve ser alocado de forma eficiente
  • A alocação contígua é um dos primeiros métodos
  • A memória principal geralmente é dividida em duas partições:
    • Sistema operacional residente, geralmente mantido na memória baixa junto com o vetor de interrupções
    • Os processos de usuário ficam, então, na memória alta
    • Cada processo fica contido em uma única seção contígua de memória

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

13/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

14 of 100

Alocação Contígua (Cont.)

  • Registradores de relocação são usados para proteger os processos de usuário uns dos outros e para impedir que alterem o código e os dados do sistema operacional
    • O registrador base contém o valor do menor endereço físico
    • O registrador limite contém a faixa de endereços lógicos – cada endereço lógico deve ser menor que o registrador limite
    • A MMU mapeia o endereço lógico dinamicamente
    • Isso permite ações como ter código do kernel transiente e o kernel mudar de tamanho

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

14/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

15 of 100

Suporte de Hardware aos Registradores de Relocação e Limite

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

15/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

16 of 100

�Partição Variável

  • Alocação com múltiplas partições
    • Grau de multiprogramação limitado pelo número de partições
    • Partições de tamanho variável para maior eficiência (dimensionadas de acordo com as necessidades de cada processo)
    • Lacuna (hole) – bloco de memória disponível; lacunas de vários tamanhos ficam espalhadas pela memória
    • Quando um processo chega, ele recebe memória de uma lacuna grande o suficiente para acomodá-lo
    • Um processo que termina libera sua partição; partições livres adjacentes são combinadas
    • O sistema operacional mantém informações sobre:�a) partições alocadas b) partições livres (lacunas)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

16/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

17 of 100

Problema de Alocação Dinâmica de Memória

  • First-fit: Aloca a primeira lacuna que seja grande o suficiente
  • Best-fit: Aloca a menor lacuna que seja grande o suficiente; é preciso percorrer toda a lista, a menos que ela esteja ordenada por tamanho
    • Produz a menor lacuna remanescente
  • Worst-fit: Aloca a maior lacuna; também é preciso percorrer toda a lista
    • Produz a maior lacuna remanescente

Como atender a uma requisição de tamanho n a partir de uma lista de lacunas livres?

First-fit e best-fit são melhores que worst-fit em termos de velocidade e de utilização da memória

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

17/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

18 of 100

Fragmentação

  • Fragmentação externa – existe espaço total de memória suficiente para atender a uma requisição, mas ele não é contíguo
  • Fragmentação interna – a memória alocada pode ser ligeiramente maior que a memória requisitada; essa diferença de tamanho é memória interna a uma partição, mas que não está sendo usada
  • A análise do first-fit revela que, dados N blocos alocados, 0,5 N blocos são perdidos por fragmentação
    • 1/3 pode ficar inutilizável -> regra dos 50 por cento

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

18/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

19 of 100

Fragmentação (Cont.)

  • Reduz-se a fragmentação externa por meio de compactação
    • Reorganizar o conteúdo da memória para juntar toda a memória livre em um único bloco grande
    • A compactação é possível somente se a relocação for dinâmica e realizada em tempo de execução
    • Problema de E/S
      • Fixar o job na memória enquanto ele estiver envolvido em E/S
      • Fazer E/S somente para buffers do SO
  • Agora considere que o backing store tem os mesmos problemas de fragmentação

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

19/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

20 of 100

Paginação

  • O espaço de endereçamento físico de um processo pode ser não contíguo; o processo recebe memória física sempre que esta estiver disponível
    • Evita a fragmentação externa
    • Evita o problema de blocos de memória de tamanhos variados
  • Dividir a memória física em blocos de tamanho fixo chamados frames
    • O tamanho é uma potência de 2, entre 512 bytes e 16 Mbytes
  • Dividir a memória lógica em blocos do mesmo tamanho chamados páginas
  • Manter o controle de todos os frames livres
  • Para executar um programa de tamanho N páginas, é preciso encontrar N frames livres e carregar o programa
  • Configurar uma tabela de páginas para traduzir endereços lógicos em físicos
  • O backing store também é dividido em páginas
  • Ainda há fragmentação interna

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

20/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

21 of 100

Esquema de Tradução de Endereços

  • O endereço gerado pela CPU é dividido em:
    • Número da página (p) – usado como índice em uma tabela de páginas que contém o endereço base de cada página na memória física
    • Deslocamento na página (d) – combinado com o endereço base para definir o endereço de memória física que é enviado à unidade de memória

​

​

​

​

    • Para um dado espaço de endereçamento lógico 2m e tamanho de página 2n

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

21/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

22 of 100

Hardware de Paginação

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

22/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

23 of 100

Modelo de Paginação da Memória Lógica e Física

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

23/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

24 of 100

Exemplo de Paginação

  • Endereço lógico: n = 2 e m = 4. Usando um tamanho de página de 4 bytes e uma memória física de 32 bytes (8 páginas)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

24/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

25 of 100

Paginação -- Cálculo da fragmentação interna

  • Tamanho da página = 2.048 bytes
  • Tamanho do processo = 72.766 bytes
  • 35 páginas + 1.086 bytes
  • Fragmentação interna de 2.048 - 1.086 = 962 bytes
  • Fragmentação no pior caso = 1 frame – 1 byte
  • Fragmentação média = 1 / 2 do tamanho do frame
  • Então, tamanhos de frame pequenos são desejáveis?
  • Mas cada entrada da tabela de páginas consome memória para ser mantida
  • Os tamanhos de página vêm crescendo ao longo do tempo

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

25/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

26 of 100

Frames Livres

Antes da alocação

Depois da alocação

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

26/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

27 of 100

Implementação da Tabela de Páginas

  • A tabela de páginas é mantida na memória principal
    • Registrador de base da tabela de páginas (PTBR) aponta para a tabela de páginas
    • Registrador de tamanho da tabela de páginas (PTLR) indica o tamanho da tabela de páginas
  • Nesse esquema, todo acesso a dado/instrução requer dois acessos à memória
    • Um para a tabela de páginas e outro para o dado / instrução
  • O problema dos dois acessos à memória pode ser resolvido com o uso de uma cache de hardware especial de busca rápida chamada translation look-aside buffers (TLBs).

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

27/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

28 of 100

Translation Look-Aside Buffer

  • Alguns TLBs armazenam identificadores de espaço de endereçamento (ASIDs) em cada entrada do TLB – identificam unicamente cada processo para prover proteção do espaço de endereçamento desse processo
    • Caso contrário, é necessário esvaziar (flush) o TLB a cada troca de contexto
  • TLBs geralmente são pequenos (de 64 a 1.024 entradas)
  • Em um TLB miss, o valor é carregado no TLB para que o próximo acesso seja mais rápido
    • Políticas de substituição devem ser consideradas
    • Algumas entradas podem ser fixadas (wired down) para acesso rápido permanente

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

28/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

29 of 100

Hardware do TLB

  • Memória associativa – busca paralela

​

​

​

​

​

  • Tradução de endereço (p, d)
    • Se p está em um registrador associativo, obtém-se o nº do frame
    • Caso contrário, obtém-se o nº do frame a partir da tabela de páginas na memória

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

29/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

30 of 100

Hardware de Paginação com TLB

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

30/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

31 of 100

Proteção de Memória

  • A proteção de memória é implementada associando-se um bit de proteção a cada frame para indicar se o acesso permitido é somente leitura ou leitura e escrita
    • Também é possível adicionar mais bits para indicar página somente de execução, e assim por diante
  • Bit válido-inválido associado a cada entrada da tabela de páginas:
    • “válido” indica que a página associada está no espaço de endereçamento lógico do processo e, portanto, é uma página legal
    • “inválido” indica que a página não está no espaço de endereçamento lógico do processo
    • Ou usar o registrador de tamanho da tabela de páginas (PTLR)
  • Qualquer violação resulta em um trap para o kernel

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

31/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

32 of 100

Bit Válido (v) ou Inválido (i) em uma Tabela de Páginas

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

32/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

33 of 100

Carregamento Dinâmico

  • O programa inteiro precisa estar na memória para ser executado
  • A rotina não é carregada até ser chamada
  • Melhor utilização do espaço de memória; uma rotina não utilizada nunca é carregada
  • Todas as rotinas são mantidas em disco em formato de carga relocável
  • Útil quando grandes quantidades de código são necessárias para tratar casos que ocorrem com pouca frequência
  • Não é necessário suporte especial do sistema operacional
    • Implementado ao projetar o programa
    • O SO pode ajudar fornecendo bibliotecas para implementar o carregamento dinâmico

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

33/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

34 of 100

Ligação Dinâmica

  • Ligação estática – bibliotecas do sistema e código do programa são combinados pelo carregador na imagem binária do programa
  • Ligação dinâmica – ligação adiada até o tempo de execução
  • Um pequeno trecho de código, o stub, é usado para localizar a rotina de biblioteca apropriada residente na memória
  • O stub substitui a si mesmo pelo endereço da rotina e executa a rotina
  • O sistema operacional verifica se a rotina está no espaço de endereçamento do processo
    • Se não estiver no espaço de endereçamento, adiciona-a ao espaço de endereçamento
  • A ligação dinâmica é particularmente útil para bibliotecas
  • Esse sistema também é conhecido como bibliotecas compartilhadas
  • Considere sua aplicabilidade na atualização (patching) de bibliotecas do sistema
    • Pode ser necessário controle de versões

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

34/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

35 of 100

Páginas Compartilhadas

  • Código compartilhado
    • Uma cópia de código somente leitura (reentrante) compartilhada entre processos (ex.: editores de texto, compiladores, sistemas de janelas)
    • Semelhante a várias threads compartilhando o mesmo espaço de processo
    • Também é útil para comunicação entre processos se o compartilhamento de páginas de leitura e escrita for permitido
  • Código e dados privados
    • Cada processo mantém uma cópia separada do código e dos dados
    • As páginas do código e dos dados privados podem aparecer em qualquer lugar do espaço de endereçamento lógico

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

35/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

36 of 100

Exemplo de Páginas Compartilhadas

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

36/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

37 of 100

Swapping

  • Um processo pode ser temporariamente retirado da memória para um backing store e, depois, trazido de volta à memória para continuar sua execução
    • O espaço total de memória física dos processos pode exceder a memória física
  • Backing store – disco rápido, grande o suficiente para acomodar cópias de todas as imagens de memória de todos os usuários; deve fornecer acesso direto a essas imagens de memória
  • Roll out, roll in – variante de swapping usada em algoritmos de escalonamento baseados em prioridade; um processo de menor prioridade é retirado da memória para que um processo de maior prioridade possa ser carregado e executado
  • A maior parte do tempo de swap é tempo de transferência; o tempo total de transferência é diretamente proporcional à quantidade de memória envolvida no swap
  • O sistema mantém uma fila de prontos com os processos prontos para executar cujas imagens de memória estão em disco

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

37/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

38 of 100

Swapping (Cont.)

  • Um processo retirado da memória precisa ser trazido de volta para os mesmos endereços físicos?
  • Depende do método de vinculação de endereços
    • Também é preciso considerar E/S pendente de / para o espaço de memória do processo
  • Versões modificadas de swapping são encontradas em muitos sistemas (ex.: UNIX, Linux e Windows)
    • Swapping normalmente desabilitado
    • Ativado se mais do que uma quantidade limite de memória estiver alocada
    • Desabilitado novamente quando a demanda por memória cair abaixo do limite

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

38/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

39 of 100

Visão Esquemática do Swapping

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

39/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

40 of 100

Tempo de Troca de Contexto incluindo Swapping

  • Se o próximo processo a ser colocado na CPU não estiver na memória, é preciso fazer swap out de um processo e swap in do processo-alvo
  • O tempo de troca de contexto pode, então, ser muito alto
  • Swapping de um processo de 100MB para um disco rígido com taxa de transferência de 50MB/s
    • Tempo de swap out de 2000 ms
    • Mais o swap in de um processo de mesmo tamanho
    • Tempo total do componente de swapping da troca de contexto de 4000ms (4 segundos)
  • Pode ser reduzido se o tamanho da memória envolvida no swap for reduzido – sabendo quanta memória está realmente sendo usada
    • Chamadas de sistema para informar o SO sobre o uso de memória via request_memory() e release_memory()

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

40/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

41 of 100

Tempo de Troca de Contexto e Swapping (Cont.)

  • Há também outras restrições ao swapping
    • E/S pendente – não é possível fazer swap out, pois a E/S ocorreria no processo errado
    • Ou sempre transferir a E/S para o espaço do kernel e, depois, para o dispositivo de E/S
      • Conhecido como double buffering, adiciona overhead
  • O swapping padrão não é usado em sistemas operacionais modernos
    • Mas uma versão modificada é comum
      • Fazer swap somente quando a memória livre estiver extremamente baixa

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

41/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

42 of 100

Swapping em Sistemas Móveis

  • Normalmente não é suportado
    • Baseados em memória flash
      • Pouco espaço
      • Número limitado de ciclos de escrita
      • Throughput baixo entre a memória flash e a CPU em plataformas móveis
  • Em vez disso, usam outros métodos para liberar memória quando ela está baixa
    • O iOS pede aos aplicativos que liberem voluntariamente a memória alocada
      • Dados somente leitura são descartados e recarregados da memória flash, se necessário
      • Não liberar memória pode resultar em encerramento
    • O Android encerra aplicativos se houver pouca memória livre, mas antes grava o estado da aplicação na memória flash para permitir um reinício rápido

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

42/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

43 of 100

Swapping com Paginação

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

43/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

44 of 100

Fundamentos

  • O código precisa estar na memória para ser executado, mas o programa inteiro raramente é usado
    • Código de tratamento de erros, rotinas incomuns, grandes estruturas de dados
  • O código do programa inteiro não é necessário ao mesmo tempo
  • Considere a capacidade de executar um programa parcialmente carregado
    • O programa não fica mais restrito aos limites da memória física
    • Cada programa ocupa menos memória durante a execução -> mais programas executam ao mesmo tempo
      • Aumento da utilização da CPU e do throughput sem aumento do tempo de resposta ou do tempo de turnaround
    • Menos E/S necessária para carregar ou fazer swap de programas na memória -> cada programa de usuário executa mais rápido

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

44/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

45 of 100

Memória virtual

  • Memória virtual – separação entre a memória lógica do usuário e a memória física
    • Apenas parte do programa precisa estar na memória para execução
    • 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
    • Permite a criação de processos de forma mais eficiente
    • Mais programas executando concorrentemente
    • Menos E/S necessária para carregar ou fazer swap de processos

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

45/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

46 of 100

Memória virtual (Cont.)

  • Espaço de endereçamento virtual – visão lógica de como o processo é armazenado na memória
    • Geralmente começa no endereço 0, com endereços contíguos até o fim do espaço
    • Enquanto isso, a memória física é organizada em frames de página
    • A MMU deve mapear endereços lógicos em físicos
  • A memória virtual pode ser implementada via:
    • Paginação sob demanda
    • Segmentação sob demanda

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

46/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

47 of 100

Memória Virtual Maior que a Memória Física

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

47/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

48 of 100

Espaço de Endereçamento Virtual

  • Geralmente, o espaço de endereçamento lógico é projetado para que a pilha comece no endereço lógico máximo e cresça “para baixo”, enquanto o heap cresce “para cima”
    • Maximiza o uso do espaço de endereçamento
    • O espaço de endereçamento não utilizado entre os dois é uma lacuna
      • Nenhuma memória física é necessária até que o heap ou a pilha cresça para uma nova página
  • Permite espaços de endereçamento esparsos com lacunas deixadas para crescimento, bibliotecas ligadas dinamicamente etc.
  • Bibliotecas do sistema compartilhadas por meio de mapeamento no espaço de endereçamento virtual
  • Memória compartilhada por meio do mapeamento de páginas de leitura e escrita no espaço de endereçamento virtual
  • Páginas podem ser compartilhadas durante o fork(), agilizando a criação de processos

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

48/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

49 of 100

Biblioteca Compartilhada com Memória Virtual

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

49/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

50 of 100

Paginação sob Demanda

  • Poderia trazer o processo inteiro para a memória no momento da carga
  • Ou trazer uma página para a memória somente quando ela for necessária
    • Menos E/S necessária, nenhuma E/S desnecessária
    • Menos memória necessária
    • Resposta mais rápida
    • Mais usuários
  • Semelhante a um sistema de paginação com swapping
  • Página é necessária ⇒ referência a ela
    • referência inválida ⇒ abortar
    • não está na memória ⇒ trazer para a memória
  • Lazy swapper – nunca traz uma página para a memória, a menos que ela vá ser necessária
    • Um swapper que lida com páginas é um paginador (pager)

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

50/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

51 of 100

Paginação sob Demanda

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

51/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

52 of 100

Conceitos Básicos

  • Com swapping, o paginador tenta adivinhar quais páginas serão usadas antes de o processo ser retirado da memória novamente
  • Em vez disso, o paginador traz para a memória apenas essas páginas
  • Como determinar esse conjunto de páginas?
    • É necessária uma nova funcionalidade da MMU para implementar a paginação sob demanda
  • Se as páginas necessárias já estiverem residentes na memória
    • Não há diferença em relação à paginação que não é sob demanda
  • Se a página for necessária e não estiver residente na memória
    • É necessário detectá-la e carregá-la do armazenamento para a memória
      • Sem alterar o comportamento do programa
      • Sem que o programador precise alterar o código

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

52/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

53 of 100

Bit Válido-Inválido

  • A cada entrada da tabela de páginas é associado um bit válido–inválido�(v ⇒ na memória – residente na memória, i ⇒ não está na memória)
  • Inicialmente, o bit válido–inválido é definido como i em todas as entradas
  • Exemplo de um instante de uma tabela de páginas:������������
  • Durante a tradução de endereços pela MMU, se o bit válido–inválido na entrada da tabela de páginas for i ⇒ page fault

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

53/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

54 of 100

Tabela de Páginas Quando Algumas Páginas Não Estão�na Memória Principal

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

54/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

55 of 100

Etapas no Tratamento de um Page Fault

  1. Se houver uma referência a uma página, a primeira referência a ela gerará um trap para o sistema operacional
    • Page fault
  2. O sistema operacional consulta outra tabela para decidir:
    • Referência inválida ⇒ abortar
    • Apenas não está na memória
  3. Encontrar um frame livre
  4. Fazer swap da página para o frame por meio de uma operação de disco escalonada
  5. Atualizar as tabelas para indicar que a página agora está na memória�Definir bit de validação = v
  6. Reiniciar a instrução que causou o page fault

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

55/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

56 of 100

Etapas no Tratamento de um Page Fault (Cont.)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

56/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

57 of 100

Aspectos da Paginação sob Demanda

  • Caso extremo – iniciar o processo com nenhuma página na memória
    • O SO define o ponteiro de instrução para a primeira instrução do processo, não residente na memória -> page fault
    • E o mesmo para todas as outras páginas do processo no primeiro acesso
    • Paginação sob demanda pura
  • Na verdade, uma única instrução pode acessar várias páginas -> vários page faults
    • Considere a busca e a decodificação de uma instrução que soma 2 números da memória e armazena o resultado de volta na memória
    • O problema é atenuado graças à localidade de referência
  • Suporte de hardware necessário para a paginação sob demanda
    • Tabela de páginas com bit válido / inválido
    • Memória secundária (dispositivo de swap com espaço de swap)
    • Reinício de instrução

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

57/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

58 of 100

Lista de Frames Livres

  • Quando ocorre um page fault, o sistema operacional deve trazer a página desejada do armazenamento secundário para a memória principal.
  • A maioria dos sistemas operacionais mantém uma lista de frames livres -- um pool de frames livres para atender a essas requisições.

​

​

  • Os sistemas operacionais geralmente alocam frames livres usando uma técnica conhecida como zero-fill-on-demand -- o conteúdo dos frames é zerado antes de serem alocados.
  • Quando o sistema é iniciado, toda a memória disponível é colocada na lista de frames livres.

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

58/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

59 of 100

�Etapas da Paginação sob Demanda – Pior Caso

  1. Trap para o sistema operacional
  2. Salvar os registradores do usuário e o estado do processo
  3. Determinar que a interrupção foi um page fault
  4. Verificar se a referência à página era legal e determinar a localização da página no disco
  5. Emitir uma leitura do disco para um frame livre:
    1. Aguardar em uma fila deste dispositivo até que a requisição de leitura seja atendida
    2. Aguardar o tempo de seek e/ou de latência do dispositivo
    3. Iniciar a transferência da página para um frame livre

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

59/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

60 of 100

Etapas da Paginação sob Demanda (Cont.)

  1. Enquanto espera, alocar a CPU a algum outro usuário
  2. Receber uma interrupção do subsistema de entrada e saída do disco (E/S concluída)
  3. Salvar os registradores e o estado do processo do outro usuário
  4. Determinar que a interrupção veio do disco
  5. Corrigir a tabela de páginas e as demais tabelas para indicar que a página agora está na memória
  6. Aguardar que a CPU seja alocada novamente a este processo
  7. Restaurar os registradores do usuário, o estado do processo e a nova tabela de páginas e, então, retomar a instrução interrompida

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

60/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

61 of 100

Desempenho da Paginação sob Demanda

  • Três atividades principais
    • Atender à interrupção – com codificação cuidadosa, são necessárias apenas algumas centenas de instruções
    • Ler a página – muito tempo
    • Reiniciar o processo – novamente, apenas uma pequena quantidade de tempo
  • Taxa de page faults 0 ≤ p ≤ 1
    • se p = 0, não há page faults
    • se p = 1, toda referência gera um page fault
  • Tempo de Acesso Efetivo (EAT)

EAT = (1 – p) x acesso à memória

+ p (overhead do page fault

+ swap out da página

+ swap in da página )

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

61/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

62 of 100

Exemplo de Paginação sob Demanda

  • Tempo de acesso à memória = 200 nanossegundos
  • Tempo médio de serviço de um page fault = 8 milissegundos
  • EAT = (1 – p) x 200 + p (8 milissegundos)

= (1 – p x 200 + p x 8.000.000

= 200 + p x 7.999.800

  • Se um a cada 1.000 acessos causar um page fault, então

EAT = 8,2 microssegundos.

Isso representa uma desaceleração por um fator de 40!!

  • Se quisermos degradação de desempenho < 10 por cento
    • 220 > 200 + 7.999.800 x p�20 > 7.999.800 x p
    • p < 0,0000025
    • < um page fault a cada 400.000 acessos à memória

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

62/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

63 of 100

Otimizações da Paginação sob Demanda

  • E/S no espaço de swap é mais rápida que E/S no sistema de arquivos, mesmo que no mesmo dispositivo
    • O swap é alocado em blocos maiores, exigindo menos gerenciamento que o sistema de arquivos
  • Copiar a imagem inteira do processo para o espaço de swap no momento da carga do processo
    • Em seguida, fazer page in e page out a partir do espaço de swap
    • Usado em versões antigas do BSD Unix
  • Fazer page in sob demanda a partir do binário do programa em disco, mas descartar a página em vez de fazer page out ao liberar o frame
    • Usado no Solaris e no BSD atual
    • Ainda é necessário gravar no espaço de swap
      • Páginas não associadas a um arquivo (como pilha e heap) – memória anônima
      • Páginas modificadas na memória, mas ainda não gravadas de volta no sistema de arquivos
  • Sistemas móveis
    • Normalmente não suportam swapping
    • Em vez disso, fazem paginação sob demanda a partir do sistema de arquivos e recuperam páginas somente leitura (como código)

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

63/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

64 of 100

Copy-on-Write

  • Copy-on-Write (COW) permite que os processos pai e filho inicialmente compartilhem as mesmas páginas na memória
    • Se qualquer um dos processos modificar uma página compartilhada, somente então a página é copiada
  • O COW permite a criação de processos de forma mais eficiente, pois apenas as páginas modificadas são copiadas
  • Em geral, páginas livres são alocadas a partir de um pool de páginas zero-fill-on-demand
    • O pool deve sempre ter frames livres para a execução rápida da paginação sob demanda
      • Não queremos ter que liberar um frame além do restante do processamento no page fault
    • Por que zerar uma página antes de alocá-la?
  • A variação vfork() da chamada de sistema fork() suspende o pai, e o filho usa o espaço de endereçamento do pai com copy-on-write
    • Projetada para que o filho chame exec()
    • Muito eficiente

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

64/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

65 of 100

Antes de o Processo 1 Modificar a Página C

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

65/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

66 of 100

Depois de o Processo 1 Modificar a Página C

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

66/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

67 of 100

O Que Acontece Se Não Houver Frame Livre?

  • Ocupados por páginas de processos
  • Também demandados pelo kernel, buffers de E/S etc.
  • Quanto alocar para cada um?
  • Substituição de páginas – encontrar alguma página na memória que não esteja realmente em uso e retirá-la da memória
    • Algoritmo – encerrar? fazer swap out? substituir a página?
    • Desempenho – queremos um algoritmo que resulte no número mínimo de page faults
  • A mesma página pode ser trazida para a memória várias vezes

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

67/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

68 of 100

Substituição de Páginas

  • Evitar a superalocação de memória modificando a rotina de tratamento de page faults para incluir a substituição de páginas
  • Usar o bit de modificação (dirty) para reduzir o overhead das transferências de páginas – apenas páginas modificadas são gravadas em disco
  • A substituição de páginas completa a separação entre memória lógica e memória física – uma memória virtual grande pode ser oferecida sobre uma memória física menor

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

68/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

69 of 100

Necessidade de Substituição de Páginas

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

69/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

70 of 100

Substituição de Páginas Básica

  1. Encontrar a localização da página desejada no disco
  2. Encontrar um frame livre:� - Se houver um frame livre, usá-lo� - Se não houver frame livre, usar um algoritmo de substituição de páginas para selecionar um frame vítima� - Gravar o frame vítima em disco se ele estiver sujo
  3. Trazer a página desejada para o frame (recém-)liberado; atualizar as tabelas de páginas e de frames
  4. Continuar o processo reiniciando a instrução que causou o trap

Observe que agora há potencialmente 2 transferências de página por page fault – aumentando o EAT

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

70/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

71 of 100

Substituição de Páginas

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

71/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

72 of 100

Algoritmos de Substituição de Páginas e de Frames

  • Algoritmo de alocação de frames determina
    • Quantos frames dar a cada processo
    • Quais frames substituir
  • Algoritmo de substituição de páginas
    • Busca-se a menor taxa de page faults tanto no primeiro acesso quanto em novos acessos
  • Avalia-se o algoritmo executando-o sobre uma sequência específica de referências à memória e calculando o número de page faults nessa sequência
    • A sequência contém apenas números de página, não endereços completos
    • Acessos repetidos à mesma página não causam page fault
    • Os resultados dependem do número de frames disponíveis
  • Em todos os nossos exemplos, a sequência de referências de números de páginas referenciadas é

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

72/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

73 of 100

Algoritmo First-In-First-Out (FIFO)

  • Sequência de referências: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
  • 3 frames (3 páginas podem estar na memória ao mesmo tempo por processo)

​

​

�

​

​

​

  • Pode variar conforme a sequência de referências: considere 1,2,3,4,1,2,5,1,2,3,4,5
    • Adicionar mais frames pode causar mais page faults!
      • Anomalia de Belady
  • Como acompanhar a idade das páginas?
    • Basta usar uma fila FIFO

15 page faults

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

73/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

74 of 100

FIFO Ilustrando a Anomalia de Belady

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

74/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

75 of 100

Algoritmo Ótimo

  • Substituir a página que não será usada pelo maior período de tempo
    • 9 é o valor ótimo para o exemplo
  • Como saber isso?
    • Não é possível ler o futuro
  • Usado para medir o quão bem o seu algoritmo se comporta

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

75/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

76 of 100

Algoritmo Least Recently Used (LRU)

  • Usar o conhecimento do passado em vez do futuro
  • Substituir a página que não é usada há mais tempo
  • Associar a cada página o instante de seu último uso

​

​

​

​

​

​

  • 12 page faults – melhor que FIFO, mas pior que OPT
  • Em geral, é um bom algoritmo e é usado com frequência
  • Mas como implementá-lo?

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

76/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

77 of 100

Algoritmo LRU (Cont.)

  • Implementação com contadores
    • Cada entrada de página tem um contador; toda vez que a página é referenciada por meio dessa entrada, copia-se o relógio para o contador
    • Quando uma página precisa ser substituída, verificam-se os contadores para encontrar o menor valor
      • É necessário percorrer a tabela
  • Implementação com pilha
    • Manter uma pilha de números de página na forma de uma lista duplamente encadeada:
    • Página referenciada:
      • movê-la para o topo
      • requer a alteração de 6 ponteiros
    • Mas cada atualização é mais cara
    • Não há busca para a substituição

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

77/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

78 of 100

Algoritmo LRU (Cont.)

  • LRU e OPT são casos de algoritmos de pilha que não apresentam a Anomalia de Belady
  • Uso de uma Pilha para Registrar as Referências de Página Mais Recentes

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

78/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

79 of 100

Algoritmos de Aproximação do LRU

  • O LRU requer hardware especial e ainda é lento
  • Bit de referência
    • Associar um bit a cada página, inicialmente = 0
    • Quando a página é referenciada, o bit é definido como 1
    • Substituir qualquer página com bit de referência = 0 (se existir)
      • No entanto, não sabemos a ordem

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

79/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

80 of 100

Algoritmos de Aproximação do LRU (cont.)

  • Algoritmo da segunda chance
    • Em geral, FIFO mais o bit de referência fornecido pelo hardware
    • Também chamada de substituição Clock
    • Se a página a ser substituída tiver
      • Bit de referência = 0 -> substituí-la
      • bit de referência = 1, então:
        • definir o bit de referência como 0 e deixar a página na memória
        • substituir a próxima página, sujeita às mesmas regras

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

80/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

81 of 100

�Algoritmo da Segunda Chance

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

81/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

82 of 100

Algoritmo da Segunda Chance Aprimorado

  • Melhorar o algoritmo usando em conjunto o bit de referência e o bit de modificação (se disponível)
  • Considerar o par ordenado (referência, modificação):
    • (0, 0) nem usada recentemente nem modificada – melhor página para substituir
    • (0, 1) não usada recentemente, mas modificada – não tão boa, precisa ser gravada antes da substituição
    • (1, 0) usada recentemente, mas limpa – provavelmente será usada novamente em breve
    • (1, 1) usada recentemente e modificada – provavelmente será usada novamente em breve e precisa ser gravada antes da substituição
  • Quando a substituição de páginas for necessária, usar o esquema clock, mas com as quatro classes: substituir uma página da classe não vazia mais baixa
    • Pode ser necessário percorrer a fila circular várias vezes

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

82/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

83 of 100

Algoritmos de Contagem

  • Manter um contador do número de referências feitas a cada página
    • Não é comum
  • Algoritmo Least Frequently Used (LFU):
    • Substitui a página com a menor contagem
  • Algoritmo Most Frequently Used (MFU):
    • Baseado no argumento de que a página com a menor contagem provavelmente acabou de ser trazida e ainda será usada

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

83/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

84 of 100

Algoritmos de Buffering de Páginas

  • Manter sempre um pool de frames livres
    • Assim, há um frame disponível quando necessário, sem precisar procurá-lo no momento do page fault
    • Ler a página para um frame livre e selecionar uma vítima para remover e adicionar ao pool livre
    • Quando for conveniente, remover a vítima
  • Possivelmente, manter uma lista de páginas modificadas
    • Quando o backing store estiver ocioso, gravar as páginas nele e marcá-las como limpas
  • Possivelmente, manter intacto o conteúdo dos frames livres e registrar o que há neles
    • Se forem referenciados novamente antes de serem reutilizados, não é necessário carregar o conteúdo novamente do disco
    • Em geral, útil para reduzir a penalidade caso o frame vítima errado seja selecionado

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

84/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

85 of 100

Aplicações e Substituição de Páginas

  • Todos esses algoritmos fazem o SO tentar adivinhar os acessos futuros às páginas
  • Algumas aplicações têm conhecimento melhor – ex.: bancos de dados
  • Aplicações que usam memória intensivamente podem causar double buffering
    • O SO mantém uma cópia da página na memória como buffer de E/S
    • A aplicação mantém a página na memória para seu próprio trabalho
  • O sistema operacional pode dar acesso direto ao disco, saindo do caminho das aplicações
    • Modo raw disk
  • Evita buffering, locking etc.

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

85/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

86 of 100

Alocação de Frames

  • Cada processo precisa de um número mínimo de frames
  • Exemplo: IBM 370 – 6 páginas para tratar a instrução SS MOVE:
    • a instrução tem 6 bytes, podendo ocupar 2 páginas
    • 2 páginas para tratar a origem
    • 2 páginas para tratar o destino
  • O máximo, naturalmente, é o total de frames do sistema
  • Dois esquemas principais de alocação
    • alocação fixa
    • alocação por prioridade
  • Muitas variações

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

86/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

87 of 100

Alocação Fixa

  • Alocação igualitária – Por exemplo, se houver 100 frames (após alocar frames para o SO) e 5 processos, dar 20 frames a cada processo
    • Manter alguns como pool de buffer de frames livres

​

  • Alocação proporcional – Alocar de acordo com o tamanho do processo
    • Dinâmica, conforme o grau de multiprogramação e os tamanhos dos processos mudam

​

​

​

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

87/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

88 of 100

Alocação Global vs. Local

  • Substituição global – o processo seleciona um frame para substituição a partir do conjunto de todos os frames; um processo pode tomar um frame de outro
    • Mas, então, o tempo de execução do processo pode variar muito
    • Mas oferece maior throughput, por isso é mais comum
  • Substituição local – cada processo seleciona apenas a partir de seu próprio conjunto de frames alocados
    • Desempenho por processo mais consistente
    • Mas a memória pode ficar subutilizada

​

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

88/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

89 of 100

Thrashing

  • Se um processo não tem páginas “suficientes”, a taxa de page faults é muito alta
    • Page fault para obter uma página
    • Substitui um frame existente
    • Mas logo precisa do frame substituído de volta
    • Isso leva a:
      • Baixa utilização da CPU
      • O sistema operacional achar que precisa aumentar o grau de multiprogramação
      • Outro processo é adicionado ao sistema�

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

89/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

90 of 100

Thrashing (Cont.)

  • Thrashing. Um processo fica ocupado fazendo swap de páginas para dentro e para fora da memória

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

90/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

91 of 100

Paginação sob Demanda e Thrashing

  • Por que a paginação sob demanda funciona?

� Modelo de localidade

    • O processo migra de uma localidade para outra
    • Localidades podem se sobrepor
  • Por que o thrashing ocorre?

� Σ tamanho da localidade > tamanho total da memória

​

  • Limitar os efeitos usando substituição de páginas local ou por prioridade

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

91/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

92 of 100

Localidade em um Padrão de Referências à Memória

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

92/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

93 of 100

Frequência de Page Faults

  • Estabelecer uma taxa de frequência de page faults (PFF) “aceitável” e usar uma política de substituição local
    • Se a taxa real for muito baixa, o processo perde um frame
    • Se a taxa real for muito alta, o processo ganha um frame

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

93/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

94 of 100

Pré-paginação

  • Para reduzir o grande número de page faults que ocorre na inicialização de um processo
  • Pré-paginar todas ou algumas das páginas de que um processo precisará, antes que elas sejam referenciadas
  • Mas, se as páginas pré-paginadas não forem usadas, E/S e memória terão sido desperdiçadas
  • Suponha que s páginas sejam pré-paginadas e que uma fração α dessas páginas seja usada
    • O custo de s * α page faults evitados é > ou < que o custo da pré-paginação de �s * (1- α) páginas desnecessárias?
    • α próximo de zero ⇒ a pré-paginação perde

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

94/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

95 of 100

Tamanho de Página

  • Às vezes, os projetistas de SO podem escolher
    • Especialmente se executar em uma CPU projetada sob medida
  • A escolha do tamanho de página deve levar em consideração:
    • Fragmentação
    • Tamanho da tabela de páginas
    • Resolução
    • Overhead de E/S
    • Número de page faults
    • Localidade
    • Tamanho e eficácia do TLB
  • Sempre potência de 2, geralmente na faixa de 212 (4.096 bytes) a 222 (4.194.304 bytes)
  • Em média, vem crescendo ao longo do tempo

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

95/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

96 of 100

Alcance do TLB

  • Alcance do TLB - A quantidade de memória acessível a partir do TLB
  • Alcance do TLB = (Tamanho do TLB) X (Tamanho da Página)
  • Idealmente, o working set de cada processo é armazenado no TLB
    • Caso contrário, há um alto índice de page faults
  • Aumentar o Tamanho da Página
    • Isso pode levar a um aumento da fragmentação, pois nem todas as aplicações precisam de um tamanho de página grande
  • Oferecer Vários Tamanhos de Página
    • Isso permite que aplicações que precisam de tamanhos de página maiores tenham a oportunidade de usá-los sem aumento da fragmentação

​

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

96/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

97 of 100

Estrutura do Programa

  • Estrutura do programa
    • int[128,128] data;
    • Cada linha é armazenada em uma página
    • Programa 1

for (j = 0; j <128; j++)� for (i = 0; i < 128; i++)� data[i,j] = 0;�

128 x 128 = 16.384 page faults �

    • Programa 2

for (i = 0; i < 128; i++)� for (j = 0; j < 128; j++)� data[i,j] = 0;

�128 page faults

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

97/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

98 of 100

Interlock de E/S

  • Interlock de E/S – Às vezes, páginas precisam ser travadas na memória
  • Considere a E/S - páginas usadas para copiar um arquivo de um dispositivo devem ser travadas para não serem selecionadas para remoção por um algoritmo de substituição de páginas
  • Pinning de páginas para travá-las na memória

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

98/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

99 of 100

Windows

  • Usa paginação sob demanda com clustering. O clustering traz para a memória as páginas ao redor da página que gerou o page fault
  • Aos processos são atribuídos um working set mínimo e um working set máximo
  • O working set mínimo é o número mínimo de páginas que o processo tem a garantia de manter na memória
  • Um processo pode receber páginas até o limite de seu working set máximo
  • Quando a quantidade de memória livre no sistema cai abaixo de um limite, a redução automática do working set é executada para restaurar a quantidade de memória livre
  • A redução do working set remove páginas de processos que têm páginas além de seu working set mínimo

Silberschatz, Galvin and Gagne ©2018

Operating System Concepts – 10th Edition

99/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais

100 of 100

Bibliografia

Capítulo 3.

Capítulos 9 e 10.

100/100

2s/2026

IC/UNICAMP – MC504 Sistemas Operacionais