page fault

page fault

de Alexis Alfonso -
Número de respuestas: 3

Leyendo el teórico no me queda claro si la rutina de servicio de fallos de página del SO empieza cuando:


1- Localiza la pagina deseada en el disco

2- Busca un marco libre...

etc


O si antes de esto el servicio incluye la parte donde se chequea el PCB del proceso para ver si el page fault se debe a una referencia ilegal o a que la pagina no fue cargada en la MP. 

En respuesta a Alexis Alfonso

Re: page fault

de Gustavo Chalela Nuñez -

Si el proceso intenta acceder a una página no valida (no es error de

direccionamiento), causa una trap de fallo de página (page fault) y le transfiere el

control al SO y se lleva a cabo el siguiente procedimiento:

1. Se consulta una tabla interna (usualmente en el PCB del proceso) para ver

si la referencia es un acceso legal o no a la memoria.

2. Si la referencia es ilegal, se termina el proceso por tratarse de un fallo de

direccionamiento. Si la referencia es legal pero la página no se había

cargado, es cargada.

3. Se busca un marco libre donde cargar la página.

4. Se planifica una operación de disco para leer la página deseada y colocarla

en el marco libre.

5. Al termina la lectura, se modifica la tabla consultada diciendo que la página

ya es válida (está cargada).

6. Reiniciamos la instrucción que se interrumpió por la trap de dirección no

valida. Ahora el proceso puede acceder a la página como si nada hubiese

pasado.

(Extraído de las notas de D.S.)

En respuesta a Gustavo Chalela Nuñez

Re: page fault

de Alexis Alfonso -

Está bien, pero en las notas de Memoria Virtual (pagina 12) dice que la rutina de atención al page fault consiste en:

1- Se busca un frame libre en memoria principal, sino hay ejecuta un algoritmode reemplazo

2- Se realiza un operación de lectura sobre el disco que guarda la página. 

La página se carga en el frame obtenido en el paso anterior.

3- Se actualiza la tabla de página e información en las estructuras del PCB del proceso para marcar que la página está disponible en memoria principal.

4- Finalmente, se retoma el control a la instrucción que fue interrumpida debido al fallo de página. 


Es decir, según las notas, la rutina no incluye el control sobre el PCB del proceso acerca de la validez de la dirección.


En respuesta a Alexis Alfonso

Re: page fault

de Jorge Merlino -

Las diapositivas son correctas.

Lo que asume la diapositiva es que tenes como dos interrupciones diferentes, a una la llama page fault (página 11) y a la otra trap de fallo de página (página 12). La primera indica que la dirección está fuera de rango y hay que matar al proceso y la segunda indica que la dirección es correcta pero la página tiene el bit de validez apagado y hay que cargarla.

Lo que contestó el compañero parece medio redundante porque los pasos 1 y 2 no serían necesarios si se sabe que el acceso a memoria no es error de direccionamiento. Es como si el SO estuviera verificando que la MMU no se equivocó en la interrupción que generó.