I assume it is not Total Commander that is caching the directory structure, or is it?
Provavelmente não. Se você tiver um grande número de arquivos, poderá ver o mesmo efeito se abrir um prompt de comando e digitar algo como dir c:\abc.def /s
. Não é provável que você tenha arquivos com esse nome, mas leva muito mais tempo para concluir o processo. primeira vez do que seria necessário se você executá-lo uma segunda vez imediatamente depois.
It seems like an OS feature to me, or a hard drive cache. Where and how exactly is it cached then? (ie. By which component's which mechanism, in which structure?)
O Windows / NTFS armazenará os itens em cache e também haverá um cache no controlador do disco rígido.
How do the system know that the cache is up-to-date or not?
Porque a única maneira de gravar no disco rígido é usando rotinas que conhecem e, portanto, atualizam ou invalidam o cache. Para as janelas, as rotinas são provavelmente o driver de dispositivo NTFS, enquanto que para o disco rígido, é o controlador de disco.
If it can be cached entirely, why is it not cached by default?
Porque o cache é melhor usado para outras coisas. Para armazená-lo em cache por padrão significaria
-
Toda vez que o computador é iniciado, ele teria que ler e armazenar informações em todos os arquivos do disco rígido, independentemente de ser necessário. Isso pode adicionar alguns segundos ao seu tempo de inicialização. Também é muito comum as pessoas terem milhões de arquivos, o que significa que o tempo pode ser significativamente maior.
-
Essa memória não está disponível para armazenar em cache qualquer outra coisa, especialmente os arquivos em que você está realmente trabalhando.
-
O que acontece se o seu perfil / documentos estiverem armazenados em um servidor. Você quer que o sistema aguarde enquanto ele puxa as informações em todos os seus arquivos pela rede?
Lembre-se também que só porque tudo pode ser armazenado em cache, não significa que deva ser armazenado em cache. Às vezes, pode levar mais tempo para acessar informações em um cache extremamente grande que em um cache menor, o que significa que o cache em excesso pode realmente atrasá-lo. (Por isso quero dizer que é mais lento do que quando se usa cache menor, mas ainda seria mais rápido do que usar sem cache)