Questão Falhas de página sem arquivo de swap?


encontrei a pergunta óbvia e também é irmão maior no ServerFault.

Mas a minha pergunta é diferente: Se as falhas de página são os momentos em que o sistema operacional precisa carregar algo do arquivo SWAP, por que recebo falhas de página mesmo se eu o tiver desativado completamente?

Ou eu entendi mal o que é uma falha de página?


4


origem




Respostas:


Um pouco velho, mas confira esta Artigo do MSDN.

Descreve os dois tipos de falhas de página.

Faltas duras é o que você está pensando - esses são os dados que não estão na RAM e precisam ser extraídos do arquivo de troca. Eles prejudicam o desempenho (sendo 10 000 vezes mais lentos do que o acesso à RAM para discos rígidos mecânicos).

Falhas suaves, no entanto, são acionados por páginas que o programa solicita para ser zero (demanda zero páginas), quando uma página é gravada pela primeira vez (se era uma cópia na página de gravação) ou se a página já está na memória em outro lugar (geralmente quando compartilhado entre vários processos). Estes não são tão ruins para o desempenho.

Então, você pode esperar continuar recebendo suave falhas de página, mesmo sem um arquivo de paginação.


5



Além disso, alguns sistemas * nix não carregam programas inteiros no início. As seções são carregadas conforme necessário (por falha de página) quando uma parte não residente é chamada. Não sei se o Windows também faz isso, eu suspeito que não da quantidade de RAM que os aplicativos levam no início. - Brian Knoblauch
O Windows exige a paginação de executáveis ​​e bibliotecas - é apenas que muitos deles também decidem sugar uma tonelada de outros recursos no início também. Além disso, programas de compactação exe como UPX irão quebrar a paginação de demanda, porque agora o stub UPX deve descompactar todo o executável na RAM antes que o carregador possa ser acionado. - afrazier


O ponto que você está perdendo é que uma falha de página não envolve necessariamente um arquivo de troca. Você também pode mapear arquivos arbitrários; isto é, diga ao SO para retornar uma região de memória com (uma parte de) um determinado arquivo. Isso significa que quando o programa acessa uma página de memória naquela região que ainda não foi carregada, ela é lida da posição correspondente no arquivo; e quando uma página de memória é escrita (assumindo que a região é gravável), os dados são eventualmente gravados de volta no arquivo original, e não na troca.

Nos sistemas operacionais modernos, essa técnica é usada para carregar código executável (de executáveis ​​e bibliotecas), portanto, você deve esperar falhas de leitura para ocorrer mesmo sem arquivo de permuta.


6