PAGINACION 2
Manejo de Page Fault
el hardaware hace trap y salva al PC.
El handler de trap(rutina de interrupcion) salva losregistros.
El SO detecta un page fault.
El SO busca un marco de pagina libre. Si no hay entonces busca una victima y lo explulsa.
Comienza a realizar I/O por la pagina k produjo el page fault.
Cuando el handler de interrupcion del disco notifica su llegada el proceso k provoco el fallo de pagina es planificado nuevamente para su ejecucion.
Tabla de paginas
Cada cambio de ocntexto es necesario guardar la tabla de pagina en el PCB y cargarla del nuevo proceso. La tabla se puede guardar en:
REGISTROS:
MEMORIA:
un registro apunta a la tabla de paginas.
acceso mas lento k registros: 2 accesos a memoria por cada acceso real.
no hay problemas de espacio.
para cada cambio de contexto solo es necesario cambiar un registro el que apunta a la tabla. Todas las tablas de todos los procesos se guardan al mismo tiempo en memoria y solo se cambia el registro puntero.
Otros datos en la tabla:
- Presente?: si esta en la RAM o en swap.
- User/kernel: si se puede acceder a modo usuario.
- Ejecutable/data: si es ejecutable o no la info k contiene.
- Espacio libre para el SO: contadores de referencia, acceso, etc.
Estos campos estan definidos por el hardware.
El cpu trabaja enconces con direccion logica no fisica.
El cache de memoria esta implementado a nivel logico con direccion logica.
La MMU posee un TLB para acelerar el proceso de traduccion de direcciones.
Translation Look Aside Buffer
Para disminuir el tiempo de acceso a memoria en sistemas k usan paginacion y guardan las tablas en memoria.
Memoria asociativa k guardan las N ultimas traducciones de direccion logica a fisica.
tipica% tiene de 2 a 2048 entradas.
Usar paginacion nos permite compartir memoria entre procesos.
Podemos apuntar al mismo marco fisico desde las tablas de paginacion de diferentes procesos.
Mejora la utilizacion de memoria y tb la velocidad con la k arrancan los progrmas.
PAGINACION V/S SEGMENTACION
En paginacion los compiladores no tienen k saber si el sistema esta usando paginacion o no, ya k siempre crean un continuo de direcciones logicas. En segmentacion, en cambio, los compiladores deben saber si tienen k generar direcciones utilizando segmentos diferentes.
Al igual k en la paginacion, en segmentacion tb se puede guardar la tabla de segmentos en registros o en memoria. Si es en memoria existe un registro especial k indica donde comienza la tabla de segmentos.
En segmentacion la division logica de la memoria permite definir segmentos de texto y compartirlos entre diferentes programas. En paginacion pura es mas complicado.
A diferencia de paginacion: en segmentacion cada segmento ocupa un espacio fisico contiguo en memoria, y los segmentos son de longitud variable.