Mostrando entradas con la etiqueta Asignación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Asignación. Mostrar todas las entradas
Es un sistema de paginación con el cual, además de las ventajas de la paginación convencional, se busca disminuir los tiempos de respuesta y aumentar la cantidad de programas en memoria. Para lograr estos objetivos se hace uso de un intercambiador perezoso (llamado paginador) el cual carga a memoria solo las páginas que serán utilizadas por el programa en ejecución, de esta manera se logra un menor tiempo de carga y un ahorro en cuanto a espacio utilizado por dicho programa, ya que, por un lado, no necesitamos que todo el programa este en memoria para comenzar su ejecución mientras que, por otra parte, al no estar el programa completo en memoria, disminuimos considerablemente el espacio que éste ocupa.
Ya que el paginador solo busca las páginas que se necesitan para ejecutar algún programa, debemos agregar un bit que nos diga si las referencias de memoria son válidas o no, de lo contrario, al no encontrar una página no podríamos diferenciar si el paginador aún no la carga o si esta es realmente una referencia inválida.

Paginación por demanda

El proceso que se sigue es el siguiente:

  • Se intenta leer la página requerida
  • Si la página requerida ya esta en memoria, simplemente se lee.
  • Si no está en memoria, revisa si la referencia es válida.
  • Si la referencia es inválida, se aborta.
  • Si la referencia es válida, se intenta cargar la página.
  • Cuando la página sea cargada, se reintenta la instrucción.
paginacion por demanda



Al buscar una página, si esta no está en memoria, necesitará ser cargada. A este proceso se le llama fallo de página.

Al iniciar la ejecución de un programa, la tabla de páginas cuenta con todas sus entradas inválidas por lo cual el paginador fallará hasta tener lo necesario para iniciar el programa. Luego de esta carga inicial se comprobará si la siguiente página a utilizar ya está en memoria, en caso de que la página se encuentre, ésta es leída, pero cuando la página no es encontrada (y es una referencia válida) tenemos dos posibilidades:
Si existe un frame libre, se carga y se lee.
Si no tenemos frames libres, se intercambia la página de algún frame por la información a utilizar.

El criterio utilizado para seleccionar qué página será intercambiada varía dependiendo de la implementación del sistema. Muchos de los problemas que presenta el sistema de paginación por demanda son debido a los fallos de página y principalmente a saber cuál es la página más conveniente para intercambiar. Esto se debe a que no podemos saber cuales páginas serán utilizadas prontamente y cuales no se volverán a utilizar

Fallos de páginas

Como hemos visto anteriormente, cuando un proceso requiere una página que no está en memoria se genera un fallo de página. La gran mayoría de las dificultades de la paginación por demanda se deben a cómo los fallos de página son tratados.

Gestión de un fallo de página
En primer lugar, para que los fallos de página puedan ser tratados correctamente necesitamos un sistema que sea capaz de reiniciar una instrucción, de esta manera pasará lo siguiente:

  • Una instrucción necesita una página que no está en memoria.
  • Se genera fallo de página (No se puede satisfacer la instrucción).
  • Se carga a memoria la página requerida.
  • Se reinicia la instrucción



Como vemos en este proceso existe una carga a memoria, éste es uno de los factores determinantes para saber si la paginación por demanda es conveniente o no, puesto que, en el peor de los casos, puede existir una carga en memoria por instrucción lo que nos daría tiempos de ejecución mucho peores que con una paginación regular.


Asignación de memoria


La asignación de memoria en un SO es la forma en la que se distribuye el espacio en RAM de cada uno de los proceso esto se puede realizar con una serie de técnicas o netos que se describirán a continuación.

Primer ajuste


Consiste en asignar el primer segmento disponible que tenga un espacio suficiente para almacenar el programa. Esto causa que se dé un alto índice de fragmentación dado que si la primer partición e la de mayor espacio en esta pueden corres pequeños procesos que no siempre o chupan toda la capacidad del segmento.


Mejor ajuste 


Consiste en recorrer todos los segmentos de memoria y verificar cual es el que menor fragmentación cause de acuerdo con el proceso a ejecutar si hay un segmento de memoria que tiene exactamente el mismos tamaño del proceso este se asignara en este espacio y no continuara buscando otro segmento.

Siguiente ajuste


Consiste en realizar la asignación de los proceso de la misma forma que se hace en el mejor ajuste a excepción de que en este caso el recorrido de los segmentos de memoria se inicia desde la última posición en la que se asignó un proceso