Clasificacion de fallos de pagina.

Javier Bolaños Molina javierbm en mailcity.com
Mar Ene 11 15:14:12 CST 2000


Que tal Linuxeros ahora regreso con una duda mas existencial que jamas me he encontrado.

Bueno resulta que se esta haciendo una migracion de un sistema distribuido aqui en la escuela, el chunche actual esta corriendo en Solaris/Sparc y el problema con el que me encuentro a la hora de migrarlo a Linux en principio es el siguiente:

La deteccion de fallos de pagina se hace mediante un Signal Handler sobre la seqal SIGSEGV como ya nos imaginaremos este manejador tiene el prototipo siguiente.

void atencion_a_fallos_de_pagina(int sig,int codigo,struct sigcontext* contexto,char* direccion)

Bueno hasta aqui al momento que se detecta el fallo de pagina contexto contiene la informacion de los registros cuando ocurrio el fallo en particular  contexto->sc_pc que es el contador de programa para Sparc. Lo que se hace con sc_pc es obtener la instruccion (instruccion de codigo maquina) mediante una indireccion de apuntador 

 instruccion=*((unsigned long*)contexto->sc_pc);

una vez que se conoce la instruccion se le aplica una mascara para ver si el fallo ocurrio por lectura o por escritura; aqui es donde viene la duda.

Alguien conoce alguna forma de hacer esto en Linux/Intel pues el problema que surge inmediatamente es el de la arquitectura, en Sparc el conjunto de instrucciones es reducido y de el tamaqo de las instrucciones es fijo mientras que en Intel me encuentro con un formato estandar de instruccion que va de 1 hasta 16 bytes y entre prefijos de instruccion, codigo de operacion modo, desplazamiento, etc, etc se vuelve algo muy complejo y la verdad no he encontrado algo en Linux para que me de directamente esa informacisn, lo mas que he encontrado se refiere a la clasifiacisn de si el fallo ocurrio por una pagina faltante o por intentar acceder una direccion no valida esta informacion se obtiene mediante el manejador de seqal alterno que se fija mediante la llamada a 
sigaction que es una forma mas completa de signal.

Les agradeceria si alguien sabe alguna forma de clasificar el tipo de fallos de pagina, pues como se imaginaran de eso depende que acciones tome el sistema distribuido sobre el manejo de las paginas.

Gracias.





LYCOShop is now open. On your mark, get set, SHOP!!!
http://shop.lycos.com/

-- 
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux.org.mx
Para comandos adicionales, envíelo a: ayuda-help en linux.org.mx




Más información sobre la lista de distribución Ayuda