Gestión de memoria: Asignación contigua

Posted by Adrián Manso | Posted in | Posted on 14:12

0

• A continuación se describen modelos básicos que utiliza el S.O.
Para asignar memoria a los procesos en ejecución.

• Por asignación contigua se entiende que todo el proceso va a
utilizar una zona contigua de la memoria principal.

Particiones Fijas

  – Inicialmente las particiones eran de tamaño fijo (acordado durante la
compilación del S.O.)

  – Cada partición se asigna a un proceso

  – El modelo permite la multiprogramación

  – Permite cambiar procesos en ejecución entre la memoria y el disco

  – Dos variantes:

    • Todas las particiones del mismo tamaño

    • Creación de particiones de diferente tamaño

– Presenta el problema de la fragmentación interna


Gestión de memoria: Asignación contigua


Particiones dinámicas

  – El número y el tamaño de las particiones es variable, adecuándose a
las necesidades en tiempo de ejecución.

    • Inicialmente se tiene una partición para el S.O. y otra con la
memoria libre

    • Cuando llega un proceso se busca una partición libre lo
suficientemente grande y se divide en dos; una para el proceso y la
otra queda libre

    • Al finalizar el proceso, su partición se libera y se une a la lista de
particiones libres (llamadas huecos)

  – Liberación de particiones:

    • Cuando se libera una partición, se debe tener la precaución de unir
en un solo hueco aquellos que resulten adyacentes.

  – Algoritmos de selección de huecos:

    • El primer ajuste (First-Fit): Se selecciona el primer hueco de la lista
lo suficientemente grande como para alojar al programa.

      – Suele ser el que mejores resultados ofrece

    • El siguiente ajuste(Next-Fit): Como el anterior, pero se comienza la
búsqueda en el lugar de la lista donde se dejó la vez anterior

    • El mejor ajuste(Best-Fit): Se toma el espacio del hueco que tiene el
tamaño más próximo al del bloque solicitado.

      – Se necesita recorrer toda la lista o tenerla ordenada por tamaño.

      – Genera los huecos más pequeños

    • El peor ajuste(Worst-Fit): Se toma el hueco más grande
independientemente del tamaño del proceso.

      – Se necesita recorrer toda la lista o tenerla ordenada por tamaño.

      – Genera los huecos más grandes


Gestión de memoria: Asignación contigua


– Ejemplo: Liberación de un bloque en sistemas con particiones

variables

Gestión de memoria: Asignación contigua

– Ejemplo: Llegan las peticiones de 75K y 250K


Gestión de memoria: Asignación contigua


Fragmentación y Compactación


– Problema de la fragmentación externa: La memoria libre se divide en
huecos pequeños incapaces de albergar a un nuevo proceso, aun
cuando existe suficiente memoria libre como para satisfacer la petición.

• Si los hueco que genera una asignación tiene un tamaño reducido,
es aconsejable incluirlo en esta nueva asignación para evitar que se
forme. El coste de mantenerlo en la lista es mayor que los
beneficios que reporta.

– Solución a la fragmentación externa: Compactación: Esta estrategia
consiste en reunir los huecos dispersos en uno mayor. Para ello es
necesario desplazar los programas en memoria, con lo que se pierde
mucho tiempo copiando las direcciones de memoria.

• El S.O. debe proveer mecanismos de relocalización en tiempo de
ejecución.

• Debe existir apoyo del hardware para realizar la compactación de
forma eficiente.


Protección y Reubicación


– Al existir varios procesos en ejecución, es necesario evitar que entre
ellos puedan modificar los espacios de memoria que tienen reservados
(incluyendo el S.O.).

– El procesador tiene varios registros que ayudan a resolver el problema:

  • Registro base: Guarda la dirección física más pequeña que puede
generar un programa

  • Registro límite: Guarda la dirección lógica más grande permitida al
programa más uno. (La dirección lógica más pequeña es siempre 0).

– El S.O. se encarga de escribir en estos registros los valores adecuados
antes de transferir el control al proceso para mantener la integridad del
propio S.O. y la independencia en la ejecución de los procesos.

– Cuando el programa emplea una dirección lógica, el hardware
comprueba que sea inferior al límite y si es así, le añade el valor del
registro base para obtener la dirección física que se emplea para acceder
a memoria. En caso contrario se genera una excepción.

El espacio lógico de direcciones de un proceso es el
conjunto de direcciones (lógicas) a las que puede acceder


– Esquema hardware de funcionamiento


Gestión de memoria: Asignación contigua


– Ejemplo de funcionamiento



– Este modelo tiene las siguientes características:

  • Permite relocalización dinámica en tiempo de ejecución

  • Permite proteger a unos procesos de otros y al S.O. de todos ellos.


Planificación


– Planificación a largo plazo

  • El planificador a largo plazo:

    – Mantiene una cola de programas nuevos

    – Carga los programas a medida que va quedando libre suficiente memoria

  • Algoritmos para gestionar la cola de programas nuevos:

    – Si usa una cola FIFO es posible que un proceso muy grande mantenga
esperando a procesos para los que existe suficiente memoria.

    – Si usa la mejor asignación se favorece la ejecución de procesos
pequeños que pueden retrasar indefinidamente la ejecución de un
proceso que necesite mucha memoria.

– Planificación a medio plazo

    • Intercambio con el disco de procesos completos.

    • El registro base permite la reubicación → los procesos pueden ser
cargados en una partición diferente cada vez