Despejo do cache de disco na memória

1

Digamos que a RAM é 100% usada, algumas por cache de disco e outras por aplicativos. Há muita troca (em um disco rígido disponível). Se o Linux decidir remover uma página que contenha dados do aplicativo, ela será movida para o espaço de troca.

Mas se o Linux decidir remover uma página na RAM que contenha dados do disco em cache, essa página será movida para troca ou simplesmente será excluída?

    
por Tosh 04.03.2016 / 09:12

1 resposta

2

TL; DR Se a página é um cache para leitura de disco, nunca vai trocar.

Sua pergunta significa que você já sabe como funciona a troca (ou melhor, como funciona a memória virtual). Agora, o simples passo crítico para entender o cache de disco é observar que ele é tratado exatamente da mesma maneira. Não há "dados de aplicação" e "cache de disco", é apenas um único mecanismo de memória virtual.

Cada página é suportada pelo armazenamento permanente: em vez de declarar a página como "cache de disco", você também pode declarar "esta página é suportada por / var / spool / mail / root". Em vez de declarar a página como "memória do aplicativo", você também pode declarar "esta página é suportada pelo espaço de troca" (também conhecido como "anônimo" = não é suportado por nenhum arquivo nomeado).

Se a página estiver suja, ela precisará ser salva em seu próprio armazenamento permanente - independente se for um arquivo nomeado ou um espaço de troca. Se a página não estiver suja, significa, por definição, que exatamente os mesmos bytes já estão no armazenamento permanente da página. Não há necessidade de fazer nada - o sistema operacional pode fornecer essa página para reutilização a qualquer momento que seja adequado.

O que chamei aqui é o atributo "suportado por" que as pessoas chamam principalmente de mapeamento de memória e o que descrevi aqui é realmente como mmap funciona.

    
por 04.03.2016 / 09:46

Tags