Transformación de Direcciones de Memoria en un Sistema con Segmentación Paginada.

 

  ¿Para qué sirve esta Simulación?

¿Hasta donde puedo llegar?

¿Qué nos muestra la Simulación?

¿Cómo la hago funcionar?

 

El Banco de Pruebas.

¿Comenzar a trabajar?

 

 

 


¿Para qué sirve esta Simulación? 

La herramienta simula como se transforman direcciones de memoria en un sistema operativo que administra la memoria mediante un sistema de segmentación paginada.

Pretendemos que el usuario de esta herramienta, comprenda base de funcionamiento del algoritmo de transformación de direcciones utilizado en el sistema anterior. Aconsejamos el uso de esta, herramienta junto con la explicación teórica de los sistemas de administración de memoria por segmentación paginada.

 


¿Hasta donde puedo llegar?

 

La herramienta es capaz de simular un sistema que trabaje con programas que son capaces de direccionar un máximo de 16 páginas (páginas de 1024 bytes).

El sistema dispone de una tabla de 4 segmentos, y desde cada uno de ellos, se pueden direccionar hasta cuatro páginas de memoria. Por lo tanto, el sistema será capaz de trabajar con procesos que direccionen hasta 16 páginas. Cada uno de los segmentos, para conseguir direccionar sus páginas, dispone de una tabla de páginas, desde la que podremos conocer la dirección de comienzo de cada una de las páginas que están en ese segmento.

Para acelerar el proceso de transformación, la herramienta dispone de una memoria asociativa. Esta memoria asociativa, será capaz de almacenar las direcciones físicas de todas las páginas que se encuentren en un segmento (hasta cuatro direcciones).

Cada una de las tablas de páginas de los segmentos, se encuentran situadas a su vez en una página. La tabla de páginas del segmento 0 se encuentra en la dirección real fija 0000, la tabla de páginas del segmento 1 se encuentra situada en la dirección física 1024, la del segmento 2 en la 2048 y la del segmento 3 se encuentra en la 3072. Estas direcciones serán fijas, las tablas de páginas de los distintos segmentos que utilice el programa siempre están en esas direcciones.

Las páginas que utilice el programa, estarán ya repartidas por el resto de la memoria. Visto esto, está claro que en el sistema puede haber hasta 20 páginas (4 de las tablas de páginas y 16 como máximo de un proceso).

Teniendo en cuenta lo anteriormente aclarado, el proceso de transformación de una dirección solicitada por un proceso, hasta conseguir la dirección real sobre la memoria física va a ser el siguiente: La dirección que solicita el proceso está compuesta por tres partes: un número de segmento (que como hemos dicho estará entre 0 y 3) , una número de página dentro de este segmento (también de 0 a 3) y luego un desplazamiento dentro de la página solicitada (que puesto que el tamaño de una página es de 1024 bytes, estará entre 0 y 1023).
Esta dirección ha de transformarse en una dirección de memoria física y el desplazamiento a partir de esta. Entonces el procedimiento de calculo de la dirección real será el siguiente:

  1. Un proceso solicita el contenido de una celda de memoria al sistema operativo. Para ello, aporta el número de segmento, el de página dentro del segmento y un desplazamiento a partir de la dirección de comienzo de la página.
  2. El sistema operativo intentará satisfacer la petición desde la memoria asociativa. Buscará una entrada con el segmento y la página solicitados en esta memoria. Si la encuentra, formará la dirección real (dirección base o de comienzo de la página física) con la entrada de dirección base y el desplazamiento solicitado y concluirá el proceso.
  3. Si la petición no puede ser satisfecha desde la memoria asociativa, el sistema operativo procederá a buscarla en la tabla de segmentos. Determinará de la petición el segmento en el que se encuentra. Una vez que tenga el segmento, obtendrá, de su tabla de páginas, la dirección base de la página solicitada, Cuando la encuentre, compondrá la dirección real a partir de la dirección base obtenida en la tabla y el desplazamiento solicitado. El proceso transformación concluirá, y podremos seguir creando solicitudes.

La herramienta va a mostrar una serie de estadísticas en cuanto al acierto de las peticiones que podemos resolver desde la memoria asociativa. Nos mostrará datos sobre el número total de peticiones, el número de aciertos y el porcentaje en tantos por cien que representan estos aciertos.

El usuario tiene la posibilidad de decir el número de páginas que va a necesitar el proceso, de tal manera que si se eligen 6 páginas, estas se repartirán por las distintas tablas de páginas. Este reparto se hace teniendo en cuenta que entre el segmento 0 y el último que coja páginas no puede haber otros que estén vacíos.

El usuario podrá determinar la tabla de páginas de que segmento se encontrará en la memoria asociativa.
Las celdas de la tabla de segmentos están hechas cuatro grupos (el 0, el 1, el 2, el 3 y el 4) cada grupo se corresponde con un segmento. Cualquier tabla de páginas de estos grupos puede entrar en la memoria asociativa (si la tabla de páginas solo tiene 2 páginas, en la asociativa solo habrá dos casillas ocupadas).

Por hacer más parecido el funcionamiento a la realidad, los cuatro grupos de segmentos tienen una probabilidad de petición asignada, así las páginas el grupo del segmento 3 tienen un 7% de probabilidad de ser solicitadas, las del segmento 2 un 14%, las del segmento 1 un 28% y las del segmento 0 tienen un 52%. Esto siempre que todos los segmentos tengan páginas.

Si no todos los segmentos tienen páginas, estas probabilidades se recalcularán de manera que el primer segmento tiene el doble que el segundo, este que el tercero, ... y que la suma de las de todos sea 100%.
Con todo esto, el usuario puede comprobar como si las celdas de la memoria asociativa no son muy solicitadas, el porcentaje de uso de esta disminuye y su uso deja de tener sentido.

Otro dato que el usuario puede controlar, es el número de celdas de la memoria asociativa que están funcionando. El usuario puede hacer que de las celdas que tiene la memoria asociativa estén funcionando cuatro, tres (las tres primeras), dos (las dos primeras), una (la primera) o ninguna. Con ello, la búsqueda, solo se realizará en las celdas activas. Si el dato buscado está en las que no están activas, este no podrá ser servido desde esta memoria.

La herramienta estará funcionando hasta que la detengamos pulsando un botón para esto o la reiniciemos con otro encargado de esta otra tarea.

 


¿Que nos muestra la Simulación? 

En la ilustración 1, podemos observar una instantánea del aspecto de la herramienta en pleno funcionamiento, en ella, se distinguen varios tipos de figuras, que serán las representantes de los diferentes elementos participantes en la simulación:

Ilustración 1 Instantánea de la Herramienta

 

 

 


¿Cómo la hago funcionar? 

La segunda parte de la interfaz gráfica, es la destinada a la interacción con el usuario, la que se encargara de obtener los parámetros según los cuales se ejecutara la simulación.

Esta zona se sitúa en la parte inferior de la pantalla mostrada de forma global en la Ilustración 1. Mas claramente la podemos ver en la Ilustración 2.

Ilustración 2 Parámetros de la Herramienta

El botón Empezar, sirve para iniciar la herramienta con los datos que tengan los demás paramentos. Cuando se pulse el botón Parar, su leyenda variará y pasará a llamarse Continuar. Esto permitirá que cuando la simulación esté detenida podemos continuar su ejecución..

El botón Parar, sirve para detener en un momento dado la herramienta.
La leyenda del botón Empezar después de esto pasará a decir: "Continuar". Y pulsar este último va ha hacer que la herramienta continúe por donde se quedó.

El botón Reiniciar, sirve para hacer que la herramienta abandone el estado actual y vuelva al estado inicial.

El siguiente parámetro que podemos pasar a la herramienta, es el de "Celdas activas en Asoc:". Este parámetro es una lista de la que el usuario podrá seleccionar un número entre 0 y 4.
El número seleccionado indicará las celdas de la memoria asociativa que van a estar activas. Si seleccionásemos el valor 1, solo estaría activa la primera celda de la tabla de segmentos, de tal manera que las solicitudes que se encuentren en las otras tres celdas no podrán ser servidas desde esta tabla.

Después viene un parámetro que se denomina "Pag de Asoc.:". Este parámetro es también una lista, en ella podremos seleccionar la tabla de páginas de que segmento se va a encontrar en la memoria asociativa.
Los valores posibles vienen determinados por los distintos grupos de probabilidades posibles, es decir es segmento 0, el 1, el 2 o el 3.

El último parámetro que se puede dar a la simulación, es el número de páginas que necesita el proceso para su funcionamiento. La simulación creará un número de páginas igual a este que distribuirá entre los distintos segmentos. Las páginas se repartirán de manera que, entre las del segmento 0 y las del último que contenga páginas, no haya segmentos vacíos.

 


El Banco de Pruebas

Variando el parámetro Nº Páginas, podremos ver en la simulación procesos que necesiten más espacio de almacenamiento o menos. Si por ejemplo, damos a este parámetro el valor 1, el proceso solo tendrá una página con lo que todas las peticiones recaerán sobre esta. Si hacemos que la memoria asociativa no contenga elementos, la tasa de aciertos bajará hasta llegar a un nivel próximo al 0 %.

Con los distintos valores que puede tomar el parámetro Grupo TP, podemos controlar el uso que se hace de la memoria asociativa. Podemos ver que si en la memoria asociativa hay segmentos que no son muy solicitados (los dos últimos segmentos), el porcentaje de aciertos disminuye rápidamente (la memoria asociativa no estaría aportando casi nada al sistema).

También podemos mantener en la memoria asociativa el primer segmento y variar el tamaño de la memoria asociativa, por ejemplo a la mitad del contenido. Con esto, podremos observar como el porcentaje de aciertos, se va ajustando (con el paso del tiempo), justo a la mitad del establecido para el segmento que tengamos en la asociativa.

 


¿Comenzar a trabajar?

Desde aquí ya sí puedes empezar a trabajar con la herramienta.