A entrada 'Em cache' está contando o número de páginas marcadas como 'compartilhadas'. Os mapeamentos fornecidos são marcados como compartilhados.
O kernel internamente não vê nenhuma diferença na memória que é definida com o sinalizador compartilhado e um arquivo que simplesmente foi criado pelo sistema operacional e armazenado em cache (todos os arquivos no cache são efetivamente mapeamentos compartilhados).
O fato de isso ser apoiado por / dev / zero é irrelevante. A razão pela qual eles são compartilhados é quase certamente porque os mesmos dados de memória precisam ser disponibilizados para todos os processos filhos que modificam os dados.
De uma perspectiva semântica, ele se comporta como memória normalmente alocada (ou memória anônima), dado que realmente não há nenhum arquivo utilizável para o qual você possa remover páginas (/ dev / zero é um arquivo que você não pode salvar) e as páginas mova-se para swap se eles não estiverem em uso.
Então - confusamente - as contas de dados são 'armazenadas em cache', mas na verdade são tratadas como memória anonimamente apoiada.
Você pode ver isso exatamente no seu meminfo:
root@st3:/proc/31633# cat /proc/meminfo
MemTotal: 24690512 kB
...
Cached: 19504260 kB
...
Active(anon): 3734376 kB
Inactive(anon): 18973184 kB
Active(file): 227128 kB
Inactive(file): 365828 kB
...
Mapped: 19237684 kB
Shmem: 18985464 kB
...
O mesmo comportamento ocorre se você estiver usando memória compartilhada IPC também.
'file' é realmente o que é suportado, 'anon' é o que não tem um ficheiro que o suporte - como os seus mapeamentos.