Arquivos mapeados na memória e gravações atômicas de blocos únicos

Se eu ler e gravar um único arquivo usando APIs de E / S normais, as gravações serão garantidas como atômicas por bloco. Ou seja, se minha gravação modifica apenas um único bloco, o sistema operacional garante que todo o bloco seja gravado ou nada.

Como obtenho o mesmo efeito em um arquivo mapeado na memória?

Os arquivos mapeados na memória são simplesmente matrizes de bytes, portanto, se eu modificar a matriz de bytes, o sistema operacional não terá como saber quando considero uma gravação "concluída", para que possa (mesmo que isso seja improvável) trocar a memória apenas na no meio da minha operação de escrita de bloco e, na verdade, escrevo meio bloco.

Eu precisaria de algum tipo de "entrar / sair da seção crítica" ou de algum método para "fixar" a página de um arquivo na memória enquanto escrevia nele. Existe algo assim? Em caso afirmativo, isso é portátil em sistemas POSIX e Windows comuns?

questionAnswers(1)

yourAnswerToTheQuestion