write una tipos sistema reglas read operativo mecanismo manejo mac llamadas llamada interfaz como calls c io filesystems operating-system

c - una - reglas de llamadas al sistema



¿La llamada al sistema de escritura escribe datos en el disco directamente? (1)

La forma en que se descargan los almacenamientos intermedios stdio depende de la biblioteca C estándar que utilice. Para citar de la página del manual de Linux :

Tenga en cuenta que fflush () solo vacía los búferes de espacio de usuario proporcionados por la biblioteca C. Para garantizar que los datos se almacenen físicamente en el disco, los búferes del kernel también se deben purgar, por ejemplo, con sync (2) o fsync (2).

Esto significa que en un sistema Linux, utilizando fflush o desbordamiento, el búfer llamará a la función de write . Pero el sistema operativo puede mantener los búferes internos y no escribir los datos en el dispositivo. Para asegurarse de que los datos fflush realmente escritos en el dispositivo, use tanto fflush como fsync bajo nivel.

Editar: Respuesta reformulada.

He leído un par de preguntas ( aquí ) relacionadas con esto, pero todavía tengo algo de confusión.

Tengo entendido que la llamada al sistema de escritura pone los datos en la Buffered Cache almacenada (cachés del sistema operativo como se indica en esa pregunta). Cuando el Buffered Cache se llena, se escribe en el disco.

Buffered IO es una optimización adicional además de esto. Se almacena en caché en los C RTL buffers y cuando se llenan, se emite una llamada al sistema de write para mover el contenido a la Buffered Cache . Si utilizo fflush , los datos relacionados con este archivo particular que está presente en los C RTL buffers y Buffered Cache se envían al disco.

Es mi entendimiento correcto?