Você precisa entender como os dados são gravados no disco.
Você tem alguns subsistemas envolvidos no processo de gravação dos dados do processo para o disco físico.
Normalmente, os processos estão pedindo ao kernel (o SO) para gravar algo no disco. O próprio kernel também pode gravar alguns dados no disco, e. como uma operação de troca.
As páginas de memória que precisam ser gravadas no disco são mantidas em uma região da memória física chamada cache do sistema de arquivos e são chamadas de páginas sujas e serão gravadas no disco se uma das condições for verdadeira:
- o processo está pedindo ao kernel para gravar os dados no disco usando FlushFileBuffers chamam
- depois de um certo tempo desde a última gravação disco
- se não houver memória livre para o cache do sistema de arquivos (é uma decisão complexa feita pelo kernel se ele deve descartar páginas não sujas, gravar em discos sujos, trocar páginas de memória inativas, etc ...)
Agora os dados vão para o disco, mas o subsistema de disco tem dois componentes que são importantes para essa explicação:
- o controlador de disco, que é a placa eletrônica no disco
- a memória permanente que pode ser discos magnéticos ou memória flash
Aqui estão alguns motivos pelos quais processos ou SO precisam liberar os dados no disco:
- eles têm um diário para um sistema transacional como um banco de dados ou sistema de arquivos e precisam impor consistência e integridade para o dados gravados no disco.
- eles concluíram uma operação importante, como a criação de um arquivo e um buffer de disco, para garantir que o arquivo inteiro esteja no disco
- programação ruim
A configuração atual é o melhor compromisso entre desempenho e segurança, a menos que você tenha um no-break (fonte de alimentação ininterrupta).