As chamadas do sistema POSIX 'read () e write () são atômicas?

Eu estou tentando implementar um índice de banco de dados com base na estrutura de dados (Bligação árvore) e algoritmos sugeridos por Lehman e Yao emeste papel. Na página 2, os autores afirmam que:

O disco é particionado em seções de tamanho fixo (páginas físicas; neste documento, elas correspondem aos nós da árvore).Essas são as únicas unidades que podem ser lidas ou escritas por um processo. [ênfase minha] (...)

(...) um processo pode bloquear e desbloquear uma página de disco. Esse bloqueio dá a esse processo direitos exclusivos de modificação para essa página; também, um processodevo tem uma página bloqueada para modificar essa página. (...)Fechadurasnão impedir que outros processos leiam a página bloqueada. [ênfase minha]

Não estou completamente certo de que minha interpretação está correta (não estou acostumado a ler artigos acadêmicos), mas acho que pode ser concluído a partir das frases enfatizadas que os autores querem dizer que as operações que lêem e escrevem uma página são consideradas "atômicas". , no sentido de que, se um processo A já começou a ler (resp. escrita) uma página, outro processo B pode não começar a escrever (resp. leitura) essa mesma página até que A conclua sua operação de leitura (resp. escrita) . Múltiplos processos lendo simultaneamente a mesma página são, é claro, uma condição legítima, assim como múltiplos processos executam operações arbitrárias em páginas exclusivamente diferentes (processo A na página P, processo B na página Q, processo C na página R, etc.). ).

Minha interpretação está correta?

Posso assumir POSIX 'read() ewrite() as chamadas do sistema são "atômicas" no sentido descrito acima? Posso confiar nessas chamadas de sistema com alguma lógica interna para determinar se umread() ouwrite() a chamada deve ser temporariamente bloqueada com base na posição do descritor de arquivo e o tamanho especificado do trecho a ser lido ou escrito?

Se a resposta às perguntas acima for "Não", como devo rolar meu próprio mecanismo de bloqueio?

questionAnswers(2)

yourAnswerToTheQuestion