En sistemas operativos de computadoras, los sistemas de
paginación de memoria dividen los programas en pequeñas
partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados
marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página,
lo que minimiza la fragmentación interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que
algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos,
y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma,
las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las
páginas de otros procesos.
Error.
El proceso trata de acceder a una página que no se trajo a memoria, ocurrirá una trampa de fallo de página. El
hardware de paginación, al traducir la dirección mediante la tabla de páginas, observará que el valor del bit es
inválido, generando una trampa para el sistema operativo (error de dirección no válido). Normalmente, un error
de dirección no válida es consecuencia de intentar utilizar una dirección de memoria ilegal; en este caso, el
proceso deberá terminar. Sin embargo, en esta situación la trampa es el resultado del fallo de página del sistema
operativo al no transferir a memoria una parte válida del proceso, tratando de minimizar el tiempo adicional de
transferencia de disco y los requisitos de memoria. Por tanto, debemos corregir esta omisión.
El procedimiento es sencillo
* Consultamos una tabla interna (que por lo general se conserva en el PCB del proceso) para determinar si la
referencia fue un acceso a memoria válido o inválido.Si fue inválido, abortamos el proceso. Si se trató de
una referencia válida, pero aún no hemos traído la página, la incorporamos.
* Encontramos un marco libre (por ejemplo, seleccionando uno de la tabla de marcos libres).
* Planificamos una operación para leer de disco la página deseada en el marco recién asignado.Cuando ha
concluido la lectura de disco, modificamos la tabla interna que se conserva junto con el proceso y la tabla
de páginas para indicar que ahora la página se encuentra en memoria.Reiniciamos la instrucción interrumpida
por la trampa de dirección ilegal. El proceso ahora puede acceder a la página como si siempre se hubiera
encontrado en memoria.