O que esse código faz é acessar o bloco de memória especificado pelos parâmetros ptr e size em um padrão incomum: lê byte zero, depois o byte com um deslocamento de 16 páginas, depois o byte um, depois um byte com um deslocamento de 16 páginas mais uma e assim por diante, alternando entre um byte e sua contraparte 16 páginas à frente.
Esse padrão de acesso específico no Windows 95 derrotou o algoritmo de detecção "varredura de memória sequencial".
Lembre-se de que os computadores da época do Windows 95 tinham 4 MB de RAM. Suponha que você esteja trabalhando em um documento por um longo tempo. Finalmente, você está pronto e fecha a janela ou a minimiza. Boom, agora sua área de trabalho está visível e o bitmap do papel de parede precisa ser paginado. Se a tela tiver 1024 × 768 a 16 bits por pixel, isso significa 1,5 MB de memória. Paginar em 1,5 MB de memória significa que o bitmap significa expulsar 1,5 MB de memória sendo usado para outras coisas, e isso é muita memória para uma máquina que possui apenas 4 MB para trabalhar (especialmente porque muitos desses 4 MB pertencem a outras coisas) que não é elegível para ser paginado). O fenômeno que vimos foi que repintar sua área de trabalho liberaria a maior parte de sua memória.
E então a próxima coisa que você faz é provavelmente iniciar um novo aplicativo, que cubra o papel de parede, para que a memória do papel de parede não seja mais necessária. Então, basicamente eliminamos toda a memória do seu sistema para lidar com um enorme bloco de memória que foi acessado apenas uma vez.
O truque usado pelo Windows 95 era observar seu padrão de falhas de página e, se percebesse que você estava fazendo acesso seqüencial à memória, começou a marcar a memória como 16 páginas atrás do acesso atual como não acessado recentemente . No caso de uma varredura seqüencial direta, isso significa que todo o buffer percorre uma janela de 64 KB de memória, independentemente do tamanho do buffer. Com esse truque, um buffer de 4 MB acaba consumindo apenas 64 KB de memória, em vez de usar toda a memória do sistema.
A Sys_PageIn
função anula especificamente o detector de varredura seqüencial, voltando intencionalmente 16 páginas e acessando a página novamente. Isso faz com que ele seja marcado como usado recentemente , neutralizando o usado recentemente que o detector de varredura seqüencial havia feito. Resultado: todas as páginas de memória são marcadas como usadas recentemente e não são mais as candidatas principais a serem paginadas.