Pregunta:
Una llamada al sistema fork()
clona un proceso hijo del proceso en ejecución. Los dos procesos son idénticos excepto por su PID.
Naturalmente, si los procesos solo están leyendo de sus montones en lugar de escribir en ellos, copiar el montón sería una gran pérdida de memoria.
¿Se copia el montón de proceso completo? ¿Está optimizado de una manera que solo la escritura desencadena una copia del montón?
Respuesta:
El kernel de Linux implementa Copy-on-Write cuando se llama a fork()
. Cuando se ejecuta la llamada al sistema, las páginas que comparten el padre y el hijo se marcan como de solo lectura.
Si se realiza una escritura en la página de solo lectura, se copia, ya que la memoria ya no es idéntica entre los dos procesos. Por lo tanto, si solo se realizan operaciones de lectura, las páginas no se copiarán en absoluto.