¿Son los sistemas de lectura () y escritura () de POSIX atómicos?

Estoy tratando de implementar un índice de base de datos basado en la estructura de datos (Benlazar árbol) y los algoritmos sugeridos por Lehman y Yao eneste papel. En la página 2, los autores afirman que:

El disco está dividido en secciones de tamaño fijo (páginas físicas; en este documento, corresponden a los nodos del árbol).Estas son las únicas unidades que se pueden leer o escribir mediante un proceso. [énfasis mío] (...)

(...) se permite un proceso para bloquear y desbloquear una página de disco. Este bloqueo le otorga a ese proceso derechos de modificación exclusivos para esa página; tambien, un procesodebe tener una página bloqueada para modificar esa página. (...)Cabellosno haga evitar que otros procesos lean la página bloqueada. [énfasis mío]

No estoy completamente seguro de que mi interpretación sea correcta (no estoy acostumbrado a leer artículos académicos), pero creo que se puede concluir a partir de las oraciones resaltadas que los autores quieren decir que las operaciones que leen y escriben una página se consideran "atómicas". , en el sentido de que, si un proceso A ya ha comenzado a leer (resp. escribiendo) una página, es posible que otro proceso B no comience a escribir (resp. lectura) esa misma página hasta que A termine de realizar su operación de lectura (resp. escritura) . Por supuesto, varios procesos que leen simultáneamente la misma página es una condición legítima, ya que tiene múltiples procesos que realizan simultáneamente operaciones arbitrarias en páginas exclusivamente diferentes (proceso A en la página P, proceso B en la página Q, proceso C en la página R, etc.) ).

¿Es mi interpretación correcta?

¿Puedo asumir POSIX 'read() ywrite() ¿Las llamadas al sistema son "atómicas" en el sentido descrito anteriormente? ¿Puedo confiar en que estas llamadas al sistema tengan alguna lógica interna para determinar si unaread() owrite() ¿Se debe bloquear temporalmente la llamada según la posición del descriptor de archivo y el tamaño especificado del fragmento a leer o escribir?

Si la respuesta a las preguntas anteriores es "No", ¿cómo debo hacer rodar mi propio mecanismo de bloqueo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta