Paginação e memória virtual

Aprenda como um sistema operacional divide a memória em páginas e usa tabelas de páginas para traduzir cada endereço usado por um programa. Acompanhe as traduções pela TLB, o pequeno cache de hardware que as acelera, e por tabelas de páginas multinível que mantêm as tabelas pequenas mesmo em espaços de endereçamento de 64 bits. Depois, veja como a troca de páginas permite que programas usem mais memória do que a máquina possui: trate faltas de página, compare políticas de substituição como FIFO, LRU e o algoritmo do relógio em exemplos resolvidos de sequências de referências, e reconheça a hiperpaginação e suas soluções.

IntermediárioAula 4 de 9 do curso Curso de Sistemas operacionais

O que você vai aprender

  1. Divida a memória em páginas e quadros de tamanho fixo e use uma tabela de páginas por processo para converter cada endereço virtual em um endereço físico.
    • Divida o espaço de endereçamento em páginas e a memória física em quadros de página
      Explique por que a paginação substitui segmentos de tamanho variável e divida um endereço virtual em número da página e deslocamento.
    • Traduza um endereço com uma tabela de páginas linear
      Leia entradas da tabela de páginas, acompanhe as etapas de tradução de um endereço virtual para um físico e calcule quanta memória uma tabela de páginas ocupa.
  2. Explique como um buffer de tradução de endereços armazena traduções recentes em cache, preveja a frequência de acertos a partir do padrão de acesso de um programa e mantenha as traduções corretas em ausências e trocas de contexto.
    • Acompanhe um acerto e uma ausência na TLB
      Acompanhe as etapas do hardware com um buffer de tradução de endereços e use a localidade para prever a frequência de acertos nas consultas.
    • Trate ausências na TLB e trocas de contexto
      Compare TLBs gerenciadas por hardware e por software, mantenha as traduções corretas entre trocas de contexto e calcule o alcance da TLB.
  3. Calcule por que tabelas de páginas lineares desperdiçam memória, compare as estruturas que as reduzem e traduza endereços por tabelas de páginas multinível, avaliando a memória economizada e a maior demora no tratamento de ausências.
    • Compare formas de reduzir uma tabela de páginas
      Avalie páginas maiores, sistemas híbridos de segmentação e paginação e tabelas de páginas invertidas em relação ao custo de memória de uma tabela linear.
    • Traduza endereços com uma tabela de páginas de dois níveis
      Divida um endereço virtual em índice do diretório, índice da tabela e deslocamento e percorra o diretório de páginas e a tabela de páginas até obter um endereço físico.
    • Adapte tabelas de páginas para endereços de 64 bits
      Calcule de quantos níveis uma tabela de páginas precisa e explique como tabelas x86-64 de quatro e cinco níveis e páginas grandes funcionam na prática.
  4. Mantenha em um disco ou SSD as páginas que não cabem na memória, acompanhe uma falta de página passo a passo, estime seu custo e use faltas de página intencionalmente para alocação tardia e cópia na escrita.
    • Transfira páginas entre a memória e a área de troca e trate uma falta de página
      Explique a área de troca e o bit de presença e acompanhe o hardware e o sistema operacional durante uma falta de página.
    • Estime o custo das faltas de página e mantenha quadros de página livres
      Calcule o tempo efetivo de acesso com faltas de página e explique como o sistema operacional libera quadros antecipadamente e grava páginas modificadas.
    • Use faltas de página para alocação tardia, cópia na escrita e compartilhamento
      Explique como os sistemas operacionais usam os bits de validade, presença e proteção para adiar trabalho e compartilhar memória com segurança.
  5. Simule e compare políticas de substituição em sequências de referências, explique como sistemas reais aproximam a LRU e reconheça e resolva a hiperpaginação.
    • Avalie políticas de substituição em relação à política ótima
      Conte acertos e faltas em uma sequência de referências, classifique as faltas e use a política ótima como referência de comparação.
    • Compare as políticas de substituição FIFO, aleatória e LRU
      Simule as políticas clássicas na mesma sequência de referências, explique a anomalia de Belady e escolha uma política para um padrão de acesso dado.
    • Aproxime a política LRU com bits de referência e o algoritmo do relógio
      Execute o algoritmo do relógio com bits de referência e de modificação e explique por que sistemas reais aproximam a LRU em vez de implementá-la exatamente.
    • Reconheça a hiperpaginação e aloque quadros de página
      Explique a hiperpaginação com o modelo do conjunto de trabalho e escolha soluções como controle de admissão, controle da frequência de faltas de página e o mecanismo de encerramento por falta de memória.

Guia de estudo de Paginação e memória virtual

5 capítulos

1

Traduza endereços virtuais com paginação

Cada busca de instrução, leitura e escrita começa com um endereço no espaço virtual de um processo. A paginação permite que o sistema operacional coloque seu conteúdo em quadros físicos separados, preservando a visão do programa de endereços consecutivos. Você dividirá endereços, acompanhará uma consulta a uma tabela de páginas linear e distinguirá o endereço de uma entrada de mapeamento do endereço dos dados solicitados. Os mesmos cálculos também revelam os custos de espaço da paginação.

1.1 Páginas, quadros e campos de endereço

Um programa usa endereços virtuais. A memória física armazena os bytes em quadros. A paginação divide o espaço de endereçamento virtual em páginas de mesmo tamanho e a memória física em quadros do mesmo tamanho. O sistema operacional pode colocar qualquer página em qualquer quadro livre. A página 0 pode ocupar o quadro 12 e a página 1 o quadro 3; o programa continua vendo endereços virtuais consecutivos.

Isso elimina a fragmentação externa para alocações de páginas individuais. Com segmentos de tamanho variável, uma requisição pode falhar porque o espaço livre está dividido em lacunas pequenas demais. Com paginação, um quadro livre sempre comporta uma página. Um espaço de endereçamento esparso pode deixar uma grande lacuna entre a área de alocação dinâmica e a pilha sem reservar quadros físicos para ela.

Meça o espaço não usado dentro das páginas

A paginação ainda apresenta fragmentação interna. Uma região deve ocupar páginas inteiras mesmo quando sua última página está parcialmente vazia. Uma região de 9.000 bytes precisa de três páginas de 4 KiB: duas páginas comportam 8.192 bytes, deixando 808 bytes para a terceira. A alocação ocupa 12.288 bytes, dos quais 3.288 bytes não são usados. KiB significa 1.024 bytes; MiB significa 1.048.576 bytes. Alguns livros usam KB e MB para essas quantidades binárias.

Divida o endereço em campos

Um endereço identifica tanto uma página quanto um byte dentro dela. Para uma página de 2k bytes, os k bits menos significativos são o deslocamento. Os demais bits mais significativos são o número da página virtual, ou VPN. Um endereço de 32 bits com páginas de 4 KiB tem 12 bits de deslocamento e 20 bits de VPN. Há 220 páginas virtuais possíveis nesse espaço de endereçamento.

Para 0x00403A7C, os três últimos dígitos hexadecimais fornecem o deslocamento 0xA7C, pois cada dígito hexadecimal representa quatro bits. Os cinco primeiros dígitos fornecem a VPN 0x00403. Esse atalho funciona aqui porque o limite entre os campos fica entre dígitos hexadecimais. Para outro tamanho de página, conte os bits antes de dividir o valor hexadecimal escrito.

A aritmética decimal fornece o mesmo resultado:

VPN=⌊VA/P⌋,offset=VA mod P

Aqui, P é o tamanho da página em bytes. Com páginas de 1.024 bytes, o endereço virtual 5.000 tem VPN 4 e deslocamento 904. Quatro páginas completas correspondem a 4.096 bytes; os 904 bytes restantes localizam o endereço dentro da página 4. Os deslocamentos começam em zero, então os deslocamentos dessa página vão de 0 a 1.023.

A tradução substitui a VPN por um número de quadro físico. Ela copia o deslocamento sem alteração: o byte 904 de uma página virtual é o byte 904 de seu quadro. O número da página sozinho não é um endereço de byte. Multiplique o número do quadro pelo tamanho da página para encontrar o endereço inicial do quadro e depois some o deslocamento.

Escolha um tamanho de página

Páginas maiores reduzem o número de mapeamentos e permitem que cada tradução em cache cubra mais bytes. Elas também desperdiçam mais espaço em páginas parcialmente usadas e transferem mais dados quando uma página é carregada. Um tamanho de página base comum é 4 KiB; outros sistemas usam 16 KiB ou 64 KiB. O x86-64 também oferece mapeamentos grandes, como páginas de 2 MiB.

Principais conclusões

  • Uma página virtual e um quadro físico têm o mesmo tamanho.
  • Qualquer quadro livre pode conter qualquer página; páginas virtuais adjacentes não precisam ocupar quadros adjacentes.
  • Os bits menos significativos do endereço fornecem o deslocamento, que a tradução preserva.
  • Arredonde as alocações para cima até um número inteiro de páginas ao calcular a fragmentação interna.
  • Páginas maiores reduzem a sobrecarga de mapeamento, mas aumentam o desperdício potencial.

1.2 Leitura de uma tabela de páginas linear

Uma tabela de páginas registra os mapeamentos de um processo. Em uma tabela de páginas linear, a VPN indexa um array: a entrada 4 descreve a página virtual 4. Cada processo tem sua própria tabela, então o mesmo endereço virtual pode se referir a bytes físicos diferentes em processos diferentes. Em uma troca de contexto, o sistema operacional seleciona a tabela do novo processo por meio de um registrador base da tabela de páginas.

Leia o estado e as permissões da entrada

Uma entrada da tabela de páginas, ou PTE, contém um número de quadro físico (PFN) e informações de controle. No modelo didático, um bit de validade indica que a página pertence ao espaço de endereçamento; um bit de presença indica que seu conteúdo está residente na memória física. Os bits de proteção controlam leitura, escrita, execução e acesso de usuário. Um bit de modificação registra escritas desde que foi limpo pela última vez. Um bit de acesso registra o uso desde que foi limpo pela última vez; ele também é chamado bit de referência ou de uso.

Essas são funções conceituais, não uma garantia de organizações de hardware idênticas. O x86 não tem um bit de validade separado em uma PTE. Quando o bit de presença está limpo, o sistema operacional consulta seus próprios registros para distinguir um endereço não usado de uma página válida armazenada em outro lugar. No x86, o hardware define os bits de acesso e de modificação; o sistema operacional os gerencia e limpa.

Localize a entrada e o byte

Para traduzir um endereço com uma tabela linear:

  1. Divida o endereço virtual em VPN e deslocamento.
  2. Localize sua entrada em table base+VPN×PTE size.
  3. Verifique se o mapeamento existe, está presente e permite esse acesso.
  4. Forme o endereço físico a partir de PFN×page size+offset.
  5. Leia ou escreva o byte nesse endereço físico.

Com páginas de 1.024 bytes, o endereço virtual 5.000 fornece VPN 4 e deslocamento 904. Suponha que a PTE 4 esteja presente e permita a leitura solicitada, com PFN 9. O quadro 9 começa em 9.216, então o endereço físico do byte é 10.120. O endereço da própria entrada na tabela exige um cálculo separado: se as entradas ocuparem 4 bytes, a PTE 4 estará 16 bytes após a base da tabela.

Em um exemplo hexadecimal, páginas de 4 KiB dividem 0x00403A7C em VPN 0x403 e deslocamento 0xA7C. Se o mapeamento permitido contiver o PFN 0x1F2B5, o endereço físico será 0x1F2B5A7C. A PTE fica em base + 0x403 × 4 = base + 0x100C. Acrescentar o deslocamento forma um endereço de dados; multiplicar a VPN pelo tamanho da entrada localiza a PTE. Esses dois endereços têm finalidades diferentes.

Uma verificação malsucedida gera uma exceção. O sistema operacional pode carregar uma página válida não residente, fornecer memória preenchida com zeros ou corrigir outro mapeamento legítimo. Um endereço inválido ou um acesso proibido geralmente causa uma falha de segmentação. Uma página presente ainda pode rejeitar uma escrita se sua proteção a proibir.

Conte o espaço da tabela e as leituras de memória

Tabelas lineares são custosas mesmo para processos pequenos. Com endereços virtuais de 32 bits e páginas de 4 KiB, cada tabela precisa de 1.048.576 entradas. Com 4 bytes cada, isso corresponde a 4 MiB por processo, incluindo entradas para páginas virtuais não usadas. Cem processos precisam de 400 MiB apenas para essas tabelas.

Elas também acrescentam uma consulta a cada referência à memória. Em um modelo simples sem cache de tradução, o processador lê uma PTE e depois os dados solicitados: dois acessos à memória. O compartilhamento ainda é possível: dois processos podem mapear intencionalmente suas páginas virtuais separadas para o mesmo PFN, como no caso de código de programa somente para leitura.

Principais conclusões

  • Uma tabela linear é um array indexado pela VPN.
  • Localização da PTE = table base+VPN×entry size.
  • Endereço físico = PFN×page size+offset.
  • Presença e permissão respondem a perguntas diferentes.
  • O tamanho da tabela depende de todo o espaço de endereçamento virtual, incluindo páginas não usadas.
  • Tabelas de processos separados podem compartilhar intencionalmente um quadro físico.
2

Acelere a tradução com a TLB

Traduzir cada referência por meio da memória acrescentaria uma consulta antes de cada acesso útil. Uma TLB mantém traduções recentes próximas ao processador. Seu sucesso depende da ordem de acesso e também da capacidade, e seu conteúdo precisa permanecer correto quando processos são trocados ou mapeamentos mudam. Você acompanhará acertos e ausências, estimará o tempo médio de acesso e relacionará as traduções em cache ao trabalho realizado pelo sistema operacional.

2.1 Acertos, ausências e localidade na TLB

Um buffer de tradução de endereços, ou TLB, é um pequeno cache de hardware de traduções de endereços na unidade de gerenciamento de memória (MMU). Ele contém mapeamentos recentes de VPN para PFN e informações de acesso. Ele armazena traduções em cache, enquanto um cache de dados contém bytes do programa. Um programa pode sofrer uma ausência em um cache e obter um acerto no outro.

Acompanhe acertos e ausências

Em um acerto na TLB, a MMU obtém o PFN da entrada em cache, verifica as permissões de acesso e combina o PFN com o deslocamento inalterado. Ela não precisa ler a tabela de páginas. Um acerto nunca elimina a necessidade de aplicar a proteção. O bit de validade da TLB informa que uma entrada em cache é utilizável; ele não informa se uma página virtual pertence ao espaço de endereçamento do processo.

Em uma ausência na TLB, o sistema precisa procurar a tradução na tabela de páginas. Se a página estiver presente e o acesso for permitido, ele insere a tradução e conclui ou executa novamente a referência. Nenhuma leitura do armazenamento é necessária. Se a tabela indicar um mapeamento ausente ou um acesso proibido, uma falta de página exigirá tratamento pelo sistema operacional. Uma ausência na TLB, por si só, não é uma falta de página.

Preveja a reutilização pela localidade

As TLBs podem conter muito menos entradas que o número de páginas virtuais, mas funcionam bem porque os programas apresentam localidade. Localidade espacial significa que endereços próximos são usados em momentos próximos. Uma vez que uma tradução está em cache, muitos endereços nessa página podem usá-la. Localidade temporal significa que endereços usados recentemente provavelmente serão usados novamente, como as instruções de um laço.

Considere 16.384 inteiros de quatro bytes armazenados consecutivamente em um array alinhado a uma página. Com páginas de 4 KiB, cada página contém 1.024 inteiros, então o array ocupa 16 páginas. Começando com uma TLB vazia e sem traduções que interfiram, o primeiro inteiro de cada página causa uma ausência. Os 1.023 seguintes nessa página resultam em acertos. Há 16 ausências e 16.368 acertos ao todo, o que dá uma taxa de acerto de cerca de 99,9%.

A ordem de acesso muda esse resultado. Em C, int a[1024][1024] armazena linhas consecutivamente. Suponha inteiros de quatro bytes, alinhamento a páginas, páginas de 4 KiB e uma TLB LRU de 64 entradas. Cada linha ocupa uma página. O percurso linha por linha tem uma ausência por linha, ou 1.024 ausências. O percurso coluna por coluna visita 1.024 páginas diferentes antes de retornar à primeira. Sua tradução já foi removida, então todas as 1.048.576 referências ao array resultam em ausência. O tamanho do array não mudou; a distância de reutilização mudou.

Calcule a média dos custos de acertos e ausências

O modelo de tempo deve indicar o custo de um acerto e de uma ausência. Suponha que a memória leve 100 ns, que a consulta à TLB não acrescente tempo e que uma ausência em uma tabela linear acrescente uma leitura de memória. Um acerto custa 100 ns e uma ausência resolvida custa 200 ns. Com uma taxa de acerto de 98%:

EAT=0,98(100)+0,02(200)=102 ns

Essa média inclui o acesso final aos dados nos dois casos. Contar apenas a leitura extra da PTE como o custo total da ausência subestimaria o total. Com tabelas multinível, uma ausência pode exigir várias leituras de tabela, então a localidade importa ainda mais.

Principais conclusões

  • A TLB armazena traduções e permissões, não dados do programa.
  • Um acerto ainda exige a aplicação das permissões de acesso.
  • Uma ausência na TLB pode ser resolvida sem uma falta de página.
  • Acessos próximos compartilham uma tradução; acessos repetidos a reutilizam.
  • A ordem de acesso pode mudar muito as taxas de ausência na TLB.

2.2 Manutenção da correção das traduções em cache

Uma ausência na TLB exige uma consulta à tradução, mas as arquiteturas dividem esse trabalho de maneiras diferentes. Com uma TLB gerenciada por hardware, como em x86 e ARM, a MMU percorre a tabela de páginas a partir da raiz da tabela selecionada. O hardware define o formato que consegue percorrer. Se o mapeamento for utilizável, ele preenche o cache de tradução sem chamar um tratador do sistema operacional para a ausência comum.

Uma TLB gerenciada por software, usada em projetos clássicos MIPS e SPARC, gera uma exceção em caso de ausência. Um tratador do sistema operacional encontra o mapeamento e o insere usando instruções privilegiadas. Isso dá ao sistema operacional mais liberdade sobre a estrutura da tabela. O retorno dessa exceção executa novamente a instrução que causou a ausência; o retorno de uma chamada de sistema normalmente continua após a chamada.

Mantenha o tratador de preenchimento acessível

O tratador de ausências precisa de acesso confiável às próprias instruções e aos próprios dados. Se o atendimento de uma ausência provocar imediatamente o mesmo tipo de ausência não resolvida dentro do tratador, o progresso pode falhar. Os projetos evitam isso com memória não traduzida ou traduções permanentemente fixadas para o código e os dados essenciais do tratador.

Selecione o espaço de endereçamento correto

Trocas de contexto introduzem outro problema. O processo A pode mapear a VPN 7 para o quadro 20, enquanto o processo B mapeia a VPN 7 para o quadro 90. Manter a entrada de A sem identificador após a troca para B enviaria B ao quadro errado. Carregar a raiz da tabela de páginas de B não torna seguro, por si só, um mapeamento em cache sem identificador.

Uma solução é invalidar as entradas relevantes da TLB em uma troca. Seus bits de validade são limpos, obrigando o novo processo a preenchê-las novamente. Outra solução identifica as entradas com um identificador de espaço de endereçamento (ASID). A consulta verifica então tanto a página virtual quanto o identificador de seu espaço de endereçamento. O x86 chama seu identificador de identificador de contexto de processo, ou PCID. Entradas de vários espaços de endereçamento podem permanecer em cache enquanto o hardware seleciona apenas as que pertencem ao contexto atual. A reutilização de identificadores ainda precisa ser gerenciada para que uma entrada antiga não seja confundida com um novo espaço de endereçamento.

Invalide mapeamentos alterados

Uma alteração de PTE também torna uma tradução em cache desatualizada. Suponha que o sistema operacional remova a permissão de escrita na memória, mas mantenha uma entrada gravável na TLB. O processador poderia continuar permitindo escritas por essa entrada antiga. O sistema operacional precisa invalidar as traduções afetadas. Em uma máquina com vários núcleos de processamento, todos os núcleos que possam manter o mapeamento em cache devem participar. Essa coordenação é chamada de invalidação coordenada de TLBs.

Calcule a cobertura das traduções

A capacidade importa, assim como a correção. O alcance da TLB é a quantidade de memória representada pelas traduções em cache:

reach=entries×page size

Uma TLB de 64 entradas alcança 256 KiB com páginas de 4 KiB e 128 MiB com páginas de 2 MiB. O alcance descreve a cobertura dos mapeamentos, não a capacidade da memória física. Processadores reais podem ter capacidades de TLB diferentes para diferentes tamanhos de página, então esse cálculo compara um número fixo de entradas.

Quando uma TLB está cheia, ela substitui uma tradução. LRU favorece entradas usadas recentemente; a substituição aleatória escolhe sem acompanhar a recência. Percorrer repetidamente uma página a mais do que cabe na TLB derrota a LRU, pois cada tradução é removida pouco antes de ser necessária novamente.

Principais conclusões

  • O hardware ou um tratador do sistema operacional pode preencher novamente uma TLB.
  • ASIDs distinguem VPNs idênticas pertencentes a espaços de endereçamento diferentes.
  • Alterar uma PTE exige invalidar traduções desatualizadas em cache.
  • Uma invalidação coordenada de TLBs coordena a invalidação entre núcleos de processamento.
  • O alcance é igual ao número de entradas vezes o tamanho da página.
3

Reduza o tamanho das tabelas de páginas

Espaços de endereçamento virtual grandes tornam impraticável um array completo de mapeamentos de páginas. As estruturas de tabelas de páginas economizam espaço ao organizar ou omitir mapeamentos de maneiras diferentes. Você comparará essas opções, acompanhará um percurso de dois níveis e aplicará o mesmo raciocínio de campos de bits ao x86-64. Cada estrutura equilibra a memória usada para mapeamentos e o trabalho necessário quando a TLB não tem uma tradução; páginas grandes mudam os dois lados desse equilíbrio.

3.1 Alternativas a uma tabela linear completa

Uma tabela de páginas linear reserva uma entrada para cada página virtual possível. A maioria dos processos usa apenas uma pequena parte de seu espaço de endereçamento: o código e a área de alocação dinâmica ficam perto de uma extremidade, a pilha perto da outra, e uma grande lacuna os separa. Uma tabela com milhões de entradas inválidas ainda consome memória. Reduzir esse custo significa mudar o tamanho da página, a organização da tabela ou ambos.

Reduza o número de páginas

Páginas maiores reduzem o número de VPNs. Com um espaço de endereçamento de 32 bits e páginas de 16 KiB, 14 bits formam o deslocamento e 18 bits formam a VPN. Uma tabela linear precisa então de 262.144 entradas. Com 4 bytes cada, ela ocupa 1 MiB, em comparação com 4 MiB para páginas de 4 KiB. Isso economiza espaço de tabela, embora o processo ainda possa endereçar 4 GiB de bytes virtuais.

O custo aparece em outro lugar. Uma pequena alocação pode desperdiçar mais espaço em sua última página, e trazer uma página para a memória transfere mais bytes. Aumentar o tamanho da página não distingue uma parte muito usada do espaço de endereçamento de uma lacuna sem uso; apenas dá menos entradas a ambas.

Omita lacunas com tabelas de segmento separadas

Um sistema híbrido de segmentação e paginação dá ao código, à área de alocação dinâmica e à pilha suas próprias tabelas de páginas. Cada segmento tem uma base de tabela e um limite para seus números de página. A lacuna entre os segmentos não precisa de entradas. A tradução primeiro seleciona o segmento, verifica seu limite e depois procura a página dentro desse segmento.

Essa abordagem depende de uma divisão útil em segmentos. Suas tabelas podem ter comprimentos diferentes e precisar de espaço físico contíguo, reintroduzindo a fragmentação externa para as próprias tabelas. As páginas de dados do processo continuam tendo tamanho fixo; os objetos fragmentados são agora as tabelas de páginas de tamanho variável.

Indexe quadros físicos

Uma tabela de páginas invertida muda o que uma entrada descreve. Ela tem uma entrada por quadro físico para toda a máquina, registrando o processo ocupante e a VPN. Com 16 GiB de memória física e quadros de 4 KiB, ela precisa de 4.194.304 entradas, independentemente de quantos processos tenham grandes espaços de endereçamento virtual. Ainda é necessário saber o tamanho da entrada para converter essa contagem em um total de bytes.

Uma tabela comum usa a VPN como índice direto de um array. Uma tabela invertida, por sua vez, procura o par formado pela identidade do espaço de endereçamento e pela VPN. Uma estrutura de dispersão pode tornar isso eficiente, mas colisões podem exigir consultas adicionais. Quadros compartilhados também precisam de tratamento adicional, pois um quadro pode ter vários nomes virtuais. Tabelas de páginas com dispersão, como as usadas em sistemas PowerPC, usam ideias de busca relacionadas; uma tabela com dispersão não é necessariamente uma tabela invertida com exatamente uma entrada por quadro.

Aloque tabelas por região usada

Tabelas de páginas multinível mantêm a consulta indexada enquanto alocam páginas de tabela de nível inferior apenas onde são necessários mapeamentos. Uma entrada de nível superior pode marcar uma faixa inteira sem uso sem alocar sua tabela de nível inferior. Essa é a solução comum em sistemas modernos. A economia é maior para espaços de endereçamento esparsos, enquanto uma ausência na TLB exige mais etapas de consulta.

Compare as opções perguntando o que determina o tamanho. Uma tabela linear cresce com as páginas virtuais por processo. Uma tabela invertida cresce com os quadros físicos do sistema. Uma hierarquia cresce com os ramos de tabela necessários para os mapeamentos. Nenhuma dessas contagens é o número de bytes de dados do programa atualmente residentes.

Principais conclusões

  • Páginas maiores reduzem o número de PTEs, mas podem aumentar a fragmentação interna.
  • Tabelas de segmento separadas omitem lacunas, mas podem exigir alocações de tabela de tamanho variável.
  • Uma tabela invertida tem uma entrada por quadro físico do sistema.
  • Uma consulta invertida precisa da identidade do espaço de endereçamento e da VPN.
  • Uma hierarquia omite tabelas de nível inferior para faixas de endereços não usadas.

3.2 Percurso de uma tabela de páginas de dois níveis

Uma tabela de páginas de dois níveis divide uma grande tabela linear em partes do tamanho de uma página. Um diretório de páginas aponta para essas partes. O diretório é alocado, mas uma página de tabela de páginas de nível inferior é alocada apenas quando sua região precisa de mapeamentos. Uma entrada de diretório ausente pode representar uma faixa inteira sem uso.

Derive a divisão 10/10/12

Considere um endereço virtual de 32 bits, páginas de 4 KiB e entradas de 4 bytes. Cada página de tabela de páginas contém 1.024 entradas, então um índice de 10 bits seleciona uma entrada. O endereço se divide em 10 bits de diretório, 10 bits de tabela e 12 bits de deslocamento. Cada tabela de nível inferior mapeia 1.024 páginas, cobrindo 4 MiB de endereços virtuais. O diretório também tem 1.024 entradas e ocupa uma página de 4 KiB.

Acompanhe as entradas do diretório e da tabela

O percurso segue ponteiros físicos:

  1. Some directory index×4 à base física do diretório. Leia essa entrada do diretório de páginas (PDE).
  2. Se ela apontar para uma página de tabela, multiplique seu PFN por 4.096 para obter a base física dessa tabela.
  3. Some table index×4 e leia a PTE.
  4. Verifique o mapeamento final e combine seu PFN com o deslocamento.

A PDE aponta para uma tabela, enquanto a PTE aponta para a página de dados solicitada. Confundir essas funções envia uma referência à memória da tabela de páginas em vez dos dados do programa.

Para o endereço virtual 0x00803ABC, o índice do diretório é 2, o índice da tabela é 3 e o deslocamento é 0xABC. Suponha que a entrada 2 do diretório aponte para o quadro 0xA1. Sua tabela começa em 0xA1000. A entrada 3 está 12 bytes após o início dessa tabela, em 0xA100C. Se a PTE presente e permitida contiver o PFN 0x2F3C4, o endereço dos dados será 0x2F3C4ABC.

Observe os dois multiplicadores diferentes. Um índice de tabela conta entradas, então multiplique-o pelo tamanho da entrada. Um PFN conta quadros, então multiplique-o pelo tamanho da página. O deslocamento conta bytes dentro da página final e não precisa de nenhum dos multiplicadores. A base do diretório e os ponteiros usados durante o percurso são endereços físicos; usar ponteiros virtuais exigiria outra tradução para realizar essa tradução.

Conte as tabelas e as leituras de consulta

O espaço depende de como os mapeamentos estão distribuídos. Suponha que um processo use os 8 MiB inferiores de seu espaço de 4 GiB e os 4 MiB superiores, com ambas as regiões alinhadas aos limites do diretório. A região inferior precisa de duas páginas de tabela, e a superior, de uma. Acrescentar o diretório resulta em quatro páginas, ou 16 KiB, em vez de uma tabela linear de 4 MiB. Mapear o mesmo número de páginas de dados de forma esparsa em muitas regiões do diretório poderia exigir mais páginas de tabela.

No esquema didático básico, uma PDE inválida significa que nenhuma das páginas em sua região de 4 MiB pertence ao espaço de endereçamento. O percurso para sem ler uma PTE. Sistemas operacionais completos também podem usar entradas ausentes para alocação tardia, então seus registros de software determinam o significado de uma entrada não presente para o hardware.

A hierarquia economiza espaço ao acrescentar trabalho em uma ausência na TLB. Um percurso de dois níveis sem entradas em cache lê uma PDE e uma PTE antes de acessar os dados: três leituras de memória ao todo, em comparação com duas para uma tabela linear. Um acerto na TLB dispensa essas leituras de tabela. Isso torna uma alta taxa de acerto especialmente valiosa à medida que a hierarquia fica mais profunda.

Principais conclusões

  • A divisão 10/10/12 decorre de páginas de 4 KiB e entradas de 4 bytes.
  • Uma PDE localiza uma página de tabela; uma PTE localiza um quadro de dados.
  • Multiplique índices pelo tamanho da entrada e PFNs pelo tamanho da página.
  • Conte o diretório e também as páginas de tabela de nível inferior alocadas.
  • Uma ausência na TLB custa leituras extras de tabela; um acerto dispensa o percurso.
  • Mapeamentos esparsos economizam mais quando compartilham um pequeno número de páginas de tabela.

3.3 Tabelas profundas e páginas grandes no x86-64

O número de níveis da tabela decorre de três grandezas: a largura implementada do endereço virtual, o tamanho da página e o tamanho da entrada. Primeiro, calcule a largura do deslocamento. Depois, calcule quantas entradas cabem em uma página de tabela e quantos bits selecionam uma entrada. Por fim, divida os bits restantes da VPN em campos de índice, arredondando o número de níveis para cima, se necessário.

Derive os quatro níveis

Na paginação x86-64 de quatro níveis, a largura implementada do endereço virtual é de 48 bits. Uma página de 4 KiB fornece 12 bits de deslocamento. Uma entrada de 8 bytes resulta em 512 entradas por página de tabela, selecionadas por 9 bits. A VPN tem 36 bits, então são necessários quatro índices de 9 bits. Um percurso bem-sucedido sem entradas em cache segue quatro entradas e depois acessa os dados.

Os níveis são PML4, tabela de ponteiros para diretórios de páginas, diretório de páginas e tabela de páginas. Seus índices ocupam os bits 47–39, 38–30, 29–21 e 20–12. CR3 identifica a raiz física. O Linux chama os níveis correspondentes de PGD, PUD, PMD e PTE; sua hierarquia genérica inclui um nível P4D, que é eliminado quando a arquitetura usa apenas quatro níveis.

Distinga a largura do endereço da RAM

Um espaço de endereçamento implementado de 48 bits contém 256 TiB de bytes endereçáveis. Os endereços ainda são mantidos em valores de 64 bits: na forma canônica comum, os bits acima do bit 47 repetem esse bit. As faixas válidas inferior e superior são separadas por uma lacuna não canônica. Chamá-lo de espaço de endereçamento de 48 bits não significa que todo padrão de 64 bits seja utilizável ou que um processo receba 256 TiB de RAM.

Uma tabela linear seria enorme. Há 236 páginas virtuais; multiplicar por entradas de 8 bytes resulta em 239 bytes, ou 512 GiB por processo. Uma hierarquia representa faixas não usadas com ramos ausentes em vez de reservar todas essas entradas.

Processadores com suporte à paginação de cinco níveis podem usar 57 bits de endereço virtual implementados quando esse modo está ativado. Mais um índice de 9 bits é acrescentado acima da PML4, fornecendo 128 PiB de bytes endereçáveis e mais uma possível leitura de tabela. Os bits superiores de um endereço canônico passam então a repetir o bit 56. O suporte do processador e o modo de paginação ativado determinam qual largura se aplica.

Encerre o percurso em uma página grande

Páginas grandes encerram o percurso antecipadamente. No x86-64, uma entrada no nível do diretório de páginas pode mapear diretamente uma página de 2 MiB, deixando 21 bits de deslocamento. Uma entrada da tabela de ponteiros para diretórios de páginas pode mapear uma página de 1 GiB, deixando 30 bits de deslocamento. Os bits menos significativos que, de outra forma, selecionariam entradas de nível inferior passam a selecionar bytes dentro dessa página grande.

Isso reduz tanto o comprimento do percurso quanto o número de traduções necessárias para uma determinada região. Aumenta o alcance da TLB, o que pode ajudar bancos de dados e outras grandes cargas de trabalho. O mapeamento físico precisa de uma sequência contígua de quadros adequadamente alinhada, e uma página grande parcialmente usada pode desperdiçar muito mais memória. O Linux oferece alocação explícita de páginas enormes e páginas enormes transparentes; os tamanhos disponíveis dependem da arquitetura.

A contagem simples de custo pressupõe que nenhuma entrada de tabela esteja em cache. Processadores reais armazenam estruturas de paginação em cache, e leituras de tabela podem encontrar dados nos caches comuns. Portanto, quatro níveis não garantem quatro esperas pela memória principal em cada ausência na TLB. Eles descrevem a cadeia de dependências e seu custo sem cache.

Principais conclusões

  • Calcule a largura do índice a partir das entradas por página de tabela.
  • O x86-64 de quatro níveis divide 36 bits de VPN em quatro índices de 9 bits.
  • A largura implementada do endereço virtual é menor que o campo de endereço de 64 bits.
  • Uma entrada de página grande encerra o percurso antecipadamente e atribui mais bits ao deslocamento.
  • Caches de percurso reduzem o custo típico sem alterar a hierarquia.
4

Supere a capacidade da memória física com troca de páginas

Um processo pode ter mais páginas virtuais do que mantém atualmente na memória física. O sistema operacional fornece o conteúdo das páginas quando um acesso precisa dele, às vezes a partir da área de troca e às vezes sem qualquer leitura do armazenamento. Você acompanhará a instrução que causou uma falta pelo tratador e de volta à execução, estimará o custo das faltas maiores e verá por que as faltas também permitem recursos úteis, como memória preenchida com zeros e cópia na escrita.

4.1 Acompanhamento de uma página da área de troca de volta à memória

Os espaços de endereçamento virtual podem, juntos, exceder a memória física porque nem toda página precisa permanecer residente. A área de troca armazena o conteúdo de páginas removidas em um disco ou SSD. O Linux pode usar uma partição ou um arquivo de troca; o Windows usa um arquivo de paginação. A memória física contém o subconjunto de páginas atualmente residentes.

A paginação move páginas individuais. Uma saída de página escreve uma página no armazenamento de apoio antes que seu quadro seja reutilizado; uma entrada de página a lê de volta. Historicamente, a troca também significava mover um processo inteiro. Atualmente, o termo muitas vezes se refere ao movimento de páginas, portanto identifique o objeto que está sendo movido.

Interprete o mapeamento ausente

O bit de presença de uma PTE informa ao hardware se há um mapeamento residente disponível. Se uma página válida tiver sido transferida para a área de troca, o sistema operacional registra onde seu conteúdo pode ser encontrado, em bits da entrada definidos pelo software ou em metadados separados. Um bit de presença igual a zero não indica, por si só, a área de troca: ele também pode descrever memória não alocada ou de alocação tardia.

Uma falta de página é uma exceção causada por um acesso que não pode ser concluído com o mapeamento atual. Ela pode indicar ausência ou uma violação de proteção. O tratador decide se o acesso é legítimo e como resolvê-lo. Um tratamento bem-sucedido pode carregar bytes armazenados, fornecer memória preenchida com zeros, mapear um quadro residente existente ou fazer uma cópia privada. Um acesso realmente inválido geralmente resulta em uma falha de segmentação.

Restaure uma página salva

Acompanhe a leitura de uma página da área de troca com páginas de 1.024 bytes:

  1. O endereço virtual 5.000 fornece VPN 4 e deslocamento 904.
  2. A TLB não tem uma tradução utilizável. O percurso da tabela de páginas encontra a página válida, mas não presente; registros de software identificam o bloco 37 da área de troca.
  3. O tratador obtém o quadro 9. Se nenhum quadro estiver livre, a recuperação de memória deverá primeiro abrir espaço.
  4. O sistema operacional lê o bloco 37 para o quadro 9. O processo que causou a falta espera; outro processo pronto pode usar a CPU.
  5. Ao concluir a leitura, o sistema operacional instala o PFN 9, marca o mapeamento como presente e coloca o processo em estado de pronto.
  6. A instrução é executada novamente. A tradução agora chega ao endereço físico 10.120.

A instrução retoma a operação pretendida depois que os bytes estão disponíveis. Avançar além da instrução que falhou faria uma leitura ou escrita se perder. O processo pode perceber uma demora, mas seu endereço virtual não mudou.

Classifique a falta e preveja a demanda

Uma falta maior exige uma leitura do armazenamento. Uma falta menor é resolvida sem essa operação de entrada e saída, por exemplo, fornecendo um quadro preenchido com zeros ou mapeando um quadro já residente. Portanto, uma grande contagem de faltas menores não implica o mesmo tráfego no dispositivo que a mesma contagem de faltas maiores. No Linux, /usr/bin/time -v informa as duas contagens para um comando.

A paginação por demanda espera até que uma página seja acessada para fornecê-la. Isso permite que um programa comece sem carregar todo o seu conteúdo. A busca antecipada traz páginas que devem ser necessárias em breve. Boas previsões evitam esperas posteriores; previsões ruins consomem largura de banda e memória com páginas que nunca são usadas.

Mantenha os eventos distintos. Uma ausência na TLB exige uma consulta à tradução. Uma falta de página exige que o sistema operacional trate um problema de mapeamento. Uma falha de segmentação é um resultado comum de um acesso proibido. Uma página residente e permitida pode causar uma ausência na TLB sem nenhum dos outros eventos.

Principais conclusões

  • Não presente não significa automaticamente armazenada na área de troca.
  • Uma falta maior exige uma leitura do armazenamento; uma falta menor não.
  • Uma falta em página na área de troca bloqueia o processo enquanto a leitura é concluída.
  • O tratador corrige o mapeamento e executa novamente a instrução que causou a falta.
  • A paginação por demanda espera pelo uso; a busca antecipada prevê o uso futuro.
  • Uma ausência na TLB, uma falta de página e uma falha de segmentação são eventos diferentes.

4.2 Custo das faltas, páginas modificadas e quadros livres

Uma leitura rara do armazenamento pode dominar o tempo médio de memória. Seja p a probabilidade de uma referência causar uma falta maior, M o tempo de acesso comum e F o tempo total de atendimento de uma referência que causa falta. Um modelo simples de dois casos fornece:

EAT=(1−p)M+pF

Aqui, F inclui a leitura do armazenamento, o trabalho do sistema operacional e qualquer escrita de retorno necessária de uma vítima modificada. É o custo total do caso de falta, não apenas uma pequena penalidade de consulta à PTE.

Calcule o efeito de faltas raras

Suponha que um acesso comum leve 100 ns e uma falta maior leve 8 ms no total. Converta 8 ms em 8.000.000 ns antes de calcular a média. Com uma falta a cada 1.000 referências:

EAT=0,999(100)+0,001(8000000)=8099,9 ns

Isso é cerca de 81 vezes o tempo de acesso comum. Uma taxa de faltas de 0,1% parece pequena, mas uma falta custa tanto quanto muitos milhares de referências à memória.

Para uma perda de velocidade abaixo de 10%, exija uma média abaixo de 110 ns. Reorganizando a expressão, obtemos:

p<110−1008000000−100≈1,25×10−6

Isso é menos de aproximadamente uma falta maior a cada 800.000 referências. A probabilidade permitida depende do tempo de atendimento considerado. Para um tempo ilustrativo de atendimento em SSD de 0,1 ms, a espera é menor, mas ainda é de 100.000 ns: mil acessos de 100 ns.

Mantenha quadros prontos

O sistema operacional tenta manter quadros prontos antes que uma falta precise de um. Um daemon de paginação em segundo plano, como o kswapd do Linux, recupera memória quando o número de quadros livres cai abaixo de um limiar inferior. No modelo básico de limiares, ele continua até atingir um limiar superior. Isso evita que toda falta espere pela escolha e preparação de uma vítima.

Preserve alterações antes da reutilização

Uma página modificada contém alterações feitas desde que o estado de modificação foi limpo pela última vez. Antes que seu quadro seja reutilizado, essas alterações precisam ser preservadas se a página continuar fazendo parte da memória de um processo. Sua escrita de retorno pode ocorrer em segundo plano. Após uma escrita de retorno bem-sucedida, a página residente pode ser marcada como limpa; uma escrita posterior a modifica novamente.

Uma página limpa só pode ser descartada sem uma nova escrita quando seu conteúdo puder ser recuperado ou regenerado. Código de programa não modificado pode ser lido novamente do executável. Uma página com uma cópia atualizada na área de troca pode ser lida dessa área. Uma página anônima limpa sem uma cópia recuperável não pode simplesmente ser esquecida. O bit de modificação, por si só, não prova que exista armazenamento de apoio.

Se uma falta precisar remover uma página modificada de forma síncrona, pode ser necessária uma escrita da vítima seguida pela leitura solicitada. Preferir uma vítima limpa e recuperável evita essa escrita no caminho crítico da falta. O agrupamento de transferências combina várias escritas em transferências maiores, especialmente úteis em discos.

Principais conclusões

  • Converta todos os valores de tempo para uma única unidade antes de calcular a média.
  • Uma pequena probabilidade de falta maior pode dominar o tempo efetivo de acesso.
  • Um daemon de paginação em segundo plano mantém uma reserva de quadros livres.
  • O estado de modificação registra escritas desde a última limpeza, não simplesmente desde o carregamento.
  • Descartar uma página limpa com segurança exige que seu conteúdo seja recuperável ou regenerável.
  • A escrita de retorno em segundo plano pode retirar a escrita de uma vítima do caminho da falta.

4.3 Preenchimento com zeros sob demanda, código compartilhado e cópia na escrita

Faltas de página são pontos de controle úteis para adiar trabalho. Um mapeamento pode pertencer a um processo antes que o sistema operacional lhe atribua um quadro privado. Com o preenchimento com zeros sob demanda, o primeiro acesso obtém memória preenchida com zeros. Isso evita alocar e limpar antecipadamente todas as páginas reservadas. O preenchimento com zeros também impede que um processo veja dados deixados por outro.

A falta não precisa de leitura de disco porque o conteúdo necessário é composto de zeros, não de bytes salvos. É uma falta menor. Um sistema pode otimizar a implementação, mas o resultado visível continua sendo que a memória recém-fornecida contém os zeros necessários.

Compartilhe código somente para leitura

Tabelas de páginas separadas não exigem cópias separadas de todas as páginas. Duas PTEs podem conter o mesmo PFN, mesmo em endereços virtuais diferentes. Processos que executam o mesmo programa podem compartilhar código somente para leitura. Cinquenta processos usando um editor podem se referir a uma cópia residente de cada página de código compartilhada. A proteção somente para leitura impede que um processo altere essas instruções para todos.

Crie conteúdo privado em uma escrita

A cópia na escrita (COW) permite o compartilhamento inicial de páginas que mais tarde podem precisar de conteúdo privado. Após fork(), pai e filho têm espaços de endereçamento separados, mas podem compartilhar seus quadros de dados privados comuns. O sistema operacional marca seus mapeamentos privados graváveis como somente para leitura e registra que são mapeamentos COW. As leituras são concluídas sem cópia.

Quando qualquer um dos processos escreve pela primeira vez em uma página COW compartilhada, a escrita viola sua proteção atual e causa uma falta de página. O tratador reconhece o caso legítimo de COW, aloca um quadro privado, copia a página, instala um mapeamento gravável para quem escreveu e executa novamente a instrução. O outro processo mantém o conteúdo original. O sistema operacional também precisa manter as traduções em cache coerentes com os mapeamentos alterados.

Para um processo com 400 MiB de dados privados residentes, suponha que seu filho escreva em três páginas distintas de 4 KiB antes de chamar exec(). Os dados copiados por causa dessas escritas totalizam 12.288 bytes. Escritas repetidas em uma página que já é privada não causam uma nova cópia completa da página a cada vez. A criação da tabela de páginas e outros registros do processo ainda têm custos; a COW evita copiar antecipadamente todos os 400 MiB de dados.

Isso é especialmente útil quando fork() é seguido logo por exec(), que substitui o espaço de endereçamento do filho. Copiar todos os dados antigos imediatamente realizaria um trabalho que o filho talvez nunca use. Mapeamentos graváveis compartilhados intencionalmente têm outra semântica: a COW descreve os mapeamentos privados que devem se tornar distintos em uma escrita.

Uma PTE somente para leitura, por si só, não estabelece COW. Uma escrita em código de programa realmente somente para leitura é um erro; uma escrita em uma página de dados protegida por COW pode ser corrigida. Registros de software distinguem os casos, então a mesma exceção de proteção do hardware pode resultar em uma nova tentativa bem-sucedida ou em uma falha de segmentação.

Proteja os mapeamentos do núcleo

Os mapeamentos do núcleo também usam proteção. Um projeto tradicional mapeia a memória do núcleo no espaço de endereçamento de cada processo com acesso exclusivo do modo supervisor, permitindo a entrada no núcleo sem selecionar um mapeamento inteiramente diferente. Código em modo usuário não pode acessar essas páginas apenas porque elas têm endereços. O isolamento das tabelas de páginas do núcleo, introduzido em sistemas afetados depois que o Meltdown se tornou público em 2018, remove a maioria dos mapeamentos do núcleo enquanto o código de usuário é executado e troca os mapeamentos na entrada no núcleo.

Principais conclusões

  • A memória preenchida com zeros sob demanda não precisa de leitura do armazenamento e não deve expor dados antigos.
  • Tabelas de páginas diferentes podem mapear o mesmo quadro de código somente para leitura.
  • A COW compartilha dados privados até que uma escrita exija uma cópia privada.
  • O tratador usa registros de software para distinguir COW de uma escrita proibida.
  • A COW evita copiar dados que um filho logo descarta por meio de exec.
5

Escolha políticas de substituição de páginas e previna a hiperpaginação

Quando uma página necessária não tem um quadro livre, o sistema operacional precisa escolher o que remover. Essa escolha altera as taxas futuras de faltas, mas mesmo uma boa política não consegue manter todas as páginas ativas residentes quando a demanda é alta demais. Você comparará políticas em sequências de referências, usará bits de hardware para aproximar a recência e relacionará o conjunto de trabalho de um processo à alocação de quadros. A etapa final é reconhecer quando a paginação repetida impede o progresso útil.

5.1 Contagem de faltas e escolha da vítima ótima

Uma política de substituição escolhe uma página residente para remover quando uma página necessária não tem um quadro livre disponível. A memória física funciona como um cache do conteúdo das páginas. A política tenta manter páginas cujo uso futuro evitará faltas custosas. Uma falta de substituição é um evento abstrato de ausência da memória; a necessidade de entrada e saída depende da origem do conteúdo ausente.

Registre acertos e faltas

Compare políticas usando a mesma sequência de referências, o mesmo número de quadros e o mesmo estado inicial. Uma sequência de referências lista números de página na ordem de acesso. Para cada referência, pergunte primeiro se a página está residente. Se estiver, registre um acerto. Caso contrário, registre uma falta, carregue a página e remova uma vítima somente se a memória já estiver cheia.

As primeiras referências são faltas mesmo enquanto ainda há quadros livres. Essas faltas compulsórias não podem ser evitadas escolhendo outra vítima. Faltas posteriores causadas por capacidade insuficiente são faltas por capacidade. A substituição de páginas não tem conflitos de posicionamento: uma página pode ocupar qualquer quadro. Faltas por conflito pertencem a caches com posicionamento restrito, não a esse modelo de quadros com posicionamento totalmente flexível.

Escolha o uso futuro mais distante

A política ótima, OPT ou MIN, escolhe a página cujo próximo uso está mais distante no futuro. Uma página que nunca será usada novamente é uma vítima ideal. Isso produz o menor número de faltas para uma sequência de referências conhecida, mas um sistema operacional em execução não pode conhecer referências futuras arbitrárias. OPT fornece uma referência de comparação para políticas práticas.

Use três quadros inicialmente vazios e a sequência 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1. As três primeiras referências preenchem a memória e causam faltas. A próxima referência a 1 resulta em acerto. Na referência 5, chega a página 4: as páginas residentes 1, 2 e 3 serão usadas novamente nas posições 6, 8 e 11. Remova 3, cujo próximo uso é o mais distante.

Depois que a referência a 1 resulta em acerto, a página 5 chega na posição 7. As páginas residentes 1, 2 e 4 serão usadas novamente nas posições 9, 8 e 10, então OPT remove 4. As próximas referências a 2 e 1 resultam em acertos. A página 4 causa uma falta na posição 10; 2 ou 5 pode ser removida porque nenhuma das duas será usada novamente. A página 3 causa então uma falta e remove outra página sem uso futuro. A referência final a 1 resulta em acerto.

Compare totais e cargas de trabalho

A simulação tem 7 faltas e 5 acertos. Contando todas as 12 referências, a taxa de acerto é 5/12, ou cerca de 41,7%. Há cinco páginas distintas, portanto cinco faltas compulsórias. Se a taxa informada excluir essas faltas, ela passa a ser 5/7, ou cerca de 71,4%. As duas taxas podem descrever a mesma simulação, então sempre identifique o denominador.

Para não perder sua posição, mantenha a referência atual separada da sequência futura. OPT compara o próximo uso de cada página residente após a posição atual; ela não escolhe a página que tem o maior número ou que foi carregada primeiro. Se duas páginas nunca forem usadas novamente, qualquer uma das escolhas preserva o resultado ótimo.

As cargas de trabalho afetam o quanto a política importa. Quando as referências têm a mesma probabilidade em todas as páginas, o uso passado oferece pouca orientação. Com localidade, um pequeno conjunto muito usado recebe muitas referências, e preservá-lo melhora a taxa de acerto. A diferença entre a contagem de faltas de uma política prática e a de OPT mede a melhoria possível nessa carga de trabalho.

Principais conclusões

  • Conte os carregamentos iniciais como faltas, mesmo antes de qualquer remoção.
  • OPT remove a página residente cujo próximo uso está mais distante.
  • OPT é uma referência de comparação porque exige conhecimento das referências futuras.
  • A substituição de páginas tem faltas por capacidade, mas não faltas por conflito de posicionamento em quadros.
  • Informe se o denominador da taxa de acerto inclui faltas compulsórias.

5.2 FIFO, LRU e efeitos da carga de trabalho

FIFO remove a página carregada há mais tempo entre as residentes atuais. Uma fila controla a ordem de chegada. Um acerto não move a página para o fim dessa fila. Isso torna FIFO fácil de manter, mas ela pode remover uma página ainda usada com frequência simplesmente porque chegou há muito tempo.

Acompanhe o último uso em vez da chegada

LRU, a substituição da página menos recentemente usada, acompanha o uso mais recente de cada página residente. Em um acerto, essa página passa a ser a mais recentemente usada; em uma falta com a memória cheia, sai a página cujo último uso é o mais antigo. Isso segue a localidade temporal: o uso recente muitas vezes prevê o uso no futuro próximo. O momento de chegada e o momento do último uso são históricos diferentes.

A substituição aleatória escolhe uma vítima residente ao acaso, sem manter uma ordem de recência. Seu resultado varia entre execuções. Ela pode evitar o padrão determinístico de falha da LRU em uma carga de trabalho cíclica, mas ainda pode fazer escolhas infelizes. A LFU, substituição da página menos frequentemente usada, acompanha contagens em vez de recência. Sem envelhecimento, ela pode manter uma página que foi popular em uma fase anterior do programa, mas agora não é usada.

Acompanhe políticas na mesma sequência

Compare três quadros vazios na sequência 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1. As páginas 1, 2 e 3 primeiro preenchem a memória. O acerto em 1 deixa a ordem de FIFO inalterada, então a chegada de 4 remove 1. A LRU, por sua vez, trata 1 como recente e remove 2. Portanto, a referência seguinte a 1 resulta em falta com FIFO e em acerto com LRU.

Na LRU, as faltas posteriores removem 3 pela página 5, 4 pela página 2, 5 pela página 4 e 2 pela página 3. Ela termina com 8 faltas e 4 acertos. FIFO produz 10 faltas e 2 acertos. OPT produz 7 faltas na mesma sequência. Aqui, LRU melhora em relação a FIFO, mas não alcança o resultado ótimo que conhece o futuro.

Explique a anomalia de Belady

Mais quadros não melhoram toda política em toda sequência. A anomalia de Belady é um aumento de faltas quando FIFO recebe mais quadros. Para 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, FIFO tem 9 faltas com três quadros e 10 com quatro. A capacidade extra muda as vítimas posteriores da fila, então seus conjuntos residentes não estão necessariamente contidos uns nos outros.

LRU e OPT são algoritmos de pilha: com tratamento consistente de empates, o conjunto residente para um número menor de quadros está contido no conjunto para um número maior. Portanto, aumentar a capacidade não pode transformar um acerto com menos memória em uma falta com mais memória. Na sequência da anomalia, LRU produz 10 faltas com três quadros e 8 com quatro.

Reconheça cargas de trabalho desfavoráveis à recência

A LRU ainda tem cargas de trabalho desfavoráveis. Percorra três vezes as páginas 1, 2, 3, 4 com três quadros. Cada nova página remove aquela que será necessária em seguida, produzindo 12 faltas. OPT precisa de 6. A substituição aleatória pode manter páginas úteis ao longo de um ciclo e tem desempenho melhor em média nesse caso. Uma varredura única pode igualmente expulsar um conjunto útil e muito usado de um cache LRU.

Uma comparação de políticas deve incluir sua carga de trabalho e o número de quadros. A localidade torna a recência útil em muitos programas, o que motiva aproximações da LRU em sistemas reais. Um laço periódico que excede a capacidade por pouco favorece outra escolha; nenhuma vantagem observada em uma única sequência curta estabelece uma classificação universal.

Principais conclusões

  • Acertos em FIFO não mudam a ordem de chegada; acertos em LRU mudam a recência.
  • LFU conta usos, enquanto LRU registra quando ocorreu o último uso.
  • A substituição aleatória varia entre execuções e ainda pode escolher vítimas ruins.
  • FIFO pode apresentar a anomalia de Belady.
  • LRU e OPT têm conjuntos residentes contidos uns nos outros à medida que a capacidade aumenta.
  • Uma carga de trabalho cíclica que excede a capacidade por pouco pode derrotar a LRU.

5.3 Aproximação da recência com um ponteiro de relógio

A LRU exata exige trabalho em cada referência à memória. Com marcas de tempo, cada referência atualiza uma marca e a seleção da vítima procura a mais antiga. Com uma lista ordenada, a vítima está disponível no final, mas cada referência precisa mover sua página para o início. Atualizar essa estrutura por software em cada leitura e escrita seria custoso demais.

Leia o bit de referência

O hardware oferece um sinal mais barato: o bit de referência, também chamado bit de acesso ou de uso. O hardware o define quando uma página é lida ou escrita. O sistema operacional o limpa para iniciar outro intervalo de observação. Um bit definido significa pelo menos um uso desde a última limpeza; ele não é uma contagem de frequência e não revela a ordem exata do último uso.

Procure uma vítima

O algoritmo do relógio coloca os quadros em círculo e mantém um ponteiro apontado para o próximo candidato. Na substituição, ele examina o bit de referência do candidato. Se o bit for 1, o ponteiro o limpa e avança. Se o bit for 0, esse quadro é a vítima. A nova página entra com seu bit de referência definido, e o ponteiro avança além dela. Um acerto define o bit da página referenciada sem mover o ponteiro.

Suponha que o círculo contenha A com bit 1, B com bit 0 e C com bit 1, com o ponteiro em A. Uma falta em D limpa o bit de A e avança para B. B já tem bit 0, então D substitui B com bit 1, e o ponteiro termina em C. Se a próxima referência causar uma falta em E, o ponteiro limpa o bit de C, encontra A com 0 e substitui A. Se A tivesse sido acessada entre essas faltas, seu bit seria 1 e ela receberia outra chance.

Se todos os bits forem 1 e nenhum novo acesso ocorrer nesse intervalo, uma volta limpa todos eles. O ponteiro então remove sua página inicial quando retorna. Essa escolha específica se assemelha à próxima vítima de FIFO na ordem de chegada, mas o relógio geralmente segue o histórico de uso e a posição do ponteiro; ele nem sempre equivale a FIFO.

Uma simulação completa do relógio precisa de uma convenção de inicialização. Aqui, os quadros vazios são preenchidos em ordem com bit 1; o ponteiro permanece no quadro 0 até a primeira substituição. Acertos definem bits. Cada substituição faz o ponteiro avançar. Segundo essa convenção, três quadros na sequência 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1 produzem 10 faltas. Uma sequência curta pode ocultar o benefício de uma aproximação de recência; o relógio costuma acompanhar bem a localidade em execuções mais longas.

Considere o custo de escrita e variantes reais

O estado de modificação acrescenta o custo de preservar uma vítima. Uma preferência do relógio aprimorado classifica pares (referência, modificação) como (0,0), (0,1), (1,0) e depois (1,1). Isso favorece uma página sem uso recente nem alterações não salvas. As implementações diferem na maneira como as varreduras limpam bits e programam escritas. A escrita de retorno em segundo plano pode tornar um candidato modificado limpo antes que a substituição precise dele.

Sistemas reais usam variantes mais elaboradas. O VAX/VMS colocava páginas removidas em listas de páginas limpas ou modificadas para que um processo pudesse recuperar uma delas antes que seu quadro fosse reutilizado. O Linux já usou listas de páginas ativas e inativas e oferece a LRU multigeracional, que agrupa páginas pela recência observada. Esses sistemas usam informações do hardware para orientar decisões do sistema operacional; o bit de referência do hardware não escolhe uma vítima por si só.

Principais conclusões

  • Manter os registros da LRU exata em cada referência é custoso.
  • Um bit de referência registra qualquer uso desde a limpeza, não uma contagem.
  • O relógio limpa um bit 1 e avança; ele remove uma página encontrada com bit 0.
  • Acertos definem bits de referência, mas não movem o ponteiro do relógio.
  • Páginas limpas e não referenciadas são boas vítimas para o relógio aprimorado.
  • Informe a inicialização e o movimento do ponteiro ao simular o relógio.

5.4 Conjuntos de trabalho, alocação de quadros e hiperpaginação

A hiperpaginação ocorre quando processos passam a maior parte do tempo trazendo páginas para a memória após faltas e removendo páginas que serão necessárias novamente em breve. O dispositivo de armazenamento permanece ocupado enquanto a utilização da CPU cai, embora os programas ainda tenham trabalho a fazer. Uma baixa carga de CPU, por si só, não identifica hiperpaginação; a combinação de paginação intensa e pouco progresso é o indício.

A causa é uma demanda de memória que excede os quadros disponíveis. Um processo precisa de um conjunto útil de páginas residentes para concluir sua fase atual. Se os conjuntos ativos de vários processos não couberem juntos, suas faltas repetidamente deslocam páginas úteis. Iniciar ainda mais processos pode piorar essa pressão, embora a CPU pareça subutilizada.

Estime a demanda atual por páginas

O conjunto de trabalho, escrito W(t,Δ), estima as necessidades atuais de um processo. No modelo de janela de referências, ele é o conjunto de páginas distintas nas últimas Δ referências que terminam no instante t. Conte cada página uma vez, mesmo que apareça várias vezes na janela. O tamanho do conjunto de trabalho é um número de páginas, não o número de referências.

Com janela 5 e a sequência 1, 2, 1, 3, 2, 1, 4, 5, 4, 5, 4, 6, 5, 4, examine o estado após a referência 6. As últimas cinco referências são 2, 1, 3, 2, 1, resultando em {1, 2, 3}, de tamanho 3. Após a referência 8, a janela é 3, 2, 1, 4, 5, resultando em tamanho 5. Após a referência 11, ela é 4, 5, 4, 5, 4, resultando em tamanho 2. A demanda atinge temporariamente um pico enquanto as fases antiga e nova se sobrepõem.

Controle a demanda ativa e a alocação

Uma janela curta pode omitir páginas ainda necessárias; uma longa demais pode incluir páginas de uma fase concluída. O modelo de conjunto de trabalho de Peter Denning relaciona essas necessidades variáveis à alocação. Uma política de conjunto de trabalho executa processos apenas quando seus conjuntos de trabalho combinados cabem na memória. Se não couberem, ela suspende um ou mais processos e libera seus quadros. Isso é controle de admissão.

O controle da frequência de faltas de página (PFF) usa taxas de faltas medidas. Acima de um limiar superior, um processo precisa de mais quadros. Abaixo de um limiar inferior, alguns quadros podem ser redistribuídos. Se um processo precisar de quadros e nenhum estiver disponível, pode ser necessário suspender um processo. Dois limiares reduzem ajustes contínuos em torno de um único limite.

Com substituição global, uma falta pode remover a página de outro processo. Isso se adapta de forma flexível à demanda variável, mas permite que um processo aumente as faltas de outro. Com substituição local, as vítimas vêm apenas da alocação do processo que causou a falta. Isso limita a interferência, mas não pode ajudar um processo com poucos quadros atribuídos sem uma mudança de alocação.

Escolha soluções para a pressão de memória

Soluções úteis reduzem a demanda ou aumentam a capacidade: executar menos programas, acrescentar memória física ou melhorar a localidade, por exemplo, percorrendo arrays na ordem de armazenamento. Uma área de troca mais rápida reduz o custo de cada falta maior; ela não faz um conjunto ativo grande demais caber na memória. Substituir um disco por um SSD pode melhorar o progresso sem eliminar a causa.

Sob pressão extrema, o mecanismo de encerramento por falta de memória do Linux pode encerrar um processo selecionado quando a recuperação de memória e a troca de páginas não conseguem liberar memória suficiente. A seleção usa uma pontuação de inadequação relacionada à memória e ajustes de política, não simplesmente a identidade do maior processo. A memória pode ser recuperada quando o processo termina, e seu trabalho é perdido. Essa é uma liberação de recursos em último caso, diferente de suspender um processo para que ele possa retomar mais tarde.

Principais conclusões

  • A hiperpaginação combina paginação intensa com pouco progresso útil.
  • Um conjunto de trabalho conta páginas distintas em uma janela recente.
  • O controle de admissão limita os processos ativos ao que a memória consegue suportar.
  • O controle PFF ajusta a alocação de quadros usando limiares superior e inferior de taxa de faltas.
  • A substituição global permite remover páginas de outros processos; a local isola a seleção de vítimas.
  • Uma área de troca mais rápida reduz a demora, mas não aumenta a capacidade de quadros.
  • Um encerramento por falta de memória perde o trabalho de um processo; a suspensão pode preservá-lo.

Exercícios resolvidos de Paginação e memória virtual

5 Lições Interativas

1

Traduza um endereço virtual passo a passo

11 passos
Divida um endereço, localize sua PTE, aplique as regras do mapeamento e calcule o endereço físico final do byte.
  1. 1
    IntroduçãoDe um endereço a um byte

    Uma instrução de leitura indica um endereço virtual de byte. Os próprios bytes ficam em quadros físicos, e a tabela de páginas do processo atual conecta os dois. Acompanhe um endereço pela divisão, pela consulta à entrada e pelo acesso final.

    Mantenha duas perguntas separadas: onde está a entrada que descreve essa página e onde está o byte que a instrução deseja? Ambos são endereços, mas apontam para objetos diferentes.

  2. 2
    ExplicaçãoPáginas podem se mover sem mudar os endereços do programa

    Uma página é uma parte de tamanho fixo da memória virtual; um quadro é uma parte de mesmo tamanho da memória física. A página 0 pode ocupar o quadro 15 enquanto a página 1 ocupa o quadro 2.

    O programa continua vendo endereços virtuais consecutivos nessas páginas. Qualquer página cabe em qualquer quadro livre, então o sistema operacional não precisa de uma única grande lacuna física para um processo inteiro.

  3. 3
    ExemploSepare a página de seu deslocamento

    Use páginas de 2 KiB e o endereço virtual 11.600. Cada página contém 2.048 bytes. Cinco páginas completas correspondem a 10.240 bytes, então esse endereço pertence à VPN 5.

    Os 1.360 bytes restantes fornecem seu deslocamento. Em binário, os 11 bits menos significativos contêm esse deslocamento porque uma página tem 211 posições de byte. Os bits mais significativos identificam a página virtual.

  4. 4
    ExemploMeça o espaço não usado na alocação

    Uma região precisa de 10.700 bytes e usa páginas de 2 KiB. Cinco páginas comportam apenas 10.240 bytes, então ela precisa de seis páginas. A capacidade total delas é de 12.288 bytes.

    Subtraia o tamanho útil da região para encontrar 1.588 bytes não usados dentro da alocação. Isso é fragmentação interna. Quadros livres em outros lugares não fazem parte desse desperdício; os bytes não usados ficam dentro de uma página alocada.

  5. 5
    DesafioExperimente outra divisão de endereço

    Com páginas de 8 KiB, um processo referencia o endereço virtual 25.100. Quais VPN e deslocamento identificam esse byte?

    ---reveal---

    Três páginas correspondem a 24.576 bytes, deixando o deslocamento 524. A VPN é 3 e o deslocamento é 524. O deslocamento deve ser menor que 8.192; esse limite ajuda a detectar um erro de quociente ou subtração antes de traduzir a página.

  6. 6
    ExplicaçãoEncontre a entrada antes dos dados

    Em uma tabela de páginas linear, a VPN indexa um array por processo. Se sua base for o endereço físico 20.000 e as entradas tiverem 8 bytes, a PTE 5 começará em 20.040.

    Multiplicar pelo tamanho da entrada localiza informações de mapeamento. Isso não localiza o byte solicitado pelo programa. A entrada deve fornecer um número de quadro físico e permitir a operação solicitada antes que o processador possa formar o endereço dos dados.

  7. 7
    Ideia-chaveVerifique o estado do mapeamento

    Uma página pode pertencer a um processo e não estar residente. Ela também pode estar residente e proibir uma operação específica. Presença e permissão respondem a perguntas diferentes.

    O modelo didático atribui funções separadas à validade, à presença e à proteção. O x86 não fornece um bit de validade separado; quando um mapeamento de hardware não está presente, os registros do sistema operacional distinguem área de troca, alocação tardia e um endereço não usado.

  8. 8
    ExemploConclua a tradução

    Volte ao endereço virtual 11.600 com páginas de 2 KiB: VPN 5, deslocamento 1.360. Suponha que a PTE 5 permita a leitura, esteja presente e indique o quadro 14.

    O quadro 14 começa no byte 28.672. Somar o deslocamento inalterado fornece o endereço físico de byte 30.032. A PTE em 20.040 nos informa esse resultado; ela não é o endereço de onde o programa lê seus dados.

  9. 9
    DesafioEscolha o endereço final correto

    Com páginas de 1 KiB, o endereço virtual 3.250 é mapeado por uma PTE presente e permitida para o quadro 11. Qual é o endereço físico resultante? Explique qual parte permanece inalterada.

    ---reveal---

    O endereço tem VPN 3 e deslocamento 178. O quadro 11 começa em 11.264, então o resultado é 11.442. O deslocamento permanece 178 porque uma página e seu quadro têm as mesmas posições internas de bytes.

  10. 10
    DesafioRelacione a divisão ao tamanho da tabela

    Um sistema tem endereços virtuais de 24 bits, páginas de 4 KiB e entradas de tabela linear de 8 bytes. Quanta memória a tabela completa ocupa?

    ---reveal---

    O deslocamento usa 12 bits, restando 12 bits de VPN e 4.096 entradas. Multiplicar por oito fornece 32.768 bytes, ou 32 KiB. A tabela ainda contém entradas para páginas não usadas; alocar poucos quadros de dados não reduz esse array linear completo.

  11. 11
    RecapitulaçãoInterprete os dois cálculos de endereço

    Use a VPN para localizar uma entrada de mapeamento, verifique seu estado e use seu PFN para localizar um quadro. Depois, leve o deslocamento original para esse quadro.

    O tamanho da entrada controla o avanço pela tabela; o tamanho da página controla o avanço pelos quadros físicos. Manter essas unidades visíveis faz o mesmo método funcionar com endereços decimais, endereços hexadecimais e tamanhos de página diferentes.

2

Use a TLB sem perder a correção

12 passos
Acompanhe acertos, ausências, localidade, identificadores de contexto, invalidação e alcance da TLB.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoPor que a tradução repetida pode ser rápida
  2. 2
    ExplicaçãoUm acerto economiza uma consulta à tabela
  3. 3
    Ideia-chaveUma ausência pode ser resolvida inteiramente na memória
  4. 4
    ExemploConte as ausências de um array sequencial
  5. 5
    ExemploCalcule uma média com casos completos
  6. 6
    DesafioAplique a localidade a uma segunda passagem
  7. 7
    ExplicaçãoEscolha quem realiza o preenchimento
  8. 8
    ExemploIdentifique traduções pelo espaço de endereçamento
  9. 9
    ConexãoUma alteração na tabela exige invalidação do cache
  10. 10
    DesafioCalcule a cobertura das traduções
  11. 11
    DesafioSepare um problema de capacidade de um problema de correção
  12. 12
    RecapitulaçãoAcompanhe desempenho e correção
3

Percorra tabelas de páginas menores

14 passos
Compare organizações de tabelas, acompanhe um exemplo de dois níveis e derive tabelas mais profundas e mapeamentos de páginas grandes.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoGaste menos memória com mapeamentos
  2. 2
    ExplicaçãoPergunte o que uma entrada descreve
  3. 3
    ConexãoCompare duas formas de eliminar desperdício
  4. 4
    DesafioVerifique a contagem de uma tabela invertida
  5. 5
    ExplicaçãoDivida a VPN em dois índices
  6. 6
    ExemploLeia a entrada do diretório
  7. 7
    ExemploSiga o ponteiro físico até a entrada final
  8. 8
    DesafioConte as tabelas alocadas para mapeamentos esparsos
  9. 9
    ExplicaçãoDerive uma hierarquia mais profunda
  10. 10
    Ideia-chaveMantenha em vista a largura implementada
  11. 11
    ExemploPermita que uma entrada de diretório mapeie os dados
  12. 12
    DesafioCalcule outra quantidade de níveis
  13. 13
    DesafioAvalie uma proposta de página grande
  14. 14
    RecapitulaçãoConte o espaço e o trabalho de consulta separadamente
4

Trate faltas e adie trabalho desnecessário

14 passos
Restaure uma página da área de troca, estime seu custo e aplique preenchimento com zeros sob demanda e cópia na escrita.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoAguarde o conteúdo e tente novamente
  2. 2
    ExplicaçãoInterprete um mapeamento não presente
  3. 3
    ExemploLocalize a página salva
  4. 4
    ExemploInstale o mapeamento e retome a execução
  5. 5
    DesafioDiferencie dois tipos de falta
  6. 6
    ExemploConverta o custo antes de calcular a média
  7. 7
    ExplicaçãoPrepare vítimas antes que as faltas precisem delas
  8. 8
    Ideia-chaveVerifique se uma página limpa é recuperável
  9. 9
    DesafioAcrescente a escrita da vítima ao caminho crítico
  10. 10
    ExplicaçãoForneça zeros apenas quando necessário
  11. 11
    ExplicaçãoCompartilhe páginas privadas até uma escrita
  12. 12
    DesafioConte páginas copiadas, não instruções de escrita
  13. 13
    DesafioInfira a causa pelo comportamento da falta
  14. 14
    RecapitulaçãoUse faltas para fornecer o conteúdo correto
5

Compare vítimas e previna a hiperpaginação

20 passos
Acompanhe políticas, execute o ponteiro do relógio, estime conjuntos de trabalho e escolha soluções para paginação excessiva.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoMantenha páginas úteis residentes
  2. 2
    DicaDefina as condições da simulação
  3. 3
    ExemploEscolha uma vítima considerando o futuro
  4. 4
    ExemploConclua a simulação de referência
  5. 5
    DesafioEncontre a parte inevitável
  6. 6
    ExplicaçãoUse a ordem de chegada para FIFO
  7. 7
    ExemploUse o último acesso para LRU
  8. 8
    Ideia-chaveEvite presumir que a recência sempre prevê a reutilização
  9. 9
    DesafioInterprete um resultado com um quadro extra
  10. 10
    ExplicaçãoSubstitua a ordem exata por um sinal de uso
  11. 11
    ExemploTome uma decisão com o relógio
  12. 12
    DesafioDê outra chance a uma página acessada recentemente
  13. 13
    ConexãoConsidere vítimas modificadas
  14. 14
    ExplicaçãoReconheça a pressão de memória que bloqueia o progresso
  15. 15
    ExemploConte um conjunto de trabalho em uma mudança de fase
  16. 16
    ExplicaçãoAloque pela demanda ou pelos sintomas das faltas
  17. 17
    DesafioDiferencie isolamento de capacidade
  18. 18
    ConexãoEscolha uma solução que altere a causa
  19. 19
    DesafioRelacione conjuntos de trabalho à substituição
  20. 20
    RecapitulaçãoRelacione as simulações ao sistema em execução

Questões de Paginação e memória virtual

50 Questões de Prática em 5 conjuntos

Conjunto 1: Prática 1: Construa o modelo de paginação10 Questões de Prática

Questão 1 de 10

De quantos bits de deslocamento uma página de 8 KiB precisa?
  1. 10 bits
  2. 13 bits
  3. 12 bits
  4. 16 bits
Mostrar respostaOcultar resposta
Resposta: B
Uma página de 8 KiB contém 8.192 posições de byte, então seus deslocamentos vão de 0 a 8.191 e precisam de 13 bits. Doze bits selecionam apenas 4.096 posições, o suficiente para uma página de 4 KiB. A largura do endereço determina os bits restantes da VPN, não a largura do deslocamento para esse tamanho de página.

Questão 2 de 10

Com páginas de 2.048 bytes, o endereço virtual 7.300 tem um mapeamento presente e permitido para o quadro 6. A qual endereço físico de byte o acesso chega?
  1. 7.300
  2. 14.336
  3. 13.290
  4. 13.444
Mostrar respostaOcultar resposta
Resposta: D
A página virtual é 3 e o deslocamento é 1.156, pois três páginas correspondem a 6.144 bytes. O quadro 6 começa em 12.288, resultando no endereço físico 13.444. Usar o número original da página virtual deixaria o endereço inalterado e ignoraria o mapeamento para o quadro 6.

Questão 3 de 10

O que ainda deve ser verificado quando uma escrita encontra sua tradução na TLB?
  1. Se as permissões em cache permitem a escrita
  2. Se a página tem um segundo quadro livre
  3. Se os dados também estão guardados na TLB
  4. Se a tabela de páginas tem um novo índice linear
Mostrar respostaOcultar resposta
Resposta: A
Uma entrada da TLB contém permissões de acesso além do número do quadro, então um acerto ainda deve permitir a escrita solicitada. Encontrar uma tradução não concede acesso irrestrito. A TLB contém informações de mapeamento; os dados do programa podem estar em outro lugar na hierarquia de memória.

Questão 4 de 10

Uma TLB de 128 entradas mapeia páginas de 4 KiB. Qual é seu alcance?
  1. 32 KiB
  2. 128 KiB
  3. 512 KiB
  4. 4 MiB
Mostrar respostaOcultar resposta
Resposta: C
Cada entrada cobre uma página de 4 KiB, então 128 entradas representam 512 KiB de memória. O número de entradas, por si só, não é uma capacidade em bytes. Um alcance de 4 MiB exigiria oito vezes mais cobertura de tradução nesse tamanho de página; ele não pode ser inferido da quantidade de RAM instalada.

Questão 5 de 10

Um espaço de endereçamento virtual completo de 30 bits usa páginas de 4 KiB e entradas de tabela linear de 8 bytes. Quanta memória uma tabela ocupa?
  1. 256 KiB
  2. 1 MiB
  3. 8 MiB
  4. 2 MiB
Mostrar respostaOcultar resposta
Resposta: D
Retirar 12 bits de deslocamento deixa 18 bits de VPN, resultando em 262.144 entradas. Oito bytes por entrada resultam em 2.097.152 bytes, ou 2 MiB. O resultado de 256 KiB conta as entradas como se cada uma ocupasse um byte; o armazenamento da tabela deve incluir o tamanho real da entrada.

Questão 6 de 10

Um sistema de dois níveis usa páginas de 4 KiB e entradas de 4 bytes nos dois níveis. Um processo mapeia páginas em exatamente cinco regiões do diretório. Quanta memória armazena seu diretório e suas tabelas de nível inferior?
  1. 20 KiB
  2. 40 KiB
  3. 24 KiB
  4. 4 MiB
Mostrar respostaOcultar resposta
Resposta: C
Cada região ocupada do diretório precisa de uma tabela de nível inferior de 4 KiB, e o processo também precisa de seu diretório de 4 KiB. Seis páginas de tabela totalizam 24 KiB. Contar apenas as cinco tabelas de nível inferior resulta em 20 KiB e omite a raiz que permite alcançá-las.

Questão 7 de 10

Uma página válida recebe um quadro preenchido com zeros no primeiro acesso, sem nenhuma leitura do armazenamento. Que tipo de falta de página ocorreu?
  1. Uma falta de página menor
  2. Uma falta de página maior
  3. Um acerto na TLB
  4. Uma falha de segmentação
Mostrar respostaOcultar resposta
Resposta: A
O sistema operacional corrigiu o mapeamento sem ler o conteúdo da página do armazenamento, então essa é uma falta menor. Uma falta maior exige uma leitura do armazenamento. Fornecer memória preenchida com zeros é uma solução legítima para uma falta de página; a exceção, por si só, não significa que o processo fez um acesso inválido.

Questão 8 de 10

Um acesso comum leva 80 ns; o atendimento total de uma falta maior leva 2 ms. Se uma referência em 10.000 causar uma falta maior, qual será o tempo efetivo de acesso no modelo de dois casos?
  1. 80,02 ns
  2. 279,992 ns
  3. 199,992 ns
  4. 2.079,992 ns
Mostrar respostaOcultar resposta
Resposta: B
Converta 2 ms em 2.000.000 ns e use a probabilidade de falta 0,0001. A média é 0,9999×80+0,0001×2000000=279,992 ns. O valor de 199,992 ns omite a contribuição das referências comuns, enquanto usar milissegundos como se fossem nanossegundos subestima o custo da falta.

Questão 9 de 10

Com dois quadros inicialmente vazios, OPT processa 2, 7, 2, 9, 7, 2. Quantas faltas ocorrem, incluindo os primeiros usos?
  1. 3 faltas
  2. 5 faltas
  3. 4 faltas
  4. 6 faltas
Mostrar respostaOcultar resposta
Resposta: C
As primeiras referências a 2 e 7 causam faltas, depois a referência a 2 resulta em acerto. Em 9, OPT remove 2 porque 7 será necessária antes; a referência a 7 resulta em acerto e a última referência a 2 causa uma falta, totalizando quatro faltas. Três é apenas o número de páginas distintas e omite a falta posterior por capacidade quando a página 2 retorna.

Questão 10 de 10

Com três quadros inicialmente vazios, OPT processa 6, 1, 4, 6, 8, 1, 9, 6, 4. Quais são seu total de faltas e sua taxa de acerto após excluir as faltas compulsórias?
  1. 6 faltas; 75% de acertos
  2. 5 faltas; 100% de acertos
  3. 6 faltas; 33,3% de acertos
  4. 7 faltas; 50% de acertos
Mostrar respostaOcultar resposta
Resposta: A
As cinco páginas distintas causam cinco faltas compulsórias; OPT também sofre uma falta quando 4 retorna no final, totalizando seis faltas. Os acertos são a quarta, a sexta e a oitava referências. Excluir cinco referências compulsórias deixa quatro referências e três acertos, então 75% é correto; 33,3% usa todas as nove referências.
Conjunto 2: Prática 2: Acompanhe consultas e faltas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma região de 17.500 bytes usa páginas de 8 KiB. Quantos bytes não são usados em suas páginas alocadas?
  1. 1.116 bytes
  2. 8.192 bytes
  3. 7.076 bytes
  4. 15.268 bytes
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Em uma tabela linear com entradas de 8 bytes, onde está a PTE 11 em relação à base da tabela?
  1. 88 bytes após a base
  2. 11 bytes após a base
  3. 19 bytes após a base
  4. 80 bytes após a base
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um array alinhado a uma página contém 6.144 valores de quatro bytes. Ele é lido uma vez em ordem com páginas de 8 KiB, uma TLB vazia e sem referências interferentes. Quantas ausências na TLB ocorrem?
  1. 6 ausências
  2. 12 ausências
  3. 6.144 ausências
  4. 3 ausências
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma página de tabela tem 4.096 bytes e cada entrada tem 8 bytes. Quantos bits selecionam uma entrada?
  1. 8 bits
  2. 9 bits
  3. 10 bits
  4. 12 bits
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma máquina hipotética usa endereços virtuais de 39 bits, páginas de 4 KiB e entradas de 8 bytes em tabelas do tamanho de uma página. Quantos níveis são necessários?
  1. 3 níveis
  2. 2 níveis
  3. 4 níveis
  4. 5 níveis
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

A leitura de uma página da área de troca termina e o tratador instala um mapeamento presente. O que deve acontecer com a instrução que causou a falta?
  1. Ela é pulada para que a execução continue
  2. Ela é executada novamente com o mapeamento corrigido
  3. Ela é substituída por uma nova chamada de sistema
  4. Ela é concluída com o número do bloco da área de troca
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Após fork, um filho escreve em cinco páginas COW compartilhadas distintas de 4 KiB cada e depois escreve novamente na primeira dessas páginas. Quantos dados de página são copiados para essas escritas?
  1. 4 KiB
  2. 24 KiB
  3. 20 KiB
  4. 40 KiB
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Com três quadros inicialmente vazios, processe 4, 8, 2, 4, 6, 8, 4 com FIFO e LRU. Quais são suas contagens totais de faltas?
  1. FIFO: 6; LRU: 5
  2. FIFO: 5; LRU: 6
  3. FIFO: 6; LRU: 6
  4. FIFO: 5; LRU: 5
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

O relógio tem os quadros A(1), B(1), C(0), D(1), com o ponteiro em B. Uma falta carrega E. Qual é o resultado da substituição, incluindo a nova posição do ponteiro?
  1. B sai; E tem bit 1; o ponteiro aponta para C
  2. C sai; E tem bit 1; o ponteiro aponta para D
  3. C sai; E tem bit 0; o ponteiro aponta para D
  4. D sai; E tem bit 1; o ponteiro aponta para A
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Três processos têm conjuntos de trabalho de 7, 5 e 4 páginas. Há apenas 12 quadros disponíveis. Se o controle de admissão suspender exatamente um processo inteiro e minimizar o número de páginas de conjunto de trabalho retiradas, qual deve suspender e quantos quadros disponíveis para as páginas necessárias sobrarão?
  1. Suspender o processo de 5 páginas; sobra 1 quadro
  2. Suspender o processo de 7 páginas; sobram 3 quadros
  3. Não suspender nenhum processo; sobram 4 quadros
  4. Suspender o processo de 4 páginas; sobram 0 quadros
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Prática 3: Combine os mecanismos10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um espaço de endereçamento virtual de 28 bits tem páginas de 16 KiB e entradas de 8 bytes em uma tabela linear completa. Qual é o tamanho da tabela?
  1. 64 KiB
  2. 128 KiB
  3. 256 KiB
  4. 2 MiB
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

O sistema operacional remove a permissão de escrita de um mapeamento que dois núcleos de processamento podem ter em cache. Qual estado em cache ele precisa atualizar?
  1. Invalidar apenas os bytes de dados nos dois núcleos
  2. Invalidar a tradução apenas no núcleo que escreve
  3. Invalidar a tradução desatualizada nos dois núcleos
  4. Substituir os identificadores de espaço de endereçamento de todos os processos
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma tabela invertida cobre 8 GiB de memória física usando quadros de 8 KiB. De quantas entradas ela precisa?
  1. 1.048.576 entradas
  2. 262.144 entradas
  3. 2.097.152 entradas
  4. 8.388.608 entradas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um sistema de dois níveis de 32 bits usa páginas de 4 KiB e entradas de 4 bytes. O diretório começa no endereço físico 0x3000. Um acesso permitido usa o endereço virtual 0x01407120; sua PDE contém o PFN 0x52 e sua PTE contém o PFN 0x9C. Quais são o endereço da PDE, o endereço da PTE e o endereço final dos dados?
  1. 0x3005, 0x52007, 0x9C120
  2. 0x3014, 0x5201C, 0x52120
  3. 0x301C, 0x52014, 0x9C120
  4. 0x3014, 0x5201C, 0x9C120
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma falta maior precisa de uma leitura de página de 0,15 ms. Se a vítima selecionada estiver modificada, uma escrita síncrona necessária leva primeiro 0,20 ms. Ignorando todas as outras sobrecargas, quanto essa falta demora a mais do que uma que usa uma vítima limpa com conteúdo recuperável?
  1. Demora 0,20 ms a mais
  2. Demora 0,05 ms a mais
  3. Demora 0,15 ms a mais
  4. Demora 0,35 ms a mais
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Por que uma página recém-fornecida com preenchimento com zeros sob demanda deve conter zeros antes que o processo a leia?
  1. Para tornar o endereço virtual da página igual ao número de seu quadro
  2. Para garantir que a página já tenha uma cópia salva na área de troca
  3. Para impedir que o processador algum dia defina seu bit de modificação
  4. Para impedir a exposição de dados deixados por outro processo
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma simulação de 20 referências começa com a memória vazia, acessa oito páginas distintas e registra 13 faltas. Qual é sua taxa de acerto após excluir as faltas compulsórias?
  1. 7/20, ou 35%
  2. 12/20, ou 60%
  3. 7/12, cerca de 58,3%
  4. 7/13, cerca de 53,8%
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Uma simulação LRU com dois quadros começa vazia na sequência 9, 3, 9, 7, 3, 9, 7. Qual é a contagem de faltas e uma simulação LRU com três quadros pode ter mais faltas nessa mesma sequência?
  1. 5 faltas; mais quadros não podem acrescentar faltas
  2. 6 faltas; mais quadros não podem acrescentar faltas
  3. 6 faltas; mais quadros podem acrescentar faltas
  4. 7 faltas; mais quadros podem acrescentar faltas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

O relógio começa cheio com A(1), B(0), C(1), com o ponteiro em A. As referências são D, A, E, com D e E inicialmente ausentes; acertos definem bits, e substituições definem o bit da nova página e avançam o ponteiro. Quais são os conteúdos finais dos quadros na ordem original e a posição do ponteiro?
  1. E, D, C; ponteiro em B
  2. A, E, D; ponteiro em B
  3. E, D, C; ponteiro em C
  4. A, D, E; ponteiro em A
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Após a referência 9 em 2, 6, 2, 8, 6, 9, 9, 6, 4, qual é o conjunto de trabalho para uma janela de cinco referências?
  1. {4, 6, 9}
  2. {2, 4, 6, 8, 9}
  3. {4, 6, 8, 9}
  4. {4, 9}
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Prática 4: Analise custos e padrões de acesso10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um endereço virtual de 34 bits usa páginas de 8 KiB. Quantos bits de VPN e quantas páginas virtuais o espaço de endereçamento tem?
  1. 13 bits de VPN; 213 páginas
  2. 22 bits de VPN; 222 páginas
  3. 21 bits de VPN; 234 páginas
  4. 21 bits de VPN; 221 páginas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um array C alinhado a páginas tem 128 linhas e 1.024 inteiros de quatro bytes por linha. Uma TLB LRU de 64 entradas começa vazia; as páginas são de 4 KiB e apenas as referências ao array contam. Quantas ausências na TLB ocorrem em um percurso por linhas e em um percurso por colunas?
  1. Linhas: 128; colunas: 131.072
  2. Linhas: 128; colunas: 128
  3. Linhas: 1.024; colunas: 131.072
  4. Linhas: 131.072; colunas: 128
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Os processos A e B usam a VPN 12, mapeada para quadros diferentes. Suas entradas na TLB têm ASIDs distintos. Por que ambas as entradas podem permanecer em cache durante uma troca?
  1. A consulta compara o PFN e as permissões em cache
  2. A consulta compara o ASID atual junto com a VPN
  3. A consulta compara apenas a VPN após atualizar a raiz da tabela
  4. A consulta compara apenas o ASID atual em todas as suas páginas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um sistema de dois níveis de 32 bits tem páginas de 4 KiB e entradas de 4 bytes. O processo A mapeia 1.024 páginas consecutivas a partir do endereço virtual zero. O processo B mapeia 1.024 páginas, uma em cada região do diretório. Quanta memória de tabela cada um precisa, incluindo seu diretório?
  1. A: 4 KiB; B: 4 MiB
  2. A: 8 KiB; B: 8 KiB
  3. A: 8 KiB; B: 4 MiB + 4 KiB
  4. A: 4 MiB; B: 4 MiB + 4 KiB
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Na paginação x86-64 de quatro níveis, substitua uma região alinhada de 2 MiB totalmente preenchida com mapeamentos de 4 KiB por um mapeamento de 2 MiB. Suponha que as tabelas superiores ainda sejam necessárias para outros mapeamentos. Quantas páginas de tabela final e quantas leituras de percurso por ausência na TLB são eliminadas nessa região?
  1. 512 páginas de tabela; uma leitura de percurso
  2. Uma página de tabela; duas leituras de percurso
  3. Uma página de tabela; uma leitura de percurso
  4. 512 páginas de tabela; duas leituras de percurso
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma referência resulta em ausência na TLB, mas sua PTE está presente e permite o acesso. Obter essa tradução exige uma falta de página maior?
  1. Sim; todo preenchimento da TLB lê a página da área de troca
  2. Não; a tradução pode ser preenchida sem leitura do armazenamento
  3. Sim; o bit de presença é limpo pela ausência na TLB
  4. Não; o acesso é concluído sem qualquer verificação de permissão
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Referências comuns levam 120 ns e referências que causam falta maior levam 3 ms no total. Qual é a probabilidade máxima de falta maior que mantém a média em 150 ns ou menos no modelo de dois casos?
  1. 150/3000000=5,0×10−5
  2. 30/3000120≈1,0×10−5
  3. 120/3000000=4,0×10−5
  4. 30/2999880≈1,0×10−5
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Compare três quadros inicialmente vazios na sequência 5, 2, 8, 5, 1, 2, 5, 8 com LRU e OPT. Quantas faltas cada uma produz?
  1. LRU: 6; OPT: 5
  2. LRU: 7; OPT: 5
  3. LRU: 6; OPT: 6
  4. LRU: 7; OPT: 6
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma varredura do relógio aprimorado compara X com (referência, modificação) = (0,1) e Y com (1,0). Segundo a preferência padrão de classes, qual página é preferida e que custo sua preservação pode exigir?
  1. Y; preservá-la pode exigir uma escrita
  2. X; seu bit de referência zero elimina a necessidade de escrita
  3. X; preservá-la pode exigir uma escrita
  4. Y; seu bit de modificação zero prova que não foi usada
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Dois processos precisam, cada um, de seis páginas para progredir, mas juntos recebem oito quadros. Uma solução proposta muda a substituição global para local e dá quatro quadros a cada um. Por que isso pode deixar a hiperpaginação sem solução?
  1. Cada alocação ainda é menor que o conjunto de trabalho do processo
  2. A substituição local torna cada alocação permanentemente fixa
  3. Oito quadros bastam quando cada página tem um proprietário separado
  4. Ambos os processos ainda escolhem vítimas de um único conjunto global
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Prática 5: Aplique e diagnostique10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Com páginas de 8 KiB, o endereço virtual 0x00012345 tem um mapeamento presente e permitido para o PFN 0x2D. Qual é o endereço físico resultante?
  1. 0x0005A345
  2. 0x0002D345
  3. 0x0005B345
  4. 0x00012345
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Dois projetos têm tempo adicional zero de consulta à TLB e não têm faltas de página nem caches de percurso. A memória leva 90 ns. O projeto L tem uma tabela linear e 95% de acertos na TLB; o projeto H tem uma tabela de quatro níveis e 99% de acertos. Quais são seus tempos médios de referência?
  1. L: 94,5 ns; H: 90,9 ns
  2. L: 85,5 ns; H: 89,1 ns
  3. L: 94,5 ns; H: 93,6 ns
  4. L: 99 ns; H: 97,2 ns
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Com uma largura fixa de endereço virtual, uma tabela linear passa de páginas de 4 KiB e entradas de 8 bytes para páginas de 16 KiB e entradas de 16 bytes. Como muda seu tamanho total em bytes?
  1. Ela passa a ter um quarto do tamanho
  2. Ela passa a ter metade do tamanho
  3. Ela permanece com o mesmo tamanho
  4. Ela passa a ter o dobro do tamanho
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um sistema hipotético usa 46 bits de endereço virtual implementados, páginas de 8 KiB e entradas de 8 bytes em tabelas do tamanho de uma página. Os índices inferiores são preenchidos até sua capacidade. Quantos níveis são necessários e quantos bits de índice restam para a raiz?
  1. Três níveis; 10 bits de índice da raiz
  2. Quatro níveis; 6 bits de índice da raiz
  3. Cinco níveis; 3 bits de índice da raiz
  4. Quatro níveis; 3 bits de índice da raiz
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma página modificada é gravada com sucesso enquanto permanece residente. Nenhum processo escreve nela depois. Qual é seu estado e outra referência pode usá-la sem uma entrada de página?
  1. Modificada e residente; sim
  2. Limpa e residente; sim
  3. Limpa e não residente; não
  4. Modificada e não residente; não
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Os processos A, B e C compartilham inicialmente duas páginas de dados privados de 4 KiB por meio de COW. A escreve nas duas páginas, depois B escreve na primeira e C escreve na segunda. Um tratador reutiliza um quadro original apenas quando ele tem um único proprietário. Quanta memória física adicional de página essas escritas exigem?
  1. 16 KiB
  2. 12 KiB
  3. 20 KiB
  4. 24 KiB
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma sequência de referências usa sete páginas distintas e começa com a memória vazia. Quantas faltas compulsórias ela deve conter?
  1. 0 faltas compulsórias
  2. 6 faltas compulsórias
  3. 7 faltas compulsórias
  4. 14 faltas compulsórias
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Duas simulações FIFO inicialmente vazias processam 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, com três e quatro quadros. Quais são as contagens de faltas, e a alocação maior apresenta a anomalia de Belady nessa sequência completa?
  1. Três: 9; quatro: 10; sim
  2. Três: 10; quatro: 10; não
  3. Três: 11; quatro: 10; não
  4. Três: 10; quatro: 11; sim
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

O relógio tem os quadros R(1), S(1), T(1), com o ponteiro em S. Não ocorrem acertos enquanto ele procura uma vítima. Qual página é removida e onde o ponteiro termina após a substituição?
  1. R é removida; o ponteiro termina em S
  2. S é removida; o ponteiro termina em T
  3. T é removida; o ponteiro termina em R
  4. S é removida; o ponteiro termina em S
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Em um instante, os processos A e B têm as janelas de referências 7, 4, 7, 9, 4, 7 e 2, 8, 2, 5, 8, 2. O tamanho da janela é seis e seus conjuntos de páginas são distintos. Eles têm cinco quadros ao todo. O que uma política de admissão baseada no conjunto de trabalho conclui?
  1. A demanda é de doze quadros; encurtar automaticamente as duas janelas
  2. A demanda é de cinco quadros; ambos os conjuntos de trabalho já cabem
  3. A demanda é de seis quadros; reduzir o conjunto de processos ativos
  4. A demanda é de três quadros; ambos os processos podem compartilhar todos os quadros
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

79 Termos-Chave, cada um com sua definição

A

Agrupamento de transferências de páginas
O agrupamento de transferências de páginas reúne transferências de páginas em operações maiores de armazenamento, reduzindo a sobrecarga de muitas pequenas transferências separadas, especialmente em discos.
Um daemon de paginação pode combinar várias escritas de páginas modificadas enquanto prepara quadros para reutilização posterior.
Alcance da TLB
O alcance da TLB é a quantidade de memória representada por um conjunto de traduções em cache, calculada como o número de entradas multiplicado pelo tamanho da página.
Sessenta e quatro entradas representam 256 KiB com páginas de 4 KiB, supondo que cada entrada mapeie uma página desse tamanho.
Algoritmo de pilha
Um algoritmo de pilha tem conjuntos residentes contidos uns nos outros à medida que a capacidade de quadros aumenta, garantindo que quadros adicionais não aumentem sua contagem de faltas.
LRU e OPT têm a propriedade de pilha, embora LRU ainda possa produzir mais faltas que OPT.
Algoritmo do relógio aprimorado
O algoritmo do relógio aprimorado incorpora o estado de modificação à seleção de vítimas por segunda chance, de modo que o histórico de acesso e o custo de preservar o conteúdo importem.
Uma página cujos bits de uso e de modificação são ambos 0, a classe preferida (0,0), não tem uso recente registrado nem alterações aguardando escrita de retorno.
Anomalia de Belady
A anomalia de Belady é um aumento nas faltas de página quando uma política recebe mais quadros na mesma sequência de referências e com as mesmas condições iniciais.
FIFO pode apresentar a anomalia; a capacidade extra altera suas escolhas posteriores de vítimas pela ordem de chegada.
Ausência na TLB
Uma ausência na TLB ocorre quando nenhuma tradução utilizável para uma página virtual e um contexto solicitados é encontrada no cache de tradução.
Uma ausência na TLB pode ser preenchida a partir de uma PTE presente sem ler nenhum conteúdo de página da área de troca.

Á

Área de troca
A área de troca é uma área de armazenamento reservada para preservar o conteúdo de páginas removidas da memória física, como um arquivo ou uma partição de troca.
Um tratador de faltas pode ler os bytes de uma página removida de sua localização registrada na área de troca para um quadro livre.

B

Bit de modificação
Um bit de modificação registra se uma página foi escrita desde que seu estado de modificação foi limpo pela última vez, ajudando a identificar alterações não salvas.
Após a conclusão da escrita de retorno, o sistema operacional pode limpar o estado de modificação enquanto a página permanece residente.
Bit de presença
Um bit de presença informa ao hardware se uma entrada fornece um mapeamento residente; um bit limpo exige que o software determine o estado da página.
Um bit de presença limpo pode levar o tratador aos metadados da área de troca ou a uma alocação preenchida com zeros sob demanda.
Bit de referência
Um bit de referência registra se uma página foi acessada desde que o sistema operacional limpou o bit pela última vez; ele não conta os acessos.
Dez leituras após a limpeza ainda deixam o mesmo valor de bit que uma leitura: o bit de referência é 1.
Bits de proteção
Bits de proteção especificam as operações permitidas em um mapeamento, como leitura, escrita, execução e acesso a partir do modo usuário.
Uma página de código residente pode rejeitar uma escrita mesmo que seu número de quadro esteja disponível.
Buffer de tradução de endereços
Um buffer de tradução de endereços é um cache rápido de hardware que armazena traduções recentes de páginas virtuais e suas informações de acesso.
O acesso sequencial a muitos inteiros em uma página pode reutilizar uma única tradução em cache na TLB.
Busca antecipada
A busca antecipada fornece páginas antes que sejam necessárias, usando um padrão de acesso esperado para reduzir a espera posterior por seu conteúdo.
Ler páginas antecipadamente pode ajudar um padrão de acesso sequencial, mas desperdiça recursos se as páginas previstas não forem usadas.

C

Cache de estruturas de paginação
Um cache de estruturas de paginação mantém informações intermediárias da tabela de páginas para que percursos posteriores evitem repetir algumas consultas de nível superior.
Uma ausência na TLB com quatro níveis pode custar menos que quatro esperas pela memória principal quando entradas intermediárias estão em cache.
Conjunto de trabalho
Um conjunto de trabalho é o conjunto de páginas distintas usadas por um processo em uma janela recente de referências, estimando suas necessidades atuais de páginas residentes.
Para a janela de cinco referências 4, 5, 4, 5, 4, o conjunto de trabalho é {4, 5}, de tamanho dois.
Controle da frequência de faltas de página
O controle da frequência de faltas de página ajusta a alocação de quadros de um processo usando limiares superior e inferior para sua taxa de faltas medida.
Um processo acima do limiar superior precisa de mais quadros; um abaixo do limiar inferior pode liberar alguns.
Controle de admissão
O controle de admissão limita o conjunto de processos ativos para que os quadros disponíveis possam suportar sua demanda de memória, suspendendo processos quando necessário.
Se os conjuntos de trabalho ativos excederem a capacidade, suspender um processo pode permitir que os demais progridam.
Cópia na escrita
A cópia na escrita compartilha inicialmente o conteúdo de páginas privadas e cria uma cópia privada gravável quando um processo escreve pela primeira vez em uma página compartilhada.
Um filho que altera apenas três páginas de 4 KiB pode evitar copiar toda a região de dados do pai.

D

Daemon de paginação
Um daemon de paginação é um trabalhador do sistema operacional em segundo plano que recupera memória e prepara quadros livres antes que alocações urgentes precisem deles.
O kswapd do Linux pode começar a recuperar páginas enquanto ainda resta uma pequena reserva de quadros livres.
Deslocamento na página
O deslocamento na página é a posição de byte dentro de uma página, codificada nos bits menos significativos do endereço e preservada durante a tradução.
Um deslocamento de 904 continua identificando o byte 904 após a página ser mapeada para o quadro físico 9.
Diretório de páginas
Um diretório de páginas é uma tabela de nível superior cujas entradas localizam páginas de tabela de páginas de nível inferior ou marcam suas regiões como ausentes.
Em um sistema 10/10/12, uma entrada de diretório cobre uma região virtual que contém 1.024 páginas de dados.

E

Endereço canônico
Um endereço canônico é um endereço x86-64 cujos bits superiores não usados repetem o bit mais significativo do endereço virtual implementado.
No modo comum de quatro níveis, os bits acima do bit 47 devem repeti-lo para que o endereço seja canônico.
Entrada da tabela de páginas
Uma entrada da tabela de páginas é um registro de mapeamento que contém um número de quadro físico e informações de estado ou proteção para uma página virtual.
O processador verifica uma entrada da tabela de páginas antes de usar seu número de quadro para concluir uma tradução.
Entrada do diretório de páginas
Uma entrada do diretório de páginas é um registro que aponta para uma tabela inferior e contém estado ou permissões para a região virtual que representa.
O número de quadro de uma PDE não final localiza uma página de PTEs, não o quadro final de dados do programa.
Escrita de retorno
A escrita de retorno preserva o conteúdo modificado de uma página residente no armazenamento de apoio, permitindo que seu estado de modificação seja limpo após o sucesso.
Gravar uma página não exige removê-la imediatamente; o processo pode continuar usando o quadro.
Espaço de endereçamento esparso
Um espaço de endereçamento esparso tem grandes regiões virtuais não usadas entre áreas mapeadas, como a lacuna entre a área de alocação dinâmica e a pilha de um processo.
A grande lacuna virtual não precisa de quadros de dados apenas porque existem endereços dos dois lados dela.

F

Falha de segmentação
Uma falha de segmentação é uma resposta comum do sistema operacional a um acesso inválido ou proibido à memória que o tratador não pode corrigir legitimamente.
Uma ausência na TLB em uma página presente e permitida não causa, por si só, uma falha de segmentação.
Falta compulsória
Uma falta compulsória é uma falta no primeiro uso de uma página que ainda não foi carregada, inevitável pela mudança da política de seleção de vítimas.
Uma simulação que começa vazia e acessa cinco páginas distintas tem cinco faltas compulsórias.
Falta de página
Uma falta de página é uma exceção gerada quando um acesso à memória não pode ser concluído com seu mapeamento atual, inclusive por ausência ou violação de proteção.
O tratador pode corrigir uma falta de escrita COW, mas rejeitar uma escrita em código de programa realmente somente para leitura.
Falta de página maior
Uma falta de página maior exige uma leitura do armazenamento para obter o conteúdo da página antes que o sistema operacional possa concluir o mapeamento.
Ler de um SSD uma página de dados transferida para a área de troca ainda é uma falta maior, mesmo que o SSD seja rápido.
Falta de página menor
Uma falta de página menor é resolvida sem ler o conteúdo da página do armazenamento, por exemplo, fornecendo memória preenchida com zeros ou mapeando um quadro residente.
Uma alocação preenchida com zeros sob demanda pode aumentar a contagem de faltas menores sem causar tráfego na área de troca.
Falta por capacidade
Uma falta por capacidade ocorre quando a capacidade limitada de quadros impede que uma página seja mantida até que uma referência posterior precise dela novamente.
Uma página que retorna pode causar uma falta mesmo tendo sido carregada antes, porque outra página reutilizou seu quadro.
Fragmentação interna
Fragmentação interna é o espaço alocado que fica sem uso dentro de um bloco de tamanho fixo, como a página final parcialmente preenchida de uma região.
Uma região de 9.000 bytes em três páginas de 4 KiB deixa 3.288 bytes alocados sem uso.

H

Hiperpaginação
A hiperpaginação é a movimentação intensa e contínua de páginas com pouca execução útil porque os processos ativos precisam de mais páginas residentes do que a memória comporta.
Baixo uso da CPU junto com paginação constante pode indicar que iniciar mais processos pioraria a pressão.

I

Identificador de espaço de endereçamento
Um identificador de espaço de endereçamento identifica traduções em cache pelo contexto de seu espaço de endereçamento, para que VPNs idênticas de processos diferentes permaneçam distintas.
ASIDs diferentes permitem que duas traduções para a página virtual 7 coexistam com segurança na mesma TLB.
Invalidação coordenada de TLBs
Uma invalidação coordenada de TLBs coordena a invalidação entre núcleos de processamento que possam manter em cache um mapeamento alterado pelo sistema operacional.
Remover a permissão de escrita exige que outros núcleos deixem de usar qualquer tradução gravável mais antiga.
Invalidação da TLB
Uma invalidação da TLB invalida as traduções em cache dentro de seu escopo, obrigando referências posteriores a preenchê-las novamente com informações atuais de mapeamento.
Invalidar a TLB em uma troca de contexto impede que uma tradução sem identificador seja usada pelo próximo processo.
Isolamento das tabelas de páginas do núcleo
O isolamento das tabelas de páginas do núcleo separa a maioria dos mapeamentos do núcleo daqueles usados durante a execução em modo usuário, trocando o contexto de mapeamento na entrada no núcleo.
Em sistemas afetados, o isolamento reduz a exposição ao Meltdown ao custo de trabalho extra na troca de mapeamentos.

Í

Índice da tabela
Um índice da tabela é o campo da VPN que seleciona uma entrada dentro da tabela de nível inferior localizada pela entrada anterior do diretório.
O índice de tabela 3 localiza uma PTE 12 bytes após a base de sua tabela quando as entradas ocupam quatro bytes.
Índice do diretório
Um índice do diretório é o campo mais significativo da VPN que seleciona uma entrada no diretório de páginas durante uma tradução hierárquica de endereço.
Os dez bits mais significativos selecionam a entrada 2 do diretório para o endereço virtual 0x00803ABC no esquema 10/10/12.

L

Limiar de memória livre
Um limiar de memória livre é um limite usado para acionar ou limitar a recuperação em segundo plano, para que o sistema mantenha uma reserva de quadros.
Quando a memória livre cai abaixo de um limiar inferior, o trabalho de recuperação começa em direção a uma meta maior de quadros livres.
Localidade espacial
Localidade espacial é a tendência de acessar endereços próximos em momentos próximos, permitindo que uma tradução de página atenda a muitas referências.
A leitura de elementos adjacentes de um array muitas vezes produz muitos acertos na TLB após o primeiro elemento de uma página.
Localidade temporal
Localidade temporal é a tendência de reutilizar endereços acessados recentemente, tornando útil para o cache o histórico recente de traduções.
Um laço curto executa repetidamente código nas mesmas poucas páginas e pode reutilizar seus mapeamentos em cache.
LRU multigeracional
A LRU multigeracional é uma abordagem de recuperação de páginas do Linux que agrupa páginas pela recência observada para orientar a remoção sob pressão de memória.
O envelhecimento por gerações fornece ao código de recuperação mais informações de recência que um único bit de referência sem envelhecimento.

M

Mapeamento exclusivo do modo supervisor
Um mapeamento exclusivo do modo supervisor permite acesso privilegiado ao núcleo enquanto nega referências comuns em modo usuário à memória mapeada.
Uma leitura em modo usuário de uma página do núcleo exclusiva do modo supervisor é rejeitada mesmo quando o mapeamento está presente.
Mecanismo de encerramento por falta de memória
Um mecanismo de encerramento por falta de memória termina um processo selecionado sob pressão extrema para que sua memória possa ser recuperada quando ele sai.
O processo encerrado perde seu trabalho, enquanto os recursos liberados podem permitir que outros processos continuem.

N

Número da página virtual
O número da página virtual é a parte mais significativa de um endereço virtual que identifica a página virtual que contém o byte solicitado.
Com páginas de 1.024 bytes, o endereço virtual 5.000 tem número de página virtual 4 e deslocamento 904.
Número do quadro físico
Um número do quadro físico identifica um quadro por seu índice na memória física, em vez do endereço de byte do início do quadro.
Para páginas de 4 KiB, o número de quadro físico 3 identifica o quadro que começa no endereço de byte 12.288.

P

Página
Uma página é um bloco de tamanho fixo de endereços virtuais que é mapeado como uma unidade para um quadro físico de mesmo tamanho.
Uma página virtual de 4 KiB pode ocupar o quadro 12 mesmo que a próxima página virtual ocupe o quadro 3.
Página de código compartilhada
Uma página de código compartilhada é uma página física de instruções de programa mapeada como somente para leitura no espaço de endereçamento de mais de um processo.
Várias instâncias de um editor podem usar uma cópia residente da mesma página de código por meio de PTEs diferentes.
Página grande
Uma página grande é um mapeamento maior que o tamanho de página base, que pode encerrar um percurso hierárquico em uma entrada de nível superior.
Uma entrada de diretório x86-64 pode mapear diretamente uma página de 2 MiB e dispensar a consulta à tabela mais baixa.
Página limpa
Uma página limpa não tem alterações pendentes segundo seu controle de estado de modificação; descartá-la com segurança ainda exige conteúdo recuperável ou regenerável.
Código não modificado pode ser descartado e depois recarregado de seu executável sem uma nova escrita.
Página vítima
Uma página vítima é uma página residente selecionada para remoção para que seu quadro físico possa ser reutilizado para o conteúdo de outra página.
OPT escolhe a vítima residente com o próximo uso mais distante na sequência futura conhecida.
Paginação de cinco níveis
A paginação de cinco níveis acrescenta um nível superior de tabela em processadores x86-64 compatíveis, permitindo 57 bits de endereço virtual implementados quando selecionada.
Ativar o nível extra acrescenta outro índice de nove bits antes dos quatro índices inferiores conhecidos.
Paginação por demanda
A paginação por demanda fornece uma página quando uma referência precisa dela pela primeira vez, evitando a necessidade de preparar todas as páginas antes do início da execução.
Um programa pode começar a ser executado enquanto páginas que ainda não acessou permanecem sem conteúdo residente.
Percurso da tabela de páginas
Um percurso da tabela de páginas segue entradas de mapeamento indexadas a partir da raiz selecionada até uma entrada final que identifica a página física solicitada.
Um percurso de dois níveis lê uma PDE e uma PTE antes que o processador acesse os dados solicitados.
PML4
Uma PML4 é a tabela de nível superior na paginação x86-64 de quatro níveis, selecionada por meio de CR3 e indexada pelos bits 47–39 do endereço virtual.
A entrada da PML4 leva a uma tabela de ponteiros para diretórios antes que o percurso alcance o diretório e os níveis finais.
Ponteiro do relógio
Um ponteiro do relógio marca o próximo quadro a examinar durante a substituição pelo relógio e avança conforme candidatas têm seus bits limpos ou são substituídas.
Após o relógio substituir a página em um quadro, o ponteiro do relógio avança para o próximo quadro do anel.
Preenchimento com zeros sob demanda
O preenchimento com zeros sob demanda fornece memória preenchida com zeros no primeiro uso, em vez de alocar e limpar antecipadamente todas as páginas reservadas.
Uma página recém-acessada da área de alocação dinâmica pode ser fornecida sem leitura de disco, ocultando os bytes antigos de um quadro reciclado.

Q

Quadro de página
Um quadro de página é um bloco de tamanho fixo de memória física que pode conter uma página virtual do tamanho correspondente.
O sistema operacional pode usar qualquer quadro livre de 4 KiB para conter uma página de 4 KiB recém-necessária.

S

Sequência de referências
Uma sequência de referências é uma sequência ordenada de números de página usada para simular acertos, faltas e escolhas de vítimas de uma política de substituição.
A mesma sequência de referências e os mesmos quadros iniciais permitem comparar FIFO e LRU em condições iguais.
Sistema híbrido de segmentação e paginação
Um sistema híbrido de segmentação e paginação dá a cada segmento uma tabela de páginas com limite, omitindo entradas para lacunas virtuais entre segmentos.
Tabelas separadas para a área de alocação dinâmica e a pilha economizam entradas da lacuna, mas podem exigir alocações de tabela de tamanhos diferentes.
Substituição aleatória
A substituição aleatória escolhe uma vítima residente ao acaso, evitando a ordenação por recência e produzindo resultados diferentes entre execuções.
Escolhas aleatórias podem superar LRU em média em um ciclo maior que a capacidade, mas uma execução ainda pode ter azar.
Substituição da página menos frequentemente usada
A substituição da página menos frequentemente usada seleciona a página com a menor frequência de acessos contada, o que pode favorecer páginas que foram populares há muito tempo.
Sem envelhecimento, uma página antes muito usada pode permanecer enquanto uma página útil de uma nova fase é removida.
Substituição da página menos recentemente usada
A substituição da página menos recentemente usada remove a página residente cujo acesso mais recente é o mais antigo, atualizando a recência quando uma referência resulta em acerto.
Um acerto em uma página que chegou há muito tempo a protege na LRU, embora ela continue antiga na fila de FIFO.
Substituição FIFO
A substituição FIFO remove a página residente carregada há mais tempo, mantendo a ordem de chegada sem atualizá-la nos acertos.
Uma página usada com frequência ainda pode ser vítima de FIFO se chegou antes de todas as outras páginas residentes.
Substituição global
A substituição global permite que um processo que causa uma falta remova uma página pertencente a outro processo, compartilhando o conjunto de quadros com flexibilidade.
Um processo em crescimento pode aumentar a taxa de faltas de outro ao tomar quadros que continham suas páginas.
Substituição local
A substituição local limita a seleção de vítimas à própria alocação de quadros do processo que causou a falta, limitando remoções entre processos.
Uma alocação de quatro quadros ainda não pode conter um conjunto de trabalho de seis páginas apenas porque a substituição é local.
Substituição ótima
A substituição ótima remove a página necessária no futuro mais distante e fornece a contagem mínima de faltas para uma sequência de referências totalmente conhecida.
OPT é uma referência de comparação em simulações porque um sistema operacional não pode conhecer os acessos futuros de um programa arbitrário.
Substituição pelo algoritmo do relógio
A substituição pelo algoritmo do relógio percorre um círculo de quadros, limpando bits de referência definidos e removendo a primeira candidata encontrada com um bit limpo.
Uma página com bit de referência 1 recebe outra chance quando o ponteiro limpa seu bit e avança.

T

Tabela de páginas
Uma tabela de páginas é uma estrutura gerenciada pelo sistema operacional que registra os mapeamentos virtuais para físicos de um processo e as informações de acesso.
Trocar a tabela de páginas atual permite que dois processos usem o mesmo endereço virtual para dados diferentes.
Tabela de páginas com dispersão
Uma tabela de páginas com dispersão localiza registros de mapeamento por meio de uma função de dispersão aplicada à identidade da página virtual, com tratamento adicional quando chaves colidem.
Uma consulta por dispersão pode encontrar um mapeamento de processo e VPN sem examinar cada entrada de uma estrutura invertida.
Tabela de páginas invertida
Uma tabela de páginas invertida tem uma entrada por quadro físico do sistema, registrando a identidade do espaço de endereçamento e a página virtual que o ocupa.
Com 16 GiB de RAM e quadros de 4 KiB, uma tabela estritamente invertida tem 4.194.304 entradas de quadro.
Tabela de páginas linear
Uma tabela de páginas linear é um array com uma entrada para cada página virtual possível, usando o número da página virtual como índice.
Uma tabela linear completa de 32 bits com páginas de 4 KiB e entradas de 4 bytes ocupa 4 MiB por processo.
Tabela de páginas multinível
Uma tabela de páginas multinível é uma hierarquia de tabelas indexadas que aloca ramos de nível inferior apenas onde os mapeamentos de endereço precisam deles.
Uma faixa virtual não usada pode ser representada por um ramo ausente em vez de milhares de entradas finais não usadas.
Tempo efetivo de acesso
Tempo efetivo de acesso é o tempo médio das referências à memória, ponderado pelas probabilidades, segundo um modelo especificado de custos de acertos, ausências ou faltas.
Uma taxa de acerto na TLB de 98% resulta em 102 ns quando acertos levam 100 ns e ausências resolvidas levam 200 ns.
TLB gerenciada por hardware
Uma TLB gerenciada por hardware é preenchida novamente pelo hardware do processador, que percorre uma tabela de páginas de formato definido pelo hardware quando falta uma tradução.
Uma ausência comum na TLB do x86 pode ser tratada sem entrar em um tratador de preenchimento do sistema operacional.
TLB gerenciada por software
Uma TLB gerenciada por software usa um tratador de exceções do sistema operacional para encontrar uma tradução ausente e instalá-la com instruções privilegiadas.
Um tratador clássico de preenchimento do MIPS retorna para que o processador possa executar novamente a instrução que causou a ausência.

U

Unidade de gerenciamento de memória
Uma unidade de gerenciamento de memória é o hardware do processador que traduz endereços e aplica as permissões de mapeamento durante referências à memória.
A MMU pode rejeitar uma escrita por meio de uma tradução somente para leitura mesmo quando a consulta à TLB resulta em acerto.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar