Preguntas y respuestas sobre asignación de memoria del sistema operativo # 2

Question: Explique los siguientes algoritmos de asignación.

  1. Primer ajuste

  2. Mejor ajuste

  3. Peor ajuste

  4. El sistema de Buddy

  5. Siguiente ajuste

Answer:

Primer ajuste

En el primer enfoque de ajuste consiste en asignar la primera partición o agujero libre lo suficientemente grande como para acomodar el proceso. Termina después de encontrar la primera partición libre adecuada.

Ventaja

El algoritmo más rápido porque busca lo menos posible.

Desventaja

Las áreas de memoria restantes no utilizadas que quedan después de la asignación se desperdician si son demasiado pequeñas. Por lo tanto, no se puede realizar la solicitud de mayor requisito de memoria.

Mejor ajuste

El mejor ajuste se ocupa de asignar la partición libre más pequeña que cumpla con los requisitos del proceso de solicitud. Este algoritmo busca primero en la lista completa de particiones libres y considera el agujero más pequeño que sea adecuado. Luego trata de encontrar un agujero que se acerque al tamaño real del proceso necesario.

Ventaja

La utilización de la memoria es mucho mejor que el primer ajuste, ya que busca la partición libre más pequeña disponible primero.

Desventaja

Es más lento e incluso puede tender a llenar la memoria con pequeños agujeros inútiles.

Peor ajuste

El enfoque de peor ajuste es ubicar la porción libre más grande disponible para que la porción que queda sea lo suficientemente grande como para ser útil. Es el reverso del mejor ajuste.

Ventaja

Reduce la tasa de producción de pequeños huecos.

Desventaja

Si un proceso que requiere mayor memoria llega en una etapa posterior, no se puede acomodar porque el agujero más grande ya está dividido y ocupado.

Sistema de Buddy

En el sistema de amigos, los tamaños de los bloques libres están en forma de potencia integral de 2. Por ejemplo, 2, 4, 8, 16, etc. Hasta el tamaño de la memoria. Cuando se solicita un bloque libre de tamaño 2k, se asigna un bloque libre de la lista de bloques libres de tamaño 2k. Si no hay disponible un bloque libre de tamaño 2k, el bloque del siguiente tamaño más grande, 2k + 1 se divide en dos mitades llamadas amigos para satisfacer la solicitud.

Ejemplo

Deje que el tamaño total de la memoria sea de 512 KB y permita que un proceso P1 requiera el intercambio de 70 KB. Como las listas de agujeros son solo para potencias de 2, 128 KB serán lo suficientemente grandes. Inicialmente no hay 128 KB, ni bloques de 256 KB. Por lo tanto, el bloque de 512 KB se divide en dos amigos de 256 KB cada uno, uno se divide en dos bloques de 128 KB y uno de ellos se asigna al proceso. El siguiente P2 requiere 35 KB. Redondeando 35 KB hasta una potencia de 2, se requiere un bloque de 64 KB.

Entonces, cuando el bloque de 128 KB se divide en dos amigos de 64 KB. De nuevo, un proceso P3 (130 KB) se ajustará en el total de 256 KB. Después de satisfacer la solicitud de esta manera cuando dicho bloque está libre, los dos bloques / amigos se pueden recombinar para formar el bloque original dos veces más grande cuando la segunda mitad del compañero también está libre.

Ventaja

El sistema de amigos es más rápido. Cuando se libera un bloque de tamaño 2k, se busca un hueco con un tamaño de memoria de 2k para comprobar si es posible una fusión, mientras que en otros algoritmos se debe buscar toda la lista de huecos.

Desventaja

A menudo se vuelve ineficaz en términos de utilización de la memoria. Como todas las solicitudes deben redondearse a una potencia de 2, un proceso de 35 KB se asigna a 64 KB, por lo que se pierden 29 KB adicionales y se produce una fragmentación interna. Puede haber agujeros entre los amigos que provocan una fragmentación externa.

Siguiente ajuste

El siguiente ajuste es una versión modificada del primer ajuste. Comienza como primer ajuste para encontrar una partición libre. Cuando se llama la próxima vez, comienza a buscar desde donde lo dejó, no desde el principio.