hola gente: tengo una duda sobre memoria virtual y paginación: viendo ejercicios de exámenes (en particular el ej 2 de julio de 2014) me queda claro que si se da un page faul, lo que hay que hacer es buscar un marco libre, descargar ese marco a disco, buscar el contenido de ese marco en disco y ponerlo en el marco víctima, luego actualizar los bits de validez y las tablas y reiniciar la instrucción. Ahora me queda la duda: supongamos que tengo un proceso como el de ese examen, con 1 tabla de primer nivel y 2 de segundo nivel, todas con 4 entradas c/u, el proceso tiene 4 páginas. Si el proceso pretende acceder al contenido de la dirección (1,0,2) [donde 2 sería el desplazamiento; 0, el índice en la tabla de 2o nivel y 1 en la tabla de 1er nivel]. Supongamos que desde la última vez que accedió a ese contenido, ahora ya está inválida la página. Entonces se produce un page faul. Pero con el procedimiento que nos dan en el curso, ¿cómo se asegura de acceder al contenido que buscaba? porque el contenido que va a tener esa página va a ser el mismo de la página que se descarga a disco y eso no depende del código sino del algoritmo de reemplazo... Adjunto la solución de ese examen para que se entienda mejor que es lo que quiero decir. Desde ya agradezco la ayuda!
[Examen Julio 2014 - Ej 2] Memoria Virtual - Paginación
Número de respuestas: 2
En respuesta a Gustavo Chalela Nuñez
Re: [Examen Julio 2014 - Ej 2] Memoria Virtual - Paginación
Algún profe puede responder? Todos los lugares que leo explican como se realiza el cambio (creo que lo tengo claro) pero no responden a ¿cómo, si voy a buscar una dirección, termino trayendo otra?
Gracias
En respuesta a Gustavo Chalela Nuñez
Re: [Examen Julio 2014 - Ej 2] Memoria Virtual - Paginación
de Jorge Merlino -
No miré el ejercicio pero si la página donde se produce el page fault no está, en la misma tabla de páginas debería quedar registrado donde ir a buscar el contenido de esa página (ya sea en el swap o en un archivo del disco)