"Si la memoria principal no es lo suficientemente grande para cargar con el programa se emplea memoria virtual y ¿ahi entra en juego la secundaria (disco duro)?
"
Te equivocas, es un error muy común confundir la memoria virtual, con el archivo de paginación.
La memoría virtual, significa que cuando se ejecuta un programa, cree que toda la memoria es solo para él. En Windows de 32 bits, si no recuerdo mal, el programa cree que tiene 2gb de memoria solo para él, en otros SO no se de cuanto es la memoria virtual aunque la memoria esté realmente compartida por otros programas, y ni de coña el sistema tenga 2 gigas por cada programa.
Cuando un programa usa la memoria, el sistema operativo se encarga de forma transparante, de que el programa acceda a la memoria real.
Por ese se llama memoria virtual, por que el programa, realmente no tiene ni idea de en que parte física de la memoria está la información, el se cree que tiene 2 gb solo para él, y trabaja con ello.
Otra cosa es el archivo de paginación. Cuando el sistema operativo no tiene memoria suficiente para todos los programas que se están ejecutando, coge partes de la memoria que no se están usando en ese momento, y las mueve al disco duro. Si en algún momento esa información que ha quitado de la RAM y ha movido al disco duro, vuelve a ser necesaria, hace el proceso inverso, coge otrra parte de la RAM que no se eté usando, y la mueve al archivo de página para hacer hueco, y coge la parte del archivo de página que se va a usar, y la mueve a la memoria.
#5:
La CPU nunca accede al archivo de páginación, para la CPU el disco duro es disco duro, no es memoria, solo considera memoria su cache y la RAM.
Es el sistema operativo el que se encarga de mover páginas del archivo de paginación a la RAM para que estén disponibles para la CPU.