Cuando carga un programa, ¿se carga primero el programa en el espacio de direcciones virtuales o en el espacio de direcciones físicas primero?

En un sistema moderno de memoria virtual (Android, iOS, Linux, Mac OS), la relación entre la memoria virtual y física está estrechamente acoplada y casi todos (si no todos) los accesos de memoria pasan por la memoria virtual. En carga, la totalidad de la imagen binaria de su programa se asigna a la memoria virtual. Luego, cuando accede a su programa, un mecanismo llamado paginación de demanda carga la imagen binaria en la memoria física del disco, página por página.

La memoria virtual no contiene físicamente ningún dato. Puedes verlo como una abstracción. Los datos se asignan a la memoria virtual, pero solo con la memoria física se carga físicamente y, por lo tanto, está presente . En este punto, decimos que la memoria virtual está respaldada por la memoria física.

Por lo tanto, para responder a su pregunta, su programa primero se asigna a la memoria virtual. La memoria física llega más tarde, siempre y cuando acceda a una página determinada.