No Windows, como os programas ignoram o cache do sistema operacional?

2

Alguns programas têm a opção de evitar o uso do cache do sistema operacional quando acessam arquivos (por exemplo, Virtualbox e qbittorrent). Eles não precisam de privilégios de administrador, então eles definitivamente não desativam o cache do sistema de arquivos.

Como um programa pode ler / escrever diretamente com o disco e ignorar o cache do sistema operacional, apenas por si mesmo?

    
por Sam 28.06.2017 / 21:57

2 respostas

2

Esta é uma opção da função API de abertura de arquivos do Windows CreateFile .

A opção é chamada FILE_FLAG_WRITE_THROUGH definida como:

Write operations will not go through any intermediate cache, they will go directly to disk.

Para mais informações, consulte:

O link mais recente diz ainda:

The FILE_FLAG_WRITE_THROUGH flag for CreateFile() causes any writes made to that handle to be written directly to the file without being buffered.
[...]
The FILE_FLAG_NO_BUFFERING takes this concept one step further and eliminates all read-ahead file buffering and disk caching as well, so that all reads are guaranteed to come from the file and not from any system buffer or disk cache. When using FILE_FLAG_NO_BUFFERING, disk reads and writes must be done on sector boundaries, and buffer addresses must be aligned on disk sector boundaries in memory.

Não me surpreenderia descobrir que muitos produtos não usam o sinalizador FILE_FLAG_NO_BUFFERING.

    
por 28.06.2017 / 22:16
1

Abra o arquivo com FILE_FLAG_NO_BUFFERING

Veja a função CreateFile em MSDN

    
por 28.06.2017 / 22:06

Tags