E esse travamento do sistema acontece enquanto seu arquivo está sendo gravado pelo seu programa?
Além disso, é o caso de que quando o programa grava no arquivo, ele não está gravando diretamente no disco, mas sim na memória?
Porque parece que seria mais eficaz para o sistema transferir os dados gravados para a memória, e então quando é completamente escrito para transferir as coisas de volta para o disco.
Em qualquer caso, como o disco recupera dados se o programa grava diretamente no disco ou se o arquivo final está sendo copiado pelo sistema para vários locais no disco?
filesystems
Kaitlyn Mcmordie
fonte
fonte
Respostas:
Nos sistemas operacionais modernos, o acesso a arquivos é armazenado em buffer. Seu programa grava em uma parte da memória que é mantida pelo sistema operacional e, quando essa área fica cheia, ou quando você fecha o arquivo, o buffer é gravado no disco. Dessa forma, você pode escrever vários gigabytes de dados aleatórios em um arquivo se quiser, mas não consome muita memória enquanto o faz. Ao mesmo tempo, o subsistema de disco é livre para fazer outras coisas enquanto seu programa está escrevendo alguns bytes de cada vez.
Depende do sistema operacional e do sistema de arquivos específico. Frequentemente, os dados são gravados em um novo arquivo no disco. Quando o programa fecha o arquivo, o buffer é liberado e o diretório é atualizado para apontar para o novo arquivo, em vez do antigo, que pode ser excluído posteriormente. Isso evita corrupção de dados se o sistema falhar durante a gravação - a alteração do diretório no último momento cria a ilusão de gravações "atômicas".
Você pode querer ler sobre sistemas de arquivos registrados e sistemas de arquivos transacionais .
Outras estratégias também são possíveis. Livros inteiros estão disponíveis em sistemas de arquivos e tolerância a falhas.
Finalmente, às vezes o sistema de arquivos não pode recuperar seu arquivo. Às vezes não pode se recuperar de jeito nenhum. As estratégias que mencionei acima são respostas aos tipos de problemas que você está perguntando e, até onde eu sei, elas são muito eficazes em manter o disco em um estado consistente. Os sistemas de arquivos mais antigos não eram tão bons, e se você perdesse energia apenas quando o disco estivesse sendo gravado, o arquivo ou o disco inteiro poderia ficar comprometido. Costumava haver um grande mercado para utilitários de reparo de disco, como o Norton Disk Doctor. Esse mercado parece ter diminuído com implementações de sistema operacional mais confiáveis, mas alguns desses produtos ainda estão disponíveis.
fonte
A maioria dos sistemas de arquivos modernos registrado . Isso significa que há um diário de alterações no arquivo / sistema de arquivos. Em falhas, a última entrada pode ser revertida se não estiver marcada como concluída; ou se houver informação suficiente, pode ser promulgada.
A Wikipédia tem isso:
No Windows (vista e além), há uma tecnologia chamada Volume Shadow Copy (VSS), que faz o sistema de arquivos agir de uma maneira "copy-on write", ou seja, quando você escreve em um arquivo, esse arquivo antigo não está sendo destruído, e é de fato mantido intacto. Isso permite a restauração após falhas, mas, mais importante, também permite acesso à última versão estável do arquivo no caso de um bloqueio de arquivo e um processo (como um serviço de backup) precisa ler esse arquivo.
fonte