¿QUE ES PAGINACION?Para satisfacer los requesitos que debe cumplir el gestor de memoria del sistema operativo.
La paginacion surge como un intento de paliar estos problemas sofisticando apreciablemente
el hardware de gestion de memoria del procesador aumentando considerablemente la cantidad de informacion
de traduccion que se almacena por el proceso.
como su nombre lo indica, la unidad basica de este tipo de esquema de pagina. la pagina corresponde
con una zona de memoria contigua de un determinado tamaño. por motivo de eficiencia en la traduccion
este tamaño debe ser potencia de 2(un tamaño de pagina de 4KB es un valor bastante tipico).
El mapa de memoria de cada proceso se considera dividido en pagina. A su vez la memoria principal
del sistema se considera dividida en zonas del mismo tamaño que se denominan marco de pagina. Un marco
de pagina contendra en un determinado instante una pagina de memoria de proceso, la estructura de datos que
relaciona cada pagina con el marco donde esta almacenada tabla de paginas. El hardware de gestion de memoria
usa esta tabla para traducir las direcciones que genera un programa. esta traduccion consiste en detectar
a que pagina del mapara coreesponde una direccion logica y acceder a la tabla de paginas para obtener el numero
de marco donde esta almacenada dicha pagina, la direccion fisica tendra un desplazamiento con respecto al principio
del marco igual que el que tiene la direccion con respento al principio de la pagina.
Tipicamente, la MMU usa dos tablas de paginas, una tabla de paginas de usuario para traducir las direcciones
logicas del espacio de usuario(en algunos procesadores se corresponden con direcciones que empiezan por un 0) y
una tabla de paginas del sistema para las direcciones logicas del espacio del sistema(las direcciones logicas
que empiezan por un 1). estas ultimas solo pueden usarse cuando el procesador esta en modo privilegiado.
¿COMO SUCEDE UN FALLO DE PAGINACION Y COMO SE RESUELVE?Para construir un esquema de memoria virtual sobre un procesador que ofrezca paginacion, se utilixa el bit de la entrada
de la tabla de pagina que indica si la pagina es valida. Estaran marcadas como invalidas todas las entradas correspondientes
a las paginas que no estan residentes en la memoria principal en ese instante. Para estas paginas en vez de guardarse la
direccion del marco, se almacenar la direccion del bloque del dispositivo que contien la pagina. Cuando se produce un acceso
a una de estas paginas, se producira una excepcion(FALLO DE PAGINA) que activara al sistema operativo que sera el encargado de
traerla desde la memoria secundaria.
Observe que dado que se utiliza el bit de validez para marcar la ausencia de una pagina y este mismo bit tambien se usa para
indicar que una pagina es realmente invalida(una pagina que corresponde con un hueco en el mapa), es necesario que el sistema
operativo almacene informacion asociada a la pagina para distinguir entre esos dos casos.
Por ultimo hay que comentar que algunos sistemaS de memoria virtual usan la tecnica de la prepaginacion. en un fallo de pagina
no solo se traen la pagina en cuestion sino tambien las paginas adyacentes, ya que es posible que el proceso las necesite es un
corto plazo de tiempo. La efectividad de esta tecnica va a depender de si hay acierto en esta prediccion.
TRATAMIENTO DEL FALLO DE PAGINA La paginacion por demanda esta dirigida por la ocurrencia de excepciones de fallo de pagina que indican al sistema operativo que
debe traer una pagina de memoria secundaria a primaria puesto que un proceso la requiere. A continuacion se especifican los pasos
tipicos en el tratamiento de un fallo de pagina.
* La MMU produce una excepcion y tipicamente deja en un registro especial la direccion que causo el fallo.
* Se activa el sistema operativo que comprueba si se trata de una direccion correspondiente una pagina realmente invalida,
se aborta el proceso o se le manda una señal. en caso contrario se realizan los pasos que se describen a continuacion.
* Se consulta la tabla de marcos para buscar uno libre.
* Si no hay un marco libre, se aplica el algoritmo de reemplazo para seleccionar una pagina para expulsar el marco se
desconectara de la pagina a que este asociado poniendo como invalida la entrada correspondiente, si la pagina esta modifica
previamente hay que escribir su contenido a la memoria secundaria.
* Una vez que se obtiene el marco lobre, ya sea directamente o despues de una expulsion, se inicia la lectura de la nueva
pagina sobre el marxo y al terminar la operacion, se rellena la entrasa correspondiente a la pagina para que este marcada
como valida y apunte al marco utilizado.
observe que en el peor de los casos, un fallo de pagina puede causar dos operaciones de entrada/salida al disco.