Que cache faz uma busca de arquivo mais rápida pela segunda vez exatamente?

3

No Windows, em uma partição de HDD com Total Commander, se eu fizer uma pesquisa de arquivo na raiz do sistema de arquivos, por exemplo, C:\ , levará um tempo considerável: será exibido à medida que percorre toda a estrutura de diretórios (aparentemente em profundidade).

No entanto, se eu fizer outra pesquisa novamente, depois que eu terminar a primeira, da mesma raiz, ela será muito mais rápida. Com base no ruído (físico) ausente, acho que o HDD não está envolvido desta vez, portanto, a estrutura de diretório / arquivo foi armazenada em cache.

Eu assumo que não é o Total Commander que está armazenando em cache a estrutura do diretório, ou é? Parece um recurso do sistema operacional para mim ou um cache de disco rígido.

Onde e como exatamente é armazenado em cache? (ie. Por qual componente qual mecanismo, em qual estrutura?) Como o sistema sabe que o cache está atualizado ou não? Se puder ser totalmente armazenado em cache, por que não é armazenado em cache por padrão?

    
por n611x007 02.04.2013 / 13:38

2 respostas

3

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

  1. 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.

  2. Essa memória não está disponível para armazenar em cache qualquer outra coisa, especialmente os arquivos em que você está realmente trabalhando.

  3. 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)

    
por 02.04.2013 / 15:26
0

O que você está se referindo é chamado de indexação. A maioria das pesquisas tem um índice que é construído ao longo do tempo para acelerar as pesquisas. Iniciar - > A pesquisa tem um índice, o TotalCommander parece usar o seu próprio, o Google tem um para todas as páginas da Web que você pode encontrar através do Google.

Existem várias maneiras de acelerar um índice e pesquisar um sistema de arquivos. O índice será mais rápido do que re-busca e novas chamadas recursivas para cavar através de um diretório.

    
por 02.04.2013 / 13:51