Um processo pode alocar memória cache de forma que o kernel possa aproveitá-lo quando necessário?

1

Estou perguntando especificamente sobre o Linux, mas uma resposta que se aplica ao Unix em geral (ou seja, POSIX ou similar) seria ainda melhor, obviamente.

O Linux usa memória livre (ou seja, aquela memória que ainda não está alocada para processos) para armazenar em cache os metadados do sistema de arquivos (e talvez outras coisas). Quando os processos solicitam memória adicional, esses caches são reduzidos para criar espaço.

Minha pergunta: Existe um método pelo qual um aplicativo pode alocar memória que serve apenas como cache? Ou seja, a alocação é feita sabendo que o kernel pode assumir o controle dessa área de memória de alguma forma quando a memória disponível fica fraca e as alocações de memória de outros processos poderiam não ser atendidas.

    
por Stefan Majewsky 22.11.2017 / 21:01

1 resposta

1

Você talvez possa usar madvise(2) MADV_FREE para isso - ele marca as páginas como disponíveis para recuperação, mas não as descarta imediatamente, e os dados podem ser lidos novamente. Você saberá que as páginas desaparecerão se você recuperar todos os zeros (por página).

    
por 22.11.2017 / 21:09